我有一张专辑存储为无缝 m4a 文件列表,从 CD 中翻录。我需要通过 HTTP Live Streaming 无缝地流式传输专辑,并且用户必须能够在任何曲目的开头“跳入”。目前,我唯一的客户端是 iOS 上的 AVPlayer。
我可以使用Apple 的 mediafilesegmenter 工具单独分割曲目。对于每首曲目,这会生成一个 .m3u8 播放列表文件和几个 .aac 片段文件,每个文件的持续时间约为 10 秒,最后一个除外。
Track 1 的 m3u8 播放列表如下所示:
#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.001,
segment0.aac
#EXTINF:9.983,
segment1.aac
...
#EXTINF:3.231,
segment23.aac
#EXT-X-ENDLIST
我可以将这些 m3u8 播放列表文件合并为专辑的一个主 m3u8 文件:
#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.001, // begin track 1
segment0.aac
#EXTINF:9.983,
segment1.aac
...
#EXTINF:3.231,
segment23.aac
#EXT-X-DISCONTINUITY
#EXTINF:10.001, // begin track 2
segment24.aac
#EXTINF:9.983,
segment25.aac
...
#EXTINF:6.845,
segment46.aac
#EXT-X-DISCONTINUITY
#EXTINF:10.001, // begin track 3
segment47.aac
#EXTINF:9.983,
segment48.aac
...
#EXTINF:8.012,
segment80.aac
#EXT-X-ENDLIST
它将在整张专辑中播放,但并非没有间隙。注意每个轨道之间的 DISCONTINUITY 标签(没有它,播放器将永远挂起)。这会在轨道之间引入一个小间隙,可能是 300 毫秒。
我怎样才能创建无间断地相互流入的段?