web-dev-qa-db-ja.com

FFmpegのどのオーディオエンコーダーが8 kHzをサポートしていますか?

古いビデオ(カシオのExilim EX-Z40で作成されたものである場合)があり、そのオーディオストリームffprobepcm_u8, 8000 Hz, mono, u8として報告されます。

それをモダンなものにトランスコードしたいと思います。

FFmpegデフォルトでのトランスコーディングは失敗します:

libfaacはこの出力形式をサポートしていません!

したがって、-c:a copyが機能するため、おそらくlibfaacは8 kHzをサポートしていません。

8 kHzサンプリングレートをサポートするエンコーダーはどれですか? ここにあるリスト はサンプリングレートについてほとんど言及していません。

インストールされているすべてのコーデックを試すスクリプトを作成できますか?

ffmpeg -codecs | grep EA`

…どれが機能するかを直接確認するには?

8

ネイティブFFmpeg AACエンコーダー(-c:a aac)は、8000 Hzのサンプルレートをサポートします。

ffmpeg -h encoder=aac
...
Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000 7350

入力に最も近いサンプルレートが自動的に選択されるため、-arを宣言する必要はありません。

ffmpeg -i input.mov -c:a aac output.m4a

FFmpegのどのオーディオエンコーダーが8 kHzをサポートしていますか?

aac、aptx、aptx_hd、dca、flac、g723_1、libfdk_aac、libmp3lame、libopus、libspeex、libvorbis、real_144、wavpack、多くのpcmバリアント。

おそらく他にもありますが、supported_sampleratesの報告には一貫性がありません。

モダンなものにトランスコードしたいのですが。

libfaacは長年FFmpegから削除されており、最新のAACエンコーダーとは見なされていません。あなたのffmpegは古いものでなければなりません。ネイティブのFFmpeg AACエンコーダーを更新して使用するか、libfdk_aacをコンパイルして使用します。

最新のものを使いたい場合はlibopusを使用してください。

しかし、[aac]を試したところ、元のファイルと比較して、ファイルサイズが大きくなり、一部の高周波が減衰しました。

あなたのffmpegは非常に古いと思いますので、エンコーダーaacの主要な品質更新を見逃している可能性があります。アップグレードと品質はおそらく向上します。

8
llogan

サンプリングレートとコーデックは異なるパラメーターです。ほとんどの場合、あなたはに沿って何かをしたいです

-ar 48000 -c:a aac

8KHzから48KHzにアップサンプリングし、AACに圧縮するには

5
Eugen Rieck

8 KHzは「ナローバンド」として知られているスピーチのかなり標準的なものです。これがスピーチの場合は、FFmpegがサポートしているわけではありませんが、多くのオプションが必要です。ボックス。おそらく最良のオプションは

ただし、8KHz 8ビットPCMは、そもそも優れたソースではありません。ほとんどのエンコーダーは、より良い入力を期待/期待しています。 8ビットG.711mu-law。8ビット浮動小数点としてエンコードされた実質的に12ビットデータです。純粋な8ビットPCM入力では、モデル化されている音声パターンに適合しない可能性があるため、うまく機能しない可能性があります。

これもかなり小さいファイルであり、ビデオコンテナがより複雑なコーデックをサポートしない可能性があります。だから、これは価値があるよりも厄介だと思うので、オーディオはそのままにしておきます。

2
Rup

Opus は一般に、利用可能な最高の低ビットレートコーデックと見なされ、8-kHzの入力サンプルレートでは 問題はありません です。結果のopusストリームは、デコーダーにとって都合のよいサンプルレートにデコードできます。 (他の不可逆コーデックと同様に、FFTを実行した後、周波数帯域に基づいて圧縮します。しかし、他の一部のコーデックは、入力と同じサンプルレートにのみデコードしたいようです。他の回答が指摘しているように、できますFFmpegを取得して、コーデックに渡す前に入力をリサンプリングしますが、Opusには必要ありません。

24 kbit/s Opusでffmpeg -c:a libopus -b:a 24k -frame_duration 120を試してください。

おそらく試してみる価値はあります。デフォルトのaudioプロファイルの代わりに-application voipを使用して、「音声明瞭度の向上」を調整します。

-frame_durationを最大値に設定すると、オーバーヘッドが削減されると思います。リアルタイムの双方向ボイスチャットではなく、ファイルだけがあるため、エンコーダー/デコーダーのレイテンシは気になりません。したがって、120ミリ秒のオーディオをバッファリングし、複数のCELTまたはSILKフレームをまとめてフレームヘッダーの冗長性を減らすことができます。


最高の利用可能なOpusエンコーダーは無料でオープンソースのlibopushttps://opus-codec.org )なので、最高のエンコーダーがあるAACとは異なり、FFmpegはそれを使用できます。クローズドソース。

Opusには、非常に低いビットレートの音声(16kb/sなど)用の特別なモードがあり、音声を検出し、低ビットレートで音声固有のエンコーダー(SILK)に切り替えることさえできます。

Opusの低ビットレートコーディングツールは、HE-AACv2でできることと似ています。 ウィキペディアの記事 を参照してください。


でも試してみると、元に比べてファイルサイズが大きくなり......

非可逆圧縮のポイントの一部は、出力ビットレートを選択できることです 。ほとんどのコーデックは、たとえば-b:a 32kを使用して、32 kbit/sのオーディオビットレートを選択できます。

(ビデオの場合、-preset veryslowと-preset mediumのように、エンコードに費やされたCPU時間をトレードオフすることもできます。しかし、オーディオの圧縮は十分に安いので、ほとんどのコーデックにはビットレートを改善するためにより多くのCPU時間を費やすオプションがありません。と品質のトレードオフ)

モノ8ビット8 kHz PCMのビットレートは64 kbit/s = 8 * 8000であるため、それより低い値を目指しています。それ以外の場合は、元のファイルを保持することもできます。 PCMは生のサンプルなので、ビットレートはサンプルレートとサンプル幅の積にすぎません。 .bmpビットマップ画像に相当するオーディオと同じです。それは非常に非効率的であり、より優れたコーデックが発明された理由です。 (そして、リスニングからわかるように、ビットレートはサンプルレートと1:1で結び付けられているため、PCMのビットレートを保存すると、品質と周波数の範囲に多大なコストがかかります。不可逆コーデックを使用して、周波数領域で量子化します。


そして、いくつかの高周波は減衰されました。したがって、-c:a copyよりも悪い

FFmpegのネイティブAACエンコーダー-c:a aacは以前はかなり悪く、古いFFmpegを使用していました。 https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio によると、2017年の時点で、AAC-LCのaaclibfdk_aacよりも優れていることがあります(低複雑性の高いビットレート)。ただし、HE-AACについては触れられておらず、それが低ビットレートAACに必要なことです。

libfdk_aacは、利用可能な最高のオープンソースAACエンコーダーであり、HE-AAC用である可能性があります。私の知る限り、どちらも最高の非フリーAACエンコーダーほど優れていません。

低ビットレートのAACの場合、コーディングツールを追加するHE-AACが本当に必要です https://en.wikipedia.org/wiki/High-Efficiency_Advanced_Audio_Coding-c:a aacがそれを実行できるかどうかはわかりません。

https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio は、いくつかの推奨設定と、さまざまなエンコーダーの有用なビットレートの範囲を示しています。

しかし、おそらくOpus、またはおそらく4 kbit/sのようなビットレートのAMR-NB(狭帯域)が必要です。 Opus wiki記事の品質とビットレートのプロット が何歳かはわかりませんが、AMR-NBがOpusよりも品質が高く、8 kb/s未満になっています。

その数ビットで、音声を理解できるかもしれませんが、音は鳴りませんNice。それは、どのコーデックが最も恐ろしいかという問題にすぎません。

2
Peter Cordes