videojs contrib hls支持一系列hls功能。以下是一些亮点:
视频点播和实时播放模式
备份或冗余流
中段质量切换
AES-128段加密
CEA-608字幕自动翻译成标准的HTML5字幕文本曲目
在Manifest WebVTT中,字幕被自动翻译成标准的HTML5字幕曲目
定时ID3元数据自动转换为HTML5 metedata文本轨迹
高度可定制的自适应比特率选择
自动带宽跟踪
CORS跨域凭据支持
与紧密集成视频.js以及用标准的HTMLAPI尽可能多地公开的理念
流与多个音频曲目和切换到这些音频曲目(见文件文件夹)的信息
媒体内容采用碎片MP4s格式,而不是MPEG2-TS容器格式。
使用方法
您可以在播放器初始化时将options对象传递给hls源处理程序。你可以传递选项,就像你会为其他部分的video.js:
// html5 for html hls
videojs(video, {html5: {
hls: {
withCredentials: true
}
}});
// or
// flash for flash hls
videojs(video, {flash: {
hls: {
withCredentials: true
}
}});
// or
var options = {hls: {
withCredentials: true
}};
videojs(video, {flash: options, html5: options});
列表
withCredentials
类型:布尔型
可以用作源选项
可以用作初始化选项
当withCredentials属性设置为true时,对于清单和段的所有XHR请求也将withCredentials设置为true。这样就可以从清单和段所在的服务器存储和传递cookie。这对CORS有一些影响,因为设置时,Access Control Allow Origin头不能设置为*,而且响应头需要添加Access Control Allow Credentials头,该头被设置为true。有关更多信息,请参阅HTML5的文章。
handleManifestRedirects
Type: boolean
Default: false
可以用作源选项
可以用作初始化选项
当handleManifestRedirects属性设置为true时,重定向的清单请求的URL将更新为新的URL,以供将来的请求使用。
useCueTags
Type: boolean
可以用作初始化选项
当useCueTags属性设置为true时,将创建一个带有标签“ad cues”和种类“metadata”的文本轨迹。然后将轨迹添加到播放器.textTracks(). 活动线索的变化可以通过以下方法进行跟踪:视频.js文本轨迹的提示点API。例如:
let textTracks = player.textTracks();
let cuesTrack;
for (let i = 0; i < textTracks.length; i++) {
if (textTracks[i].label === 'ad-cues') {
cuesTrack = textTracks[i];
}
}
cuesTrack.addEventListener('cuechange', function() {
let activeCues = cuesTrack.activeCues;
for (let i = 0; i < activeCues.length; i++) {
let activeCue = activeCues[i];
console.log('Cue runs from ' + activeCue.startTime +
' to ' + activeCue.endTime);
}
});
overrideNative
Type: boolean
可以用作初始化选项
尝试使用videojs-contrib-hls,即使是在本机提供某种级别hls支持的平台上。有许多平台在技术上可以播放HLS内容,但不太可靠,或者缺少CEA-608字幕支持等功能。当overridenactive为true时,如果平台支持媒体源扩展,videojs contrib hls将接管hls播放,以提供更一致的体验。
注意:如果使用此选项,还必须设置视频js.options.html5.nativeAudioTracks和视频js.options.html5.nativeVideoTracks为false。videojs-contrib-hls依靠音频和视频曲目播放具有备用音频的流,并且需要video.js中的仅非本机曲目支持的附加功能.
运行时属性
当HLS被使用时,运行时属性被附加到tech对象。您可以获得对HLS源处理程序的引用,如下所示:
var hls = player.tech({ IWillNotUseThisInPlugins: true }).hls;
如果您考虑在video.js插件,我们建议你避免。你的插件不能与不使用videojs contrib hls的视频一起工作,最好的插件可以跨所有的媒体类型工作视频.js支持。如果你正在自己的网站上部署videojs-contrib-hls,并且想做一些调整,那就去做吧!
hls.playlists.master
类型:对象
表示已解析主播放列表的对象。如果直接加载媒体播放列表,将创建只有一个条目的主播放列表。
hls.playlists.media
类型:函数
一种可用于检索或修改当前活动媒体播放列表的功能。当需要下载额外的视频数据时,将引用活动媒体播放列表。不带参数调用此函数将返回活动媒体播放列表的已解析播放列表对象。使用主播放列表中的playlist对象或主播放列表中指定的URI字符串调用此函数将启动指定媒体播放列表的异步加载。一旦它被检索,它将成为活跃的媒体播放列表。
hls.segmentXhrTime
类型:数字
下载最后一个媒体段所用的毫秒数。此值在每个段下载完成后更新。
hls.bandwidth
类型:数字
最后一段下载中每秒下载的位数。selectPlaylist的默认实现使用此值来选择要播放的适当比特率。
在下载第一段视频之前,很难准确估计带宽。HLS技术使用一种基于播放列表下载时间的启发式方法来进行默认的估计。如果您有更准确的带宽信息源,则可以在加载HLS技术后立即覆盖此值,以提供初始带宽估计。
hls.bytesReceived
类型:数字
HLS技术下载的内容字节总数。
hls.selectPlaylist
类型:函数
返回媒体播放列表对象以用于下载下一段的函数。在下载新段之前,技术人员会立即调用它。您可以重写此函数以提供自适应流逻辑。但是,必须确保返回中存在的有效媒体播放列表对象玩家.hls.master.
用你自己的函数重写这个函数是非常强大的,但是在很多方面都是多余的。大多数情况下,您应该使用下面简单得多的功能,从自适应流逻辑中有选择地启用或禁用播放列表。
hls.representations
类型:函数
建议将videojs-contrib-quality-levels插件包含到您的页面中,以便videojs-contrib-hls自动填充插件在播放器上公开的QualityLevelList。您可以通过调用播放器.qualityLevel(). 有关如何使用api的更多信息,请参阅videojs-contrib-quality-levels项目页面。
例如,仅启用宽度大于或等于720的表示:
var qualityLevels = player.qualityLevels();
for (var i = 0; i < qualityLevels.length; i++) {
var quality = qualityLevels[i];
if (quality.width >= 720) {
quality.enabled = true;
} else {
quality.enabled = false;
}
}
如果不选择包含videojs-contrib-quality-levels,则可以使用表示api。要获取所有可用的表示,请调用播放器.hls. 这将返回一个普通对象的列表,每个对象都有宽度、高度、带宽和id属性,以及一个enabled()方法。
https://github.com/videojs/videojs-contrib-hls#manual-build