flv.js 中文API文档

flv.js API

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

接口

flv.js将所有接口都以flvjs对象暴露在全局上下文window中.

flvjs 还可以通过require或ES6导入来访问对象。

方法:

类:

枚举:

flvjs.createPlayer()

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

根据中指定的type字段创建一个播放器实例mediaDataSource(可选)config。

MediaDataSource

Field Type Description
type string 媒体类型,'flv'或'mp4'
isLive? boolean 数据源是否为实时流
cors? boolean 是否启用CORS进行http提取
withCredentials? boolean 是否对Cookie进行http提取
hasAudio? boolean 流是否有音频轨道
hasVideo? boolean 流中是否有视频轨道
duration? number 总媒体持续时间(以毫秒为单位)
filesize? number 媒体文件的总文件大小,以字节为单位
url? string 表示媒体URL,可以以'https(s)'或'ws(s)'(WebSocket)开头
segments? Array<MediaSegment> 多段播放的可选字段,请参见MediaSegment

如果segments存在字段,则transmuxer会将其MediaDataSource视为多部分源。

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

MediaSegment

Field Type Description
duration number 必填字段,指示段持续时间(以毫秒为单位)
filesize? number 可选字段,指示段文件大小(以字节为单位)
url string 必填字段,指示段文件URL

Config

Field Type Default Description
enableWorker? boolean false 启用分离的线程进行转换(暂时不稳定)
enableStashBuffer? boolean true 启用IO隐藏缓冲区。如果您需要实时(最小延迟)来进行实时流播放,则设置为false,但是如果网络抖动,则可能会停顿。
stashInitialSize? number 384KB 指示IO暂存缓冲区的初始大小。默认值为384KB。指出合适的尺寸可以改善视频负载/搜索时间。
isLive? boolean false 同样要isLive在MediaDataSource,如果忽略已经在MediaDataSource结构集合。
lazyLoad? boolean true 如果有足够的数据可播放,则中止http连接。
lazyLoadMaxDuration? number 3 * 60 指示要保留多少秒的数据lazyLoad
lazyLoadRecoverDuration? number 30 指示lazyLoad恢复时间边界,以秒为单位。
deferLoadAfterSourceOpen? boolean true 在MediaSource sourceopen事件触发后加载。在Chrome上,在后台打开的标签页可能不会触发sourceopen事件,除非切换到该标签页。
autoCleanupSourceBuffer boolean false 对SourceBuffer进行自动清理
autoCleanupMaxBackwardDuration number 3 * 60 当向后缓冲区持续时间超过此值(以秒为单位)时,请对SourceBuffer进行自动清理
autoCleanupMinBackwardDuration number 2 * 60 指示进行自动清除时为反向缓冲区保留的持续时间(以秒为单位)。
fixAudioTimestampGap boolean true 当检测到较大的音频时间戳间隙时,请填充无声音频帧,以避免A / V不同步。
accurateSeek? boolean false 精确查找任何帧,不限于视频IDR帧,但可能会慢一些。可用的Chrome > 50,FireFox和Safari。
seekType? string 'range' 'range'使用范围请求进行搜索,或'param'在url中添加参数以指示请求范围。
seekParamStart? string 'bstart' 指示的搜索起始参数名称 seekType = 'param'
seekParamEnd? string 'bend' 指示的搜索结束参数名称 seekType = 'param'
rangeLoadZeroStart? boolean false Range: bytes=0-如果使用范围查找,则发送首次负载
customSeekHandler? object undefined 指示自定义搜索处理程序
reuseRedirectedURL? boolean false 重复使用301/302重定向的url进行子序列请求,例如搜索,重新连接等。
referrerPolicy? string no-referrer-when-downgrade 指示使用FetchStreamLoader时的推荐人策略
headers? object undefined 指示将添加到请求的其他标头

flvjs.isSupported()

function isSupported(): boolean;

如果基本上可以再您的浏览器上播放则返回true

flvjs.getFeatureList()

function getFeatureList(): FeatureList;

返回FeatureList具有以下详细信息的对象:

FeatureList

Field Type Description
mseFlvPlayback boolean 与flvjs.isSupported()相同,表示您的浏览器是否可以进行基本播放。
mseLiveFlvPlayback boolean HTTP FLV实时流是否可以在您的浏览器上工作。
networkStreamIO boolean 指示网络加载程序是否正在流式传输。
networkLoaderName string 指示网络加载程序类型名称。
nativeMP4H264Playback boolean 指示您的浏览器是否本身支持H.264 MP4视频文件。
nativeWebmVP8Playback boolean 指示您的浏览器是否本机支持WebM VP8视频文件。
nativeWebmVP9Playback boolean 指示您的浏览器是否本机支持WebM VP9视频文件。

flvjs.FlvPlayer

interface FlvPlayer extends Player {}

实现Player接口的FLV播放器。可以通过new操作进行创建

flvjs.NativePlayer

interface NativePlayer extends Player {}

Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src, which implements the Player interface. Useful for singlepart MP4 file playback.

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;
}

flvjs.LoggingControl

A global interface which include several static getter/setter to set flv.js logcat verbose level.
一个全局接口,其中包括几个用于设置flv.js logcat详细级别的静态getter / setter。

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;
}

flvjs.Events

一系列可以和 Player.on() / Player.off()一起使用的常数. 它们需要前缀flvjs.Events.

事件 描述
ERROR 播放期间由于任何原因发生错误
LOADING_COMPLETE 输入MediaDataSource已完全缓冲到结束
RECOVERED_EARLY_EOF 缓冲期间发生意外的网络EOF,但已自动恢复
MEDIA_INFO 提供媒体的技术信息,例如视频/音频编解码器,比特率等。
METADATA_ARRIVED 用“ onMetaData”标记提供FLV文件(流)可以包含的元数据。
SCRIPTDATA_ARRIVED 提供FLV文件(流)可以包含的脚本数据(OnCuePoint / OnTextData)。
STATISTICS_INFO 提供播放统计信息,例如丢帧,当前速度等。

flvjs.ErrorTypes

播放期间可能出现的错误。它们需要前缀flvjs.ErrorTypes。

错误 描述
NETWORK_ERROR 与网络有关的错误
MEDIA_ERROR 与媒体有关的错误(格式错误,解码问题等)
OTHER_ERROR 任何其他未指定的错误

flvjs.ErrorDetails

针对网络和媒体错误提供更详细的说明。它们需要前缀flvjs.ErrorDetails。

错误 描述
NETWORK_EXCEPTION 与网络其他任何问题有关;包含一个message
NETWORK_STATUS_CODE_INVALID 与无效的HTTP状态代码(例如403、404等)相关。
NETWORK_TIMEOUT 相关超时请求问题
NETWORK_UNRECOVERABLE_EARLY_EOF 与无法恢复的意外网络EOF相关
MEDIA_MSE_ERROR 与MediaSource的错误有关,例如解码问题
MEDIA_FORMAT_ERROR 与媒体流中的任何无效参数有关
MEDIA_FORMAT_UNSUPPORTED flv.js不支持输入的MediaDataSource格式
MEDIA_CODEC_UNSUPPORTED 媒体流包含不支持的视频/音频编解码器
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容