龙空技术网

基于HLS的移动端视频流技术指南

IT豆豆 109

前言:

眼前姐妹们对“html5视频通话”大致比较讲究,各位老铁们都想要知道一些“html5视频通话”的相关内容。那么小编也在网摘上网罗了一些关于“html5视频通话””的相关资讯,希望姐妹们能喜欢,姐妹们快快来了解一下吧!

HTTP Live Streaming,也称为HLS,是目前最常见的流式视频的格式。如果您今天正在构建视频流应用程序,则推荐使用HLS。Apple在2009年创建了HLS标准,它是iOS设备所需的流格式。从那时起,Android就像大多数其他平台一样增加了对HLS的支持。

HLS很受欢迎有很多原因。

· HLS几乎可以所有平台都支持。每个主要平台都有免费的HLS播放器:网络,移动和电视。

· 如果要在iOS设备使用流,Apple会很好支持HLS。

· HLS相对简单。它使用常见的现有视频格式(MP4或TS,以及H.264和AAC等编解码器),以及丑陋但人类可读的文本格式(m3u)。

· 它适用于HTTP,因此您无需运行特殊服务器(与旧式RTMP或较新的WebRTC协议不同)。这使得使用HLS比使用其他协议更容易扩展。

HLS工作原理

任何HLS流都有三个部分。

首先是master manifest。这是一个播放列表,列出了单个视频可用的不同大小和类型。典型的主清单将列出3-7个单独的分段(renditions) - 例如,480p分段,720p分段和1080p分段。主清单被传递到HLS视频播放器,允许播放者自己决定播放的内容。

示例(skiing.m3u8):

主清单列出了多个媒体清单。每个媒体清单代表不同的视频分段 - 独特的分辨率,比特率和编解码器组合。例如,一个媒体清单描述了5 Mbps的1080p视频,而另一个媒体清单描述了3 Mbps的720p视频。

这些媒体清单也是播放列表,但它们不会列出其他清单,而是将网址列为短视频段。大多数情况下,这些段长度在2到10秒之间,并以MPEG-TS格式打包,但在较新版本的HLS规范中支持碎片化MP4。这些文件被分离(segmented )(或分段(fragmented))的原因是视频播放器可以在播放过程中轻松切换节目 - 例如,如果带宽变得更好或更差。

示例(skiing-480p.m3u8):

因此,如果您想使用HLS流式传输视频,则需要做三件事。

1. 创建HLS媒体(片段和清单)。您可以使用或Zencoder 等API服务来完成此操作,也可以使用ffmpeg或Handbrake等工具手动完成。

2. 托管文件。将它们放在HTTP服务器上并将CDN放在前面。

3. 将主清单加载到兼容HLS的播放器中。例如,将主清单 - skiing.m3u8- 传递 给兼容HLS的播放器,如HLS.js或Video.js。

哪些平台支持HLS?

到2018年几乎所有平台都支持HLS。

Web:主要的浏览器,使用像Video.js或HLS.js这样的HTML5视频播放器,或者通过Safari中的本机播放支持。

iOS:本机支持

Android:通过Google Exoplayer项目支持

电视: Roku,Apple TV,Xbox,亚马逊Fire TV,PS4,三星,LG等

哪些平台不支持HLS?

Web: Internet Explorer 10及更早版本(撰写本文时占0.1%的市场份额)。

教程:创建HLS内容

启动和运行HLS视频的最简单方法是使用等服务。注册免费帐户后,请通过API提交您的第一个视频(例如使用curl或Postman或Insomnia等工具)。

示例(有关更多信息,请参阅):

使用curl:

响应示例:

Mux Video将视频编码并打包到HLS。请注意playback_id - 当您真正想要流式传输视频时,您将在下一步中使用它。

您还可以使用ffmpeg或其他转码服务将视频编码为HLS。

流式传输HLS内容

如果您正在使用Mux Video,则流式传输视频非常简单。只需插上playback_id后面stream.mux.com就可以了。例如:

如果您未使用Mux Video,则在创建HLS流后,将m3u8清单和TS / fMP4媒体文件上载到HTTP存储平台,并配置CDN以传送媒体段。您也可以使用CDN来提供清单,但如果您正在直播视频,这可能会非常棘手,因为实时清单会随着直播流程的不断更新而不断更新。

HLS播放:iOS

要在iOS上播放HLS视频,请参阅Mux文档中的指南和。进入第4步后,将URL设置为Mux Playback URL,如下所示:

HLS播放:Android

要在Android应用程序中播放HLS视频,请参阅。虽然Android的原生支持开箱即用的HLS,但这种支持取决于Android的版本,并且可能有问题,具体取决于软件和硬件组合。因此,Google创建了ExoPlayer,以标准化对Android内HLS的支持。

ExoPlayer有一些示例应用程序,可以帮助在他们的Github仓库中包含流式传输HLS。在创建媒体源时,请将MUX播放URL传递给HlsMediaSource.Factory.createMediaSource(uri)呼叫。

HLS播放:Web

在Web浏览器中播放HLS有点细微差别。例如,Safari本身支持HLS。但是,其他浏览器不支持开箱即用的HLS,并且需要使用使用Media Source Extensions的播放器来支持HLS。您可以在Mux的HLS播放支持指南中阅读有关一些可用器的更多信息。

按照所选播放器的说明加载视频。加载源代码时,请确保使用Mux Playback URL。例如,有关使用HLS.js的示例,请参阅。

备择方案

如果您今天不想使用HLS,那么您有一个很好的选择和一些不好的选择。

Progressive MP4易于实现,但在体验质量方面表现不佳(通过等QoE工具测量。只需创建一个MP4文件,让玩家通过范围请求逐步下载。这里的好处是简单性;缺点是玩家无法自动适应网络条件。这意味着具有高带宽的观看者将获得比他们应有的低质量视频,而具有低(或可变)带宽的观看者将看到重新缓冲。

RTMP现在几乎只用作摄取格式而不是播放格式。它仍然以流现场活动一种可接受的方式向上抽搐或流媒体直播(或复用视频),但它不再用于流了这样的服务,为许多原因(包括成本,可扩展性和Flash的死亡) 。

MPEG-DASH(或仅"DASH")是HLS的真正替代品。DASH在概念上类似于HLS,但使用XML作为清单格式而不是基于文本的m3u格式。DASH具有优于HLS的一些优点,以及一些缺点。寻找更详细的未来指南。

标签: #html5视频通话