Как кодировать 32-битный ALAC из RAW с помощью FFmpeg
Попытка сжать 32-битный сигнал с плавающей запятой (необработанный двоичный код). FLAC отсутствует, потому что он идет только до 24 бит на семпл. ALAC может обрабатывать 32 бита на выборку.
Я могу кодировать напрямую из RAW в ALAC с помощью следующей команды:
ffmpeg -f f32le -ar 4000 -ac 1 -i ts1.raw -acodec alac ts1.m4a
Обратите внимание, что это работает с любым файлом данных.
Я попытался установить 32-битный размер выборки с -sample_fmt s32p
но он всегда печатает сообщение:
[alac @ 0x55dbbcc98a00] encoding as 24 bits-per-sample
Декодирование выполняется:
ffmpeg -i ts1.m4a -f f32le -ar 4000 -ac 1 tsa.raw
Я проверяю, загрузив начало и конец необработанных файлов (ts1.raw
против tsa.raw
) с Numpy (Python) и обратите внимание, что потеря точности отсутствует. Результат ближе к 16-битному, но более точный (24-битный имеет смысл). Так что в основном я получаю файл, содержащий 24-битные числа с плавающей точкой, преобразованные в 32-битные (сжатие с потерями)!
Как я могу кодировать файл со сжатием без потерь (для данных формы сигнала) размером 32 бита на образец?
1 ответ
согласно https://support.apple.com/en-ca/HT212183 сказано, что the entire Apple Music catalog is now also encoded using ALAC in resolutions ranging from 16-bit/44.1 kHz (CD Quality) up to 24-bit/192 kHz
Боюсь, вы не сможете получить 32-битный аудиофайл.