web-dev-qa-db-ja.com

コーデックと最低ビットレートffmpeg出力の設定

入力オーディオファイルを可能な限り小さいサイズに変換して、無線送信機で転送する必要があります。

現在、AACコーデックとMP3形式では、ビットレートに8kbps、サンプリングレートに16 kHz、1チャネルを使用しました。出力データは約3kb /秒です。

しかし、サンプルレートを8 kHz以下のビットレートに変更すると、コーデックがこの設定をサポートしていないというエラーが表示されます。

出力ファイルのレートを下げる設定はありますか?

追伸:私はAndroidで作業しているため、コーデックをインストールするのは難しいので、ffmpegのデフォルトコーデックを使用する必要があります。

更新:

私はopusコマンドラインを使用しました。これが私のコマンドです。

ffmpeg -i a.mp3 -vn -c:a libopus -ac 1 -ar 8000 -b:a 500 -vbr constrained -compression_level 0 -application lowdelay output22.mkv

結果は

Input #0, mp3, from 'a.mp3':
  Metadata:
    title           : Salam (myahangha.ir)
    artist          : Sogand
    album           : Javooni
    comment         : ..:: myahangha.ir ::..
    genre           : 2019
    date            : 2019
  Duration: 00:03:15.24, start: 0.000000, bitrate: 324 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
    Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 500x500 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      title           : Radio Javan - Javooni.jpg
      comment         : Other
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> opus (libopus))
Press [q] to stop, [?] for help
[libopus @ 0000028b84d9e200] Bitrate 500 is extremely low, maybe you mean 500k
The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Output #0, matroska, to 'output24.mkv':
  Metadata:
    title           : Salam (myahangha.ir)
    artist          : Sogand
    album           : Javooni
    comment         : ..:: myahangha.ir ::..
    genre           : 2019
    date            : 2019
    encoder         : Lavf58.27.102
    Stream #0:0: Audio: opus (libopus) ([255][255][255][255] / 0xFFFFFFFF), 8000 Hz, mono, flt, 0 kb/s
    Metadata:
      encoder         : Lavc58.51.100 libopus
size=     116kB time=00:03:15.25 bitrate=   4.9kbits/s speed= 396x
video:0kB audio:57kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 103.282921%

opusは4.9kbpsより低いビットレートを受け入れないようです:(

1
peiman F.

AACまたはMP3は、超低帯域幅の伝送に最適なコーデックではありません。より効率の高い適切な音声コーデックを使用します。

Opusが最良のオプションです。 FFmpegでは libopus から利用できます。実際、Opusはスピーチのためだけに作られているわけではありません。 両方の音声と音楽のハイブリッドエンコーディングを提供します。

例:

ffmpeg -i <input> -c:a libopus -ac 1 -ar 16000 -b:a 8K -vbr constrained out.opus

ここに、 -ac出力をモノラルに設定します。-arサンプリングレートを16kHzに設定し、-b:aビットレートを8kBit/sに設定します。ここでは、制約付き可変ビットレートモードが使用されます。原則として、ffmpegを使用してモノラルにダウンサンプリングおよびダウンミックスする必要はありません。これは、指定されたビットレートターゲットに到達するためにlibopusが独自に行うことです。

さらにいくつかの推奨事項が示されています ここ 。 Opusでは、6〜8 kBit/sが(モノラル、低サンプルレート)スピーチに使用できる範囲ですが、音楽には使用できないことに注意してください。

Opus Webサイト で、さまざまなコーデックとそのビットレート/品質曲線の興味深い比較を見つけることができます。

この数字は単なる目安であることを付け加えておきます。さまざまなテスト結果と事例知識から編集されています。

2
slhck