• (HLS播放器之中的一个)HLS协议之M3U8解析


         參照 http://tools.ietf.org/html/draft-pantos-http-live-streaming-08, 能够对M3U8有比較系统的认识。

        

         HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方式。在 HLS 技术中 Web server向client提供接近实时的音视频流。但在使用的过程中是使用的标准的 HTTP 协议,所以这时,仅仅要使用 HLS 的技术,就能在普通的 HTTP 的应用上直接提供点播和直播。在App Store中的视频相关的应用,基本都是应用的此种技术。该技术基本原理是将视频文件或视频流切分成小片(ts)并建立索引文件(m3u8)。支持的视频流编码为H.264,音频流编码为AAC。

         好了,我開始说说我的吧。例如以下

    #EXTM3U #EXT-X-TARGETDURATION:15 
    #EXTINF:7, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=0&end=658512&hsize=5343&tag=0&v=7620766549&contentlength=229360 
    #EXTINF:14, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=1712&end=2720295&hsize=5343&tag=1&v=7620766549&contentlength=1544984 
    #EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f9eb21f9247aafb04b39cc5bba13afa1.ts?start=658512&end=3785637&hsize=5343&tag=1&v=7620766549&contentlength=1082880
    //省略...
    #EXT-X-DISCONTINUITY 
    #EXTINF:9, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=0&end=836062&hsize=14301&tag=0&v=7620766549&contentlength=408148 
    #EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=1748&end=1489908&hsize=14301&tag=1&v=7620766549&contentlength=493500 
    #EXTINF:10, http://data.video.qiyi.com/videos/movie/20111225/f2eab9af69495077eea62a17029b0c9b.ts?start=377373&end=2159598&hsize=14301&tag=1&v=7620766549&contentlength=694660
    //省略...
    #EXT-X-ENDLIST


        这就是简略的M3U8文件。当中要注意#EXTINF:[int/double],表示这个片段的总时长,这个字段非常关键我们能够通过它找见跳转位置的TS片段; #EXT-X-DISCONTINUITY,表示一个新的时间点開始,也就是说数据流的时间戳从此刻開始从0開始。那你可要准备好换算了,否则IMediaSeeking::SetPositions可就找不见了哦。当然有部分M3U8没有这个字段,大部分是影片总长度比較小的(不是绝对的哦)。

        剩下的事情就是解析字符串的了,不累赘了。还有就是最好将时间列表和ts地址列表分离开来,使用起来会更方便由于大部分时候是多线程的情况。

  • 相关阅读:
    坐看夕阳
    张学孟 (帮别人名字作诗)
    光棍节有感
    我懂
    陶婷(帮别人名字作诗)
    你的爱是不是在等着我
    OpenCV数据读写操作
    数字图像处理中的形态学
    C++/C学习笔记(一)
    利用opencv绘制 灰度直方图 RGB直方图 HSV直方图 直方图均衡化
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4262709.html
Copyright © 2020-2023  润新知