目 录CONTENT

文章目录

mpegts.js 官方 API 中文文档

邱少羽梦
2025-03-12 / 0 评论 / 0 点赞 / 13 阅读 / 13532 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-03-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

mpegts.js API

本文使用类似TypeScript的定义来描述接口。

接口

mpegts.js通过全局上下文中的 window对象暴露的 mpegts对象导出所有接口。

mpegts对象也可以通过require或ES6的import方式访问。

函数:

类:

枚举:

mpegts.createPlayer()

function createPlayer(mediaDataSource: MediaDataSource, config?: Config): Player;

根据 mediaDataSource中指定的 type字段创建播放器实例,可选的 config参数用于配置。

MediaDataSource

字段类型描述
typestring媒体类型,可选值:'mse''mpegts''m2ts''flv''mp4'
isLive?boolean指示数据源是否为直播流
cors?boolean是否启用跨域请求(CORS)
withCredentials?boolean是否携带cookie进行HTTP请求
hasAudio?boolean指示流是否包含音频轨道
hasVideo?boolean指示流是否包含视频轨道
duration?number媒体总时长(毫秒
filesize?number媒体文件总大小(字节)
url?string媒体URL,支持 'https(s)''ws(s)'(WebSocket)协议
segments?Array用于分段播放的可选字段,参见MediaSegment

如果存在 segments字段,转封装器将视此 MediaDataSource多部分源。

在多部分模式下,MediaDataSource结构中的 durationfilesizeurl字段将被忽略。

MediaSegment

字段类型描述
durationnumber必填字段,分段时长(毫秒
filesize?number可选字段,分段文件大小(字节)
urlstring必填字段,分段文件URL

Config

字段类型默认值描述
enableWorker?booleanfalse启用独立线程(DedicatedWorker)进行转封装
enableWorkerForMSE?booleanfalse为MediaSource启用独立线程
enableStashBuffer?booleantrue启用IO暂存缓冲区。设为false可实现直播流最低延迟,但网络抖动可能导致卡顿
stashInitialSize?number384KBIO暂存缓冲区初始大小。合理设置可提升视频加载/seek速度
isLive?booleanfalseMediaDataSource中的 isLive,若已设置则忽略
liveBufferLatencyChasing?booleanfalse追平HTMLMediaElement内部缓冲导致的直播延迟(需同时设置 isLive: true
liveBufferLatencyChasingOnPaused?booleanfalse即使HTMLMediaElement暂停也追平延迟(仅在 isLive: trueliveBufferLatencyChasing: true时生效)
liveBufferLatencyMaxLatency?number1.5HTMLMediaElement最大可接受缓冲延迟(秒,仅在 isLive: trueliveBufferLatencyChasing: true时生效)
liveBufferLatencyMinRemain?number0.5HTMLMediaElement最小保留缓冲延迟(秒,同上)
liveSync?booleanfalse通过调整播放速率追平直播延迟(需同时设置 isLive: true
liveSyncMaxLatency?number1.2最大可接受缓冲延迟(秒,仅在 isLive: trueliveSync: true时生效)
liveSyncTargetLatency?number0.8目标追平延迟(秒,同上)
liveSyncPlaybackRate?number1.2追延迟时的播放速率(范围[1, 2],同上)
lazyLoad?booleantrue当有足够数据时中止HTTP连接
lazyLoadMaxDuration?number3 * 60lazyLoad保留的数据时长(秒)
lazyLoadRecoverDuration?number30lazyLoad恢复时间边界(秒)
deferLoadAfterSourceOpen?booleantrue在MediaSource触发 sourceopen事件后加载(Chrome后台标签可能不触发该事件)
autoCleanupSourceBufferbooleanfalse自动清理SourceBuffer
autoCleanupMaxBackwardDurationnumber3 * 60当后向缓冲超过该值(秒)时自动清理
autoCleanupMinBackwardDurationnumber2 * 60自动清理时保留的最小后向缓冲时长(秒)
fixAudioTimestampGapbooleantrue检测到大音频时间戳间隙时填充静音帧避免音视频不同步
accurateSeek?booleanfalse精确seek到任意帧(不限视频IDR帧,可能稍慢),支持Chrome>50、FireFox和Safari
seekType?string'range'seek方式:'range'使用范围请求,'param'在URL中添加参数
seekParamStart?string'bstart'seekType='param'时的起始参数名
seekParamEnd?string'bend'seekType='param'时的结束参数名
rangeLoadZeroStart?booleanfalse首次加载时发送 Range: bytes=0-
customSeekHandler?objectundefined自定义seek处理器
reuseRedirectedURL?booleanfalse重用301/302重定向URL进行后续请求
referrerPolicy?stringno-referrer-when-downgrade使用FetchStreamLoader时的[引用策略][引用策略]
headers?objectundefined请求附加头信息

mpegts.isSupported()

function isSupported(): boolean;

返回 true表示当前浏览器支持基本播放功能。

mpegts.getFeatureList()

function getFeatureList(): FeatureList;

返回 FeatureList对象,包含以下详细信息:

FeatureList

字段类型描述
msePlaybackbooleanmpegts.isSupported(),表示基本播放是否可用
mseLivePlaybackboolean是否支持HTTP MPEG2-TS/FLV直播流
mseH265Playbackboolean是否支持H265 over MPEG2-TS/FLV流
networkStreamIOboolean网络加载器是否支持流式传输
networkLoaderNamestring网络加载器类型名称
nativeMP4H264Playbackboolean浏览器是否原生支持H.264 MP4视频文件
nativeMP4H265Playbackboolean浏览器是否原生支持H.265 MP4视频文件
nativeWebmVP8Playbackboolean浏览器是否原生支持WebM VP8视频文件
nativeWebmVP9Playbackboolean浏览器是否原生支持WebM VP9视频文件

mpegts.MSEPlayer

interface MSEPlayer extends Player {}

实现 Player接口的MSE播放器,可直接通过 new操作符创建。

mpegts.NativePlayer

interface NativePlayer extends Player {}

浏览器原生播放器(HTMLVideoElement)的封装,实现 Player接口,适用于单部分MP4文件播放。

interface Player (抽象接口)

interface Player {
    constructor(mediaDataSource: MediaDataSource, config?: Config): Player;
    destroy(): void;
    on(event: string, listener: Function): void;
    off(event: string, listener: Function): void;
    attachMediaElement(mediaElement: HTMLMediaElement): void;
    detachMediaElement(): void;
    load(): void;
    unload(): void;
    play(): Promise<void>;
    pause(): void;
    type: string;
    buffered: TimeRanges;
    duration: number;
    volume: number;
    muted: boolean;
    currentTime: number;
    mediaInfo: Object;
    statisticsInfo: Object;
}

mpegts.LoggingControl

全局接口,包含多个静态getter/setter用于设置mpegts.js日志级别。

interface LoggingControl {
    forceGlobalTag: boolean;
    globalTag: string;
    enableAll: boolean;
    enableDebug: boolean;
    enableVerbose: boolean;
    enableInfo: boolean;
    enableWarn: boolean;
    enableError: boolean;
    getConfig(): Object;
    applyConfig(config: Object): void;
    addLogListener(listener: Function): void;
    removeLogListener(listener: Function): void;
}

mpegts.Events

可通过 Player.on()/Player.off()使用的常量事件,需前缀 mpegts.Events

事件描述
ERROR播放过程中发生错误
LOADING_COMPLETE输入媒体数据源已完全缓冲至结束
RECOVERED_EARLY_EOF缓冲时遇到意外网络EOF但已自动恢复
MEDIA_INFO提供媒体技术信息(编解码器、码率等)
METADATA_ARRIVED提供FLV文件(流)中的"onMetaData"元数据
SCRIPTDATA_ARRIVED提供FLV文件(流)中的脚本数据(OnCuePoint/OnTextData)
TIMED_ID3_METADATA_ARRIVED提供带时间戳的ID3元数据(stream_type=0x15)回调
PGS_SUBTITLE_ARRIVED提供PGS字幕数据(stream_type=0x90)回调
SYNCHRONOUS_KLV_METADATA_ARRIVED提供同步KLV元数据(stream_type=0x15)回调
ASYNCHRONOUS_KLV_METADATA_ARRIVED提供异步KLV元数据(stream_type=0x06)回调
SMPTE2038_METADATA_ARRIVED提供SMPTE2038元数据回调
SCTE35_METADATA_ARRIVED提供SCTE35元数据(stream_type=0x86)回调
PES_PRIVATE_DATA_ARRIVED提供ISO/IEC 13818-1 PES私有数据(stream_type=0x06)回调
STATISTICS_INFO提供播放统计信息(丢帧、当前速度等)
DESTROYING播放器开始销毁时触发

mpegts.ErrorTypes

播放过程中可能出现的错误类型,需前缀 mpegts.ErrorTypes

错误类型描述
NETWORK_ERROR网络相关错误
MEDIA_ERROR媒体相关错误(格式错误、解码问题等)
OTHER_ERROR其他未指定错误

mpegts.ErrorDetails

提供网络和媒体错误的详细解释,需前缀 mpegts.ErrorDetails

错误详情描述
NETWORK_EXCEPTION网络相关问题(包含错误消息)
NETWORK_STATUS_CODE_INVALID无效HTTP状态码(如403、404等)
NETWORK_TIMEOUT请求超时问题
NETWORK_UNRECOVERABLE_EARLY_EOF不可恢复的意外网络EOF
MEDIA_MSE_ERRORMediaSource相关错误(如解码问题)
MEDIA_FORMAT_ERROR媒体流参数无效
MEDIA_FORMAT_UNSUPPORTEDmpegts.js不支持的输入媒体格式
MEDIA_CODEC_UNSUPPORTED媒体流包含不支持的音视频编解码器

参考链接

0

评论区