本文深入探讨了HLS(HTTP Live Streaming)在实现Android上播放m3u8文件时所涉及的DTS(Decoding Timestamp)和PTS(Presentation Timestamp)技术。阐述了这两种时间戳在音视频同步中的关键作用,并讨论了丢帧策略。文章详细介绍了如何解析m3u8播放列表,特别关注了#EXT-X-TARGETDURATION、#EXTINF标签以及EXT-X-DISCONTINUITY标签的处理方法。此外,还分析了在进行SEEK操作时遇到的问题,包括dts时间戳的处理、微秒转换、以及判断关键帧的挑战。最后,针对这些问题提出了解决方案。
其中AV_TIME_BASE为1,000,000,denominator为90,000。 拿到m3u8播放列表后,首先进行解析。HTTP Live Streaming标准草案可以从这里http://tools.ietf.org/html/draft-pantos-http-live-streaming-08查看。 解析代码在ffmpeg/libavformat/hls.c中