Попытка сжать 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
vs tsa.raw
) с помощью Numpy (Python), и замечаю, что точность снижается. Результат ближе к 16-битному, но более точный (24-битный имеет смысл). Так что в основном я получаю файл, содержащий 24-битные числа с плавающей точкой, преобразованные в 32-битные (сжатие с потерями)!
Как я могу закодировать файл со сжатием без потерь (для данных формы сигнала) со скоростью 32 бита на выборку?