Может ли ffmpeg конвертировать аудио из необработанного PCM в WAV?

Я могу преобразовать файл WAV в PCM

ffmpeg -i file.wav -f s16le -acodec pcm_s16le file.pcm

Как я могу отменить эту операцию?


person xXx_CodeMonkey_xXx    schedule 16.08.2012    source источник
comment
вы должны иметь возможность использовать -acodec copy right?   -  person rogerdpack    schedule 14.04.2014


Ответы (3)


Контейнер wav просто добавляет простой заголовок к необработанным данным PCM. Заголовок включает формат, частоту дискретизации и количество каналов. Поскольку необработанные данные PCM не включают эту информацию, вам нужно будет указать ее в командной строке. Параметры указываются перед файлом, к которому они применяются, поэтому параметры перед входным файлом могут использоваться для указания формата входного файла, а параметры после входного файла и перед выходным файлом могут использоваться для указания желаемого формата вывода. файл. Если вам нужны те же биты / выборка, частота дискретизации и количество каналов в выходном файле, то в этом случае вам не нужны никакие параметры вывода; формат контейнера wav уже обозначен расширением файла.

Пример преобразования необработанного PCM в WAV:

ffmpeg -f s16le -ar 44.1k -ac 2 -i file.pcm file.wav
  • -f s16le… подписанные 16-битные примеры с прямым порядком байтов
  • -ar 44.1k… частота дискретизации 44,1 кГц
  • -ac 2… 2 канала (стерео)
  • -i file.pcm… входной файл
  • file.wav… выходной файл
person mark4o    schedule 16.08.2012
comment
А как насчет работы в обратном направлении (из PCM в WAV)? - person mustafa.yavuz; 18.07.2013
comment
@ mustafa.yavuz: Это операция преобразования PCM в WAV. - person bos; 02.03.2016
comment
@bos, я думаю, @ mustafa.yavuz просил обратное (WAV в PCM). Тогда ничего особенного, подойдет просто ffmpeg -i file.wav file.pcm, поскольку вся информация, необходимая для преобразования, находится в заголовке файла wav. - person neevek; 13.04.2016
comment
Я споткнулся о параметре -f. Пытался использовать одно значение из ffmpeg -sample_fmts. Правильные значения такие же, как в ответе Барни. - person Pablo H; 06.04.2020

Будьте осторожны с форматом данных RAW

-f u8 - это беззнаковый 8 бит, s16 подписан на случай, если есть другие

 $ ffmpeg -formats | grep PCM
 DE alaw            PCM A-law
 DE f32be           PCM 32-bit floating-point big-endian
 DE f32le           PCM 32-bit floating-point little-endian
 DE f64be           PCM 64-bit floating-point big-endian
 DE f64le           PCM 64-bit floating-point little-endian
 DE mulaw           PCM mu-law
 DE s16be           PCM signed 16-bit big-endian
 DE s16le           PCM signed 16-bit little-endian
 DE s24be           PCM signed 24-bit big-endian
 DE s24le           PCM signed 24-bit little-endian
 DE s32be           PCM signed 32-bit big-endian
 DE s32le           PCM signed 32-bit little-endian
 DE s8              PCM signed 8-bit
 DE u16be           PCM unsigned 16-bit big-endian
 DE u16le           PCM unsigned 16-bit little-endian
 DE u24be           PCM unsigned 24-bit big-endian
 DE u24le           PCM unsigned 24-bit little-endian
 DE u32be           PCM unsigned 32-bit big-endian
 DE u32le           PCM unsigned 32-bit little-endian
 DE u8              PCM unsigned 8-bit
person barney    schedule 12.09.2016

Код ниже должен работать:

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav
person Jerry Dai    schedule 23.06.2017
comment
Этот ответ является идентичной копией ответа @olegog выше. - person M.T; 13.08.2019