目 录CONTENT

文章目录

flv.js 官方 API 中文文档

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

flv.js API

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

接口

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

flvjs 对象也可以通过 require 或 ES6 import 访问。

函数:

类:

枚举:

flvjs.createPlayer()

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

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

MediaDataSource

字段类型描述
typestring表示媒体类型,'flv''mp4'
isLive?boolean表示数据源是否为直播流
cors?boolean表示是否启用 CORS 进行 HTTP 请求
withCredentials?boolean表示是否在 HTTP 请求中使用 cookies
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启用分离线程进行转码(目前不稳定)
enableStashBuffer?booleantrue启用 IO 缓存。如果需要实时(最小延迟)播放直播流,可以设置为 false,但在网络抖动时可能会卡顿。
stashInitialSize?number384KB表示 IO 缓存的初始大小。默认值为 384KB。指定合适的大小可以改善视频加载/搜索时间。
isLive?booleanfalseMediaDataSource 中的 isLive 相同,如果在 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在检测到较大的音频时间戳间隙时填充静音音频帧,以避免音视频不同步。
accurateSeek?booleanfalse精确搜索到任何帧,不限于视频 IDR 帧,但可能稍慢。适用于 Chrome > 50FireFoxSafari
seekType?string'range''range' 使用范围请求进行搜索,或 'param' 在 URL 中添加参数以指示请求范围。
seekParamStart?string'bstart'表示 seekType = 'param' 时的搜索开始参数名称
seekParamEnd?string'bend'表示 seekType = 'param' 时的搜索结束参数名称
rangeLoadZeroStart?booleanfalse如果使用 Range 搜索,则在首次加载时发送 Range: bytes=0-
customSeekHandler?objectundefined表示自定义的搜索处理器
reuseRedirectedURL?booleanfalse重用 301/302 重定向的 URL 进行后续请求,如搜索、重新连接等。
referrerPolicy?stringno-referrer-when-downgrade表示使用 FetchStreamLoader 时的[Referrer Policy][Referrer Policy]
headers?objectundefined表示将添加到请求中的额外头信息

flvjs.isSupported()

function isSupported(): boolean;

如果基本播放功能在您的浏览器上可以工作,则返回 true

flvjs.getFeatureList()

function getFeatureList(): FeatureList;

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

FeatureList

字段类型描述
mseFlvPlaybackbooleanflvjs.isSupported() 相同,表示基本播放功能是否在您的浏览器上工作。
mseLiveFlvPlaybackboolean表示 HTTP FLV 直播流是否在您的浏览器上工作。
networkStreamIOboolean表示网络加载器是否为流式传输。
networkLoaderNamestring表示网络加载器的类型名称。
nativeMP4H264Playbackboolean表示您的浏览器是否原生支持 H.264 MP4 视频文件。
nativeWebmVP8Playbackboolean表示您的浏览器是否原生支持 WebM VP8 视频文件。
nativeWebmVP9Playbackboolean表示您的浏览器是否原生支持 WebM VP9 视频文件。

flvjs.FlvPlayer

interface FlvPlayer extends Player {}

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

flvjs.NativePlayer

interface NativePlayer extends Player {}

浏览器原生播放器(HTMLVideoElement)的包装器,没有 MediaSource src,实现了 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;
}

flvjs.LoggingControl

一个全局接口,包含几个静态的 getter/setter 来设置 flv.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;
}

flvjs.Events

一系列常量,可以与 Player.on() / Player.off() 一起使用。它们需要前缀 flvjs.Events

事件描述
ERROR在播放过程中发生任何错误时触发
LOADING_COMPLETE输入的 MediaDataSource 已完全缓冲到末尾时触发
RECOVERED_EARLY_EOF在缓冲过程中发生意外的网络 EOF 但已自动恢复时触发
MEDIA_INFO提供媒体的技术信息,如视频/音频编解码器、比特率等。
METADATA_ARRIVED提供 FLV 文件(流)可以包含的元数据,带有 "onMetaData" 标记。
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输入的 MediaDataSource 格式不受 flv.js 支持
MEDIA_CODEC_UNSUPPORTED媒体流包含不受支持的视频/音频编解码器

参考链接

0

评论区