Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Пример преобразования raw 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... выходной файл

Ответ 2

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav

Ответ 3

Будьте осторожны с форматом данных 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

Ответ 4

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

ffmpeg -f s16le -ar 8000 -ac 2 -i out.pcm -ar 44100 -ac 2 out.wav