Что касается возможностей установки битовой глубины: это зависит от ваших исходных файлов и вашего выходного формата.
Например, возьмите pcm_s16le
и pcm_s24le
- оба будут отображать файлы PCM, но с глубиной 16 бит / 24 бита соответственно. (Вы можете найти эту информацию с помощью ffmpeg -h encoder=<YOUR_ENCODER>
.)
Если у вас есть формат, который может принимать несколько битов (например, libmp3lame
), FFmpeg по умолчанию определит используемое значение, посмотрев на исходный файл: так что если вы берете -c:a libmp3lame
и ваш входной файл имеет бит- глубина 16 бит, тогда FFmpeg будет использовать 16 бит. Если у вас есть 32-битный файл и вы хотите закодировать его в кодек, который может содержать только 16 бит, то FFmpeg сэмплирует его для вас.
Но вы также можете указать это самостоятельно, используя -sample_fmt
.
Что касается вашей формулы битрейта: FFmpeg, как и практически все другие инструменты, видит количество аудиоканалов, битовую глубину и частоту дискретизации как фиксированные значения (то есть, они не изменятся внутри файла), а битрейт переменная, которая соотносится с качеством кодирования. Это, однако, верно только для кодеков с потерями; поэтому повторное кодирование WAV-файла 200 раз не будет иметь значения, в то время как повторное кодирование тех же файлов 20 раз с довольно приличным MP3-кодером уже может привести к невыносимым результатам.
Кодеки с потерями повышают качество в вашем уравнении: например, в MP3, значение 320k
будет очень хорошим качеством, так как кодировщику не нужно будет сбрасывать много информации, чтобы оставаться в пределах указанных значений. Если бы вы использовали -b:a 64k
, кодировщику пришлось бы отбросить много информации для достижения указанной скорости передачи. Кодеры будут уменьшаться настолько низко, насколько это необходимо для достижения скорости передачи в битах: очень тривиально и, следовательно, только теоретические примеры информации, которую можно отбросить:
- Если объединение всех частот от 8 до 16 кГц в одну полукомплексную синусоидальную волну приведет к тому, что кодер достигнет скорости передачи в битах, он сделает это.
- Если удалить каждый сигнал ниже -32dB, то получится.
Для некоторого реального объяснения того, какая информация будет отброшена, я предлагаю вам начать с чтения статьи Википедии о сжатии аудио-данных.