Browser VideoJS根据浏览器选择源
我有一条短跑和一条HLS小溪。我可以在safari chrome和edge上分别播放它们。但是,我希望创建一个播放器并检测浏览器,以便将正确的配置作为源传递给播放器 我试过下面的方法Browser VideoJS根据浏览器选择源,browser,video.js,http-live-streaming,drm,mpeg-dash,Browser,Video.js,Http Live Streaming,Drm,Mpeg Dash,我有一条短跑和一条HLS小溪。我可以在safari chrome和edge上分别播放它们。但是,我希望创建一个播放器并检测浏览器,以便将正确的配置作为源传递给播放器 我试过下面的方法 myPlayer.src([ { type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" }, { type: "video/webm", src: "http://www.example.com/path/to/video.we
myPlayer.src([
{ type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" },
{ type: "video/webm", src: "http://www.example.com/path/to/video.webm" },
{ type: "video/ogg", src: "http://www.example.com/path/to/video.ogv" }
]);
但是,它只播放第一个,如果第一个是dash流,并且您在safari中打开它,则会给出一个错误。以上只是一个例子,我的资料来源有DRM信息和很多选项。你能帮我举个例子吗。DRM和打包或流协议之间的交互有点复杂 HLS和DASH是自适应比特率流协议。服务器创建视频的多个分段比特率版本,这允许客户端设备或播放器以块(例如10秒块)的形式下载视频,并从最适合当前网络条件的比特率中选择下一个块。请参见此答案中的更多信息: 有一个索引或清单文件,它只是一个文本/XML文件,列出了不同的视频、音频、字幕等流,并证明了它们的URL。这是.mpd或.m3u8文件 大多数浏览器此时不直接支持这些HLS和DASH“清单”文件(Safari例外支持HLS)。你需要使用HTML5播放器,比如video.js、Shaka、BitMovin等 DRM允许对内容进行加密,并在服务器和客户端之间安全地共享内容的密钥 一般来说,以下DRM在设备和浏览器上本机支持-天真地说,DRM通常在购买设备时内置在操作系统或浏览器中:
- 安卓设备-Widevine
- PC或MAC上的Chrome浏览器-Widevine
- FireFox-Widevine
- iOS设备-公平竞争
- Safari浏览器-公平竞争
- Internet Explorer浏览器-PlayReady
DRM和包装之间的交互变得有点复杂——MPEG-DASH(通常简称DASH)将成为行业标准,谷歌和MS似乎都支持它,但苹果设备仍然支持HLS DASH支持CENC,它允许单个流支持多种DRM类型。HLS通常与FairPlay一起使用,尽管它也可以支持其他方案 因此,需要注意的是,这不是绝对的,并且可以找到其他示例,此时服务到达所有设备的典型情况是:
- MPEG-DASH-具有Widevine和PlayReady DRM的单流
- 具有公平竞争DRM的HLS
var player=videojs('some-video-id');
player.src({
src:'https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8',
类型:“应用程序/x-mpegURL”,
证书:正确
});
此示例来自,它现在是标准video.js构建的一部分。文档和示例非常繁重,但它也可以与DASH一起使用。我也有同样的问题。我正在使用VideoJs浏览器模块()检查浏览器并使用适当的源代码。该模块具有不同的功能,您可能需要根据需要选择不同的功能 我的实现是这样的:
if (videojs.browser.IS_ANY_SAFARI)
player.src({src: <HLS source>, type: 'application/x-mpegURL'})
else
player.src({src: <Dash source>, type: 'application/dash+xml'})
if(videojs.browser.isanysafari)
src({src:,类型:'application/x-mpegURL'})
其他的
src({src:,类型:'application/dash+xml'})
此线程有用吗?谢谢,它起作用了,但我认为上面的例子可能有类似的解决方案。我可以让playready和widebine像上面的例子一样工作,但它不适用于playready widebine和fairplay。