两个来源均可用时,VideoJS如何确定何时使用HLS和MP4视频?

时间:2019-06-04 13:36:54

标签: video html5-video video.js

我有一个以MP4以及HLS(m3u8)格式编码的视频。我希望VideoJS将MP4用于桌面浏览器,而将m3u8用于设备。 VideoJS的最新版本支持两种格式。我正在尝试确定videojs是否可以自动找出要使用的源。还是我的代码必须检测浏览器并将最佳的源类型传递给videojs。

2 个答案:

答案 0 :(得分:0)

MP4和HLS实际上是视频交付生态系统中不同类型的事物。

MP4是一种容器格式,在单个文件中包含编码的视频,音频等轨道,而HLS是一种流协议,可以将像MP4这样的容器中的视频从服务器流传输到客户端。

术语可能有点混乱,这些术语通常无法精确使用,但简单的概述如下:

  • “原始”视频-这是未压缩的帧
  • 已编码视频-通常由编解码器压缩。例如h.264,h.265,AV1等
  • 容器(例如FLV,MP4)-容器可以包含一个或多个“轨道”编码的视频,音频,字幕以及包括加密信息的元数据。
  • 碎片化的容器(例如,碎片化的MP4)-这允许将视频容器分解为段或块以支持流式传输,尤其是ABR(请参见下文)
  • 流协议,包括索引和视频片段或片段(例如HLS,DASH,平滑流)

流协议促进了自适应比特率流(ABR),简单来说,这意味着您提供了视频的多个不同比特率版本,并且客户端设备或播放器可以分块(例如10秒)下载视频,并选择比特率中最适合设备和当前网络状况的下一个块。还可以在此答案中查看更多信息:https://stackoverflow.com/a/42365034/334402

通常,ABR协议将提供更好的性能,因此,在流式传输视频时,您通常总是选择一个,而不是简单地逐步下载和播放MP4文件本身。

可能是您担心某些不支持HLS的设备或浏览器。大多数设备和HTML5播放器现在可能都会使用,但是主要的视频流服务通常会为每个视频提供HLS和MPEG-DASH流,这将覆盖绝大多数设备。

答案 1 :(得分:0)

您不能一次将这两种资源同时提供给任何视频播放器,更不用说VideoJS。

一个或另一个。

<video>标记中的源应该是.mp4(带符号或正整数)。

或者应该是.m3u8播放列表。

您的存储桶/文件夹中可能同时具有这两个功能。但是您一次只能提供其中一个作为单个玩家的来源。

-拉维·贾亚戈帕(Ravi Jayagopal)

https://S3MediaVault.com