【发布时间】:2014-04-22 16:52:20
【问题描述】:
我有一张专辑,存储为从 CD 翻录的无缝 m4a 文件列表。我需要通过 HTTP Live Streaming 无缝地流式传输专辑,并且用户必须能够在任何曲目的开头“跳入”。目前,我唯一的客户端是 iOS 上的 AVPlayer。
我可以使用Apple's mediafilesegmenter tool 单独分割曲目。对于每首曲目,这会生成一个 .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 毫秒。
我怎样才能创建无间断地相互流入的片段?
【问题讨论】:
-
您找到解决方案了吗?我正在尝试做一些非常相似的事情,但用视频代替。
-
不,很遗憾没有。那家公司倒闭了。
标签: avplayer http-live-streaming aac m4a