HTML5 和 MP4 对比 M2TS 容器

3
问题:
为了让一个iOS应用程序能够流式视频并被App Store接受,我们需要有HLS版本。
问题在哪里?
Android不支持HLS,而且由于其他原因,我们需要存储相同内容的MP4和HLS文件。
MP4和HLS有什么区别?为什么需要同时存储它们?
MP4是一个容器,用于在HTML 5浏览器中实现最佳兼容性的H.264视频和AAC音频 - jsvideo播放器通常会有Flash备用方案,如果浏览器不支持HTML 5中的MP4视频,则使用相同的MP4文件,但通过Flash播放。
HLS是一种协议,其中文本文件(.m3u8)包含对播放列表的引用,这些播放列表本身引用.ts文件(或m2ts),这些文件是mpeg-2传输流,不要与mpeg-2视频混淆。.ts文件是相同的H.264视频和AAC音频的容器。
我为什么抱怨?
1.从MP4文件创建HLS文件和播放列表需要时间
2.(最重要的)我们现在在S3上存储两倍的数据
3.为什么我要关心?如果您的S3账单每月为10K美元,用于存储MP4和HLS,则现在只需支付5K美元。或者换句话说,如果您为存储MP4而支付了100K美元,则存储相同内容的MP4和HLS将花费200K美元。
我想要什么?
我只想存储.ts文件,并使用该单个文件为桌面用户、iOS用户和Android用户提供服务。
这是可能的吗?
HLS是否需要5-10秒的.ts段而不是一个大文件?
截至IETF草案7和协议版本4,HLS支持标签EXT-X-BYTERANGE,允许您将媒体段指定为较大URL的字节范围(子范围)。
.ts文件与HTML5视频兼容吗?
显然不是。它们是与MP4不同的容器,但包含相同的视频和音频内容。值得研究如何一次存储原始视频/音频数据,并在必要时使用正确的容器。如果JS视频播放器可以将HTML 5 MP4文件即时转换为Flash视频,以便在浏览器不支持HTML 5 MP4时使用,则为什么不能对M2TS数据执行相同操作?
我可能在某种程度上无知,但也许有人可以阐明这个问题,并可能提出解决方案。

这是一个老问题,但我只是想知道在苹果的HLS兼容DASH之后,问题现在是否已经解决了?http://www.streamingmedia.com/Articles/News/Online-Video-News/HLS-Now-Supports-Fragmented-MP4-Making-it-Compatible-With-DASH-111796.aspx - advncd
1个回答

7
目前还没有一个好的解决方案。
一些背景信息:视频流以前需要自定义协议,例如 RTP/RTMP/RTSP 等等。这些协议一直很好用,除了一个问题,我们基本上在构建两个不同的网络。一个基于HTTP用于标准Web流量,另一个用于视频流。后来有一个想法是将视频分成小块并通过HTTP提供给播放器。这样我们就不需要特殊的服务器/软件,而且我们可以利用正在构建的巨大HTTP CDN。此外,由于视频被分成了块,我们可以将相同的视频编码为不同的质量/文件大小。然后播放器可以根据当前带宽选择最佳质量的视频。由于网络条件经常发生变化,因此这对移动设备是完美的解决方案。出现了几个竞争的标准,Move networks 是第一个进入市场的 [需要引用]。设计被微软(Smooth Streaming)和苹果(HTTP Live streaming aka HLS)复制。微软正在淘汰 Smooth Streaming,转而支持DASH。DASH看起来将成为未来的默认流媒体解决方案。但由于它的共识式设计方法,它已经在委员会中卡住了几年。在那几年里,苹果卖出了数百万个iOS设备。因此不能仅仅停用HLS。那么为什么不所有人都使用HLS呢?我能想到三个原因:1)它是苹果的标准,有些人厌恶苹果;2)传输流是一种复杂的文件格式;3)传输流是受专利限制的,而MP4则没有专利限制,但也没有自适应能力,这使得在2G网络上用户体验很差。iPhone 1只支持AT&T当时无比缺乏的移动网络。HLS是妥协方案。所有这些都发生在HTML5之前,因此在设计中甚至没有考虑视频标签。
针对你的观点:
1)从MP4文件创建HLS文件和播放列表需要时间。
这是一个编程网站,可以自动化完成。
2)我们现在在S3上存储了两倍的数据。我希望只存储.ts文件,并用该单个文件为桌面用户、iOS用户和Android用户提供服务。
我和你都希望如此 :)。
可能的解决方案:
1)除了老设备缺少之外,安卓的实现具体有什么问题?
2)JW Player可以播放HLS(不确定在Android上是否支持)。
3)服务器端按需转换。
HLS不是需要5-10秒钟的.ts片段吗?不能只有一个大文件吗?
可以使用字节范围,但需要确保您感兴趣的所有设备都支持它。
如果浏览器不支持HTML 5 MP4,JS视频播放器可以在运行时将其转换为Flash视频,那么为什么不能对M2TS数据执行相同的操作呢?
它们并不进行转换。Flash本身就支持MP4格式。在AS3/JS中,可以将TS格式进行转换。我已经做过了。JW播放器可以在浏览器中转换TS格式。video.js也可能能够实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接