1

我有多个 mp4 流,我使用 ffmpeg 将它们转换为 mpeg-2 ts 格式

ffmpeg -i 0.mp4 -vcodec libx264 -sameq -acodec libfaac -fflags +genpts -coder 0 -f mpegts 0.ts

mp4 的范围从 1 到 n。在转换所有这些之后,我创建了一个类似于以下内容的清单文件:

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:EVENT
#EXTINF:4.000,
http://localhost/Nick2/0.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.97,
http://localhost/Nick2/1.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.97,
http://localhost/Nick2/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.97,
http://localhost/Nick2/3.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.97,
http://localhost/Nick2/4.ts
#EXT-X-ENDLIST

我已经添加了#EXT-X-DISCONTINUITY,因为我正在尝试背靠背播放转换后的 mp4。问题是,如果我尝试使用 HTTP 实时流式传输,文件之间的音频会出现明显的弹出声。但如果在 QT 中播放这些片段,这并不明显。关于如何解决这个问题的任何想法?

4

2 回答 2

1

片段之间的间隙或弹出是由解码器被重置引起的。这基本上就是#EXT-X-DISCONTINUITY 标签的用途。

您可以删除在同一时间线上制作流的不连续性。这将要求您连接源文件,然后对输出进行编码和分段。以下是有关串联的一些文档:http ://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f

于 2012-08-15T06:53:30.153 回答
0

所以,由于我想做 Http 直播,我将文件连接起来,然后再次拆分它们,这使得音频弹出消失了。尽管苹果媒体流验证器仍然失败,但事情似乎运作良好......

于 2012-08-15T16:39:20.067 回答