0

我有一张专辑存储为无缝 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 毫秒。

我怎样才能创建无间断地相互流入的段?

4

1 回答 1

1

您可以在对合并的 AAC 文件使用 mediafilesegmenter 工具之前连接 AAC 文件。

以下 ffmpeg 命令可能会生成输出文件。

ffmpeg -i "concat:input1.aac|input2.aac|input3.aac" -c 复制 output.aac

您可能需要在连接之前将 aac 文件重新混合为 mpeg2ts 文件,然后将 mpeg2ts 文件重新混合为 AAC。

于 2014-03-17T20:26:25.937 回答