高ビットレートの HLS ストリームに継続的なライブ ストリームを記録しています。次に、これを別の形式/ビットレートに非同期にトランスコードしたいと考えています。ほとんどの場合、オーディオ アーティファクトが各セグメント (ギャップとポップ) の間に表示されます。
ffmpeg コマンド ラインの例を次に示します。
ffmpeg -threads 1 -nostdin -loglevel verbose \
-nostdin -y -i input.ts -c:a libfdk_aac \
-ac 2 -b:a 64k -y -metadata -vn output.ts
サウンド ファイルの例を調べると、オーディオの最後にギャップがあることがわかります。
そして、ファイルの先頭が疑わしいほど減衰しているように見えます (ただし、これは問題ではない可能性があります)。
私は、ストリーム全体のコンテキストなしでトランスコーディングが行われているために、これらのアーティファクトが発生しているのではないかと考えています。
HLSストリームに収まるオーディオを生成するようにFFMPEGを説得する方法についてのアイデアはありますか?
** 更新 1 **
元のセグメントの開始/終了は次のとおりです。ご覧のとおり、開始は同じように見えますが、終了は 30 秒できれいに終了しています。非可逆エンコーディングである程度のパディングが予想されますが、HLS がギャップレス再生を行う方法がいくつかあります (これは、カスタム メタデータを使用した iTunes メソッドに関連していますか?)
** 更新 2 **
そこで、オリジナル (MPEG2 TS の 128k aac) とトランスコード (aac/adts コンテナーの 64k aac) の両方を WAV に変換し、2 つを並べて配置しました。結果は次のとおりです。
これがクライアントの再生方法を表しているかどうかはわかりませんが、トランスコードされたものをデコードすると最初にギャップが生じ、セグメントが長くなるのは少し奇妙に思えます。どちらも非可逆エンコーディングであることを考えると、パディングが両方に等しく存在すると予想していました (存在する場合)。
** 更新 3 **
http://en.wikipedia.org/wiki/Gapless_playbackによると- 一握りのエンコーダーのみがギャップレスをサポートしています - MP3 の場合、私は ffmpeg でラメに切り替えましたが、これまでのところ問題は解決したようです。
AAC ( http://en.wikipedia.org/wiki/FAACを参照) については、libfaac (libfdk_aac ではなく) を試してみましたが、ギャップレス オーディオも生成されるようです。ただし、後者の品質はそれほど優れていないため、可能であれば libfdk_aac を使用したいと思います。