5

ffmpegを使用してHTTPライブストリーミング用にセグメント化/エンコードをwavからaacにセグメント化する実行時間を短縮し、マシンのすべてのコアを利用してm3u8プレイリストをセグメント化および生成することを目指しています。

ある実験では、ffmpegでwavファイルをlibfdk_aacを使用してaacに直接セグメント化しましたが、完了するまでにかなり長い時間がかかりました。

2番目の実験では、ffmpegでwavファイルをそのまま(wav)セグメント化しました。これは非常に高速で(マシンでは1秒未満)、GNU parallelを使用してffmpegを再度実行し、wavセグメントをaacにエンコードし、手動で変更しました。期間を変更せずにm3u8ファイル。これははるかに高速に実行されましたが、出力オーディオをストリーミングするときに「無音」のギャップが聞こえる可能性があります。

私は最初にmp3を使用して2番目のシナリオを試しましたが、結果はまったく同じでした。ラメがエンコード中にパディングを追加することを読んだことがありますが(http://scruss.com/blog/2012/02/21/generational-loss-in-mp3-re-encoding/)、これはlibfdk_aacも追加することを意味しますか?エンコード中のパディング?

たぶんこれはこの質問に関連しています:再構築するときにセグメント間にギャップ(またはオーディオポップ)を持たずにオーディオファイルをエンコードしてセグメント化するにはどうすればよいですか?

4

1 に答える 1

4

HLS仕様のセクション4によると、次のようになります。

トランスポートストリームまたはオーディオエレメンタリーストリームセグメントは、セグメントの最後にあるエンコードされたメディアの継続である必要があります。この場合、タイムスタンプや継続性カウンターなどの連続シリーズの値は中断されません。

「沈黙」のギャップは、99,99%の確率で、間違ったカウンター/不連続性に関連しています。期間を変更せずに.m3u8ファイルを手動で変更したと書いたので、自分でオーディオをカットしようとしたと思います。それはできません。

これらのカウンターがあるため、HLSストリームは並列化可能な作成を行うことができません。それらはシーケンス[MPEG2-TS:-(]に従う必要があります。より高速なプロセッサを入手する方がよいでしょう。

于 2013-06-05T06:16:20.107 に答える