新闻中心
m3u8和直连哪个快?为什么视频网站都使用m3u8?
2023-03-02
阅读()
来源:互联数据

为什么很多视频网站都使用m3u8?相比与mp4直传视频流哪个快,有何优势?为何点播要用M3U8来搞?存成一个文件不更好吗?M3U8文件格式是一种特殊的媒体播放列表文件,它采用UTF-8编码,可以用来存储多媒体文件的播放列表,可以方便的用来播放视频和音频流,M3U8文件格式的优势使它成为视频和音频传输的首选。它可以应用于各种场景,例如网络电视、在线直播、视频会议等。


特别是使用M3U8文件格式来实现自适应流媒体,可以有效的提升用户体验,减少视频或音频的卡顿和缓冲问题。同时,M3U8文件格式也可以用于播放器、流媒体服务器、节点缓存等软件的开发,以及视频和音频传输的开发。可以说是视频和音频传输的一种不错的选择。


举个很简单的例子,给你一瓶3L的可乐(mp4的整文件几百M),让你一口喝下去(读取整个mp4文件的信息并且需要下载一段内容),可能会呛死你(首次打开播放超慢,加载时间长),如果你把可乐(mp4文件)分成好几杯(切片m3u8),然后一杯一杯的喝(分片播放),是不是喝起来就爽多了?(每个分片100来kb播放更快)。


视频网站服务器租用http://www.hkt4.com/solutions/vedio.html


一、视频M3U8支持中遇到的一些问题,及优化措施


1、提前预加载,获取所有m3u8列表,跑个脚本,先全部预加载到CDN设备上。比较土,但不影响后续观看体验。


2、实时预加载,在CDN设备上首次获取M3U8文件时,在CDN端对M3U8进行解析,自行在CDN内部完成对视频文件的预热。相对更理想,但在CDN端做解析,会让M3U8从源站到客户端加大延迟。相对1来说稍复杂点。

视频网站使用m3u8

m3u8+ts分片播放的优势


1. 速度:根据刚才的例子,mp4文件播放在开始加载的时候会读取很大的文件信息,出现的情况就是卡顿很长时间才能播放,而m3u8分片则会瞬间读取整个视频文件信息,马上开始加载第一片ts视频文件播放,不管是开始播放还是拖拽播放的加载速度都比mp4快N倍。


2. 磁盘:高清点播长视频一般都是G级别的,对于大文件下载来说,单盘的IO压力较大。如果能在磁盘上将大文件打散分片存储,需要播放的部分才下载,不需要播放的部分则不下载,这样硬盘IO将会大大缓解


3. 容错:下载或存储过程中,1G的文件中任一字节出错将导致 可能会导致改视频的失效,而被切成小碎片后,容错将变得相对简单,只需补全出错的切片即可。


4. 分发:大文件分发起来相对小文件比较困难,下载耗时长,特别是在服务初期,源服务器需要承受极高的磁盘IO请求,基本上很少看到超大文件做cdn分发的,而ts分片文件做cdn缓存就很容易了,文件小缓存速度快,基本上没有缓存失败的可能。


5. 播放:mp4在http状态下会一直下载文件,不管用户是否需要播放后面的内容都会一直下载直到完全下载完成,而分片文件则不存在这个问题,通过播放器或服务器端的控制,只下载需要播放的部分内容,不播放则不下载。


M3U8文件格式的劣势


M3U8文件格式也有一些缺点。首先,由于它是一种文本格式,因此它不能支持视频和音频流中的加密和DRM保护功能,这就意味着它不能支持付费内容的传输。其次,它并不能支持多种格式的多媒体文件,只能支持MPEG-4和HLS流媒体文件。最后,由于它是一种文本格式,因此它的文件体积较小,传输速度较慢,不适合大型多媒体文件的传输。


二、CDN对m3u8点播需要做哪些支持?


受限于播放器与源站之间的交互行为的不确定性,给M3U8做缓存 加速服务时,最好先抓包 分析下 在播放器 与源站直接交互时的请求与响应头,这样会加速解决在经过CDN时遇到的故障。


特别是需要注意:


1.源站明确告诉播放器哪些内容不能缓存,明确cache-control:no-cache的,尽量不要与源站配置一致,如可能影响到播放器的xml控制文件及M3U8文件(分析其内容是否会变化)

2.长连接:源站与播放器直接的交互是开启长连接,Connection:keep-alive,如果是长连接的话,在拿wireshark 打开包时,点击follow stream时,将可以看到一个stream流中有多次GET请求及响应,一般的播放及拖拽卡顿,很有可能是长连接没有打开,注意开启 CDN设备到 播放器,及CDN到源站的长连接。这样可以将miss时对用户的体验降到最低。


最后, M3U8文件格式的优势使它成为视频和音频传输的首选,可以应用于各种场景,以及视频和音频传输的开发。具有自适应流媒体、文件体积小、字幕支持等优势,但也有一些劣势,如不支持加密和DRM保护功能、不支持多种格式的多媒体文件等。容易卡顿,可能是你访问该服务器的m3u8 延迟较高,网络问题,也可能是服务器没配好而已。

相关阅读