web-dev-qa-db-ja.com

RAW出力を別のプロセスにパイプするときに、オーディオビットレート、オーディオチャネル、およびオーディオサンプリング周波数の設定はFFmpegで重要ですか?

MacOS Sierra(10.12.2)でFFmpegバージョン3.2.2とLAME 3.99.5を使用していますが、MP3にエンコードするためにFFmpeg出力(FLACファイルから)をLAMEにパイプするコマンドがあります。

ffmpeg -y -v quiet -nostdin -i test.flac -b:a 320k -ac 2 -ar 44100 -f s16le -acodec pcm_s16le - | \
  lame --quiet -r -m s --lowpass 19.7 -V 3 --vbr-new -q 0 -b 96 --scale 0.99 --athaa-sensitivity 1 - test.mp3;

正常に動作し、結果には満足していますが、パイプのFFmpeg部分から-v quiet設定を削除すると、実際に何が起こっているかを確認できるため、出力に次のことがわかります。

Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
size=   81858kB time=00:07:55.18 bitrate=1411.2kbits/s speed=41.2x  

変換プロセス中にビットレートが1411.2kbitsとして表示され、設定されている-b:a 320kオプションから設定された320kのビットレートではないことに注意してください。

これは予想される動作ですか?そのビットレート設定が無視されているため、-b:a 320k -ac 2 -ar 44100を使用してRAW出力を介して出力をパイピングする場合、オーディオパラメータのチャンク全体(-f s16le -acodec pcm_s16le)は不要ですか?

2
JakeGould

これは予想される動作ですか?

はい、非圧縮フォーマットを出力する場合、ビットレート(-b:a)は無視されます。結果のビットレートは次のとおりです。

sample rate * bits per sample * number of channels = bitrate

だからあなたの場合:

44100 * 16 * 2 = 1411200 bits/s or 1411.2 kilobits/s

RAW経由で出力をパイピングする場合、オーディオパラメータ(-b:a 320k -ac 2 -ar 44100)のチャンク全体が不要ですか?

ビットレートは不要です。何らかの理由でチャンネル数やサンプルレートを変更したい場合は、-ac-arを維持できます(ただし、変更する必要はほとんどありません)。

6
llogan