Как я могу преобразовать обычный WAV-файл в 4-битный WAV-файл, используя ffmpeg? - PullRequest
0 голосов
/ 13 февраля 2020

Я пробовал что-то вроде

C: \ ffmpeg \ ffmpeg -i "Blip_Select2.wav" - c: wav -sample_fmt u8 "Blip_Select2_8bit.wav"

но я не могу понять, как получить доступ к 4-битному преобразованию.

Я использую аудио для проекта c#, достаточно 4-битного, и я предпочитаю wav, поэтому мне не придется распространять возможно ограниченное использование декодера с моими файлами.

Редактировать . Я нашел решение с использованием другого программного обеспечения (см. Мой ответ ниже), но я принимаю ответ Маттиаса, поскольку он предоставил решение в соответствии с запросом, с помощью ffmpeg.

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Просто на голову, что -b 4 с sox, похоже, использует код MS ADPCM c, который кодирует разницу между выборками с использованием 4 битов. Если вы хотите получить похожий результат, используя ffmpeg, вы можете использовать:

ffmpeg -i sound.wav -codec:a adpcm_ms -f wav sound_4bit.wav
0 голосов
/ 14 февраля 2020

Хорошо, так что мне удалось найти решение для этого. Это отличная утилита командной строки, похожая на ffmpeg, называемая (Sound eXchange) SoX . Его можно найти здесь:

http://sox.sourceforge.net/

Командная строка, которая обеспечивает преобразование в 4-битный WAV, выглядит следующим образом:

sox "sound.wav" -b 4 "sound_4bit.wav"

It работает отлично, и я не заметил какого-либо падения качества, поскольку частота дискретизации все еще составляет 44100, а размер падает до 1/4.

Важное замечание. Это работает хорошо только в том случае, если ваш звук чистый и не записан слишком громко, например, правильно записанная голосовая речь (именно для этого я его использую), но также работает и для музыки c, если он не слишком громкий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...