Please enable Javascript to view the contents

flv.js 中文文档

 ·  ☕ 5 分钟  ·  ✍️ YSL

flv.js API

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

接口

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

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

方法:

类:

枚举:

flvjs.createPlayer()

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

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

MediaDataSource

FieldTypeDescription
typestring媒体类型,‘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

FieldTypeDescription
durationnumber必填字段,指示段持续时间(以毫秒为单位)
filesize?number可选字段,指示段文件大小(以字节为单位)
urlstring必填字段,指示段文件URL

Config

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

flvjs.isSupported()

1
function isSupported(): boolean;

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

flvjs.getFeatureList()

1
function getFeatureList(): FeatureList;

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

FeatureList

FieldTypeDescription
mseFlvPlaybackboolean与flvjs.isSupported()相同,表示您的浏览器是否可以进行基本播放。
mseLiveFlvPlaybackbooleanHTTP FLV实时流是否可以在您的浏览器上工作。
networkStreamIOboolean指示网络加载程序是否正在流式传输。
networkLoaderNamestring指示网络加载程序类型名称。
nativeMP4H264Playbackboolean指示您的浏览器是否本身支持H.264 MP4视频文件。
nativeWebmVP8Playbackboolean指示您的浏览器是否本机支持WebM VP8视频文件。
nativeWebmVP9Playbackboolean指示您的浏览器是否本机支持WebM VP9视频文件。

flvjs.FlvPlayer

1
interface FlvPlayer extends Player {}

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

flvjs.NativePlayer

1
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 接口 (抽象)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
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。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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_UNSUPPORTEDflv.js不支持输入的MediaDataSource格式
MEDIA_CODEC_UNSUPPORTED媒体流包含不支持的视频/音频编解码器