1

ffmpegを使用してmpeg-2ts形式に変換する複数のmp4ストリームがあります

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

変換されたmp4を連続して再生しようとしているので、#EXT-X-DISCONTINUITYを追加しました。問題は、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 に答える