Имеют ли значение битрейт аудиосигнала, аудиоканал и частоты дискретизации звука в FFmpeg при передаче вывода RAW в другой процесс?

608
JakeGould

Я использую FFmpeg версии 3.2.2 и LAME 3.99.5 в macOS Sierra (10.12.2), и у меня есть эта команда, которая перенаправляет вывод FFmpeg (из файла FLAC) в LAME для кодирования в MP3:

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; 

Он работает нормально, и я доволен результатами, но когда я удаляю -v quietнастройку из части канала FFmpeg, чтобы я мог видеть, что происходит, я замечаю следующее в выводе:

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во время процесса преобразования, а не как установленный битрейт в 320 Кбайт из установленного -b:a 320kпараметра.

Это ожидаемое поведение? Является ли весь этот фрагмент аудиопараметров ( -b:a 320k -ac 2 -ar 44100) излишним, когда используется конвейерный вывод через выход RAW, -f s16le -acodec pcm_s16leпоскольку эта настройка битрейта игнорируется?

1

1 ответ на вопрос

4
LordNeckbeard

Это ожидаемое поведение?

Да, битрейт ( -b:a) игнорируется при выводе несжатого формата. Результирующий битрейт:

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

Так что в случае с вами:

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

Является ли этот кусок аудиопараметров ( -b:a 320k -ac 2 -ar 44100) лишним при передаче по RAW

Битрейт лишний. Если вы хотите изменить количество каналов или частоту дискретизации по какой-либо причине, которую вы можете сохранить -acи -ar(но вам, вероятно, никогда не понадобится).

Похожие вопросы