我有多个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直播,文件之间的音频中会有明显的 pop 。但如果在QT中播放片段,那就不明显了。 有关如何解决此问题的任何想法?
答案 0 :(得分:1)
段之间的间隙或弹出是由解码器重置引起的。这基本上就是#EXT-X-DISCONTINUITY标签的用途。
您可以删除在同一时间轴上制作流的不连续点。这将要求您连接源文件,然后对输出进行编码和分段。以下是关于连接的一些文档:http://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f
答案 1 :(得分:0)
所以,既然我想做Http实时流式传输,我会对这些文件进行汇编,然后再将它们分开,这会让音频弹出消失。虽然苹果媒体流验证器仍然是barfs,但事情似乎运作良好......