Я использую libopus для кодирования входного файла pcm
в поток битов bit
. Процесс довольно обыденный:
- Создание кодировщика: вызов
opus_encoder_create
- Циклический просмотр входного файла
pcm
(в двоичном режиме) путем чтения фрагментов определенного размера кадраи закодировать их, используя opus_encode
- Записать закодированный вывод, фрагмент за фрагментом, в файл битового потока
Поскольку я управляю всеми из следующих параметров:
- частота дискретизации (от звонка до
opus_encoder_create
) - голосовые каналы (от звонка до
opus_encoder_create
) - тип приложения (от звонка до
opus_encoder_create
) - битрейт (от вызова до
opus_encoder_ctl
) - размер кадра
Мне было интересно почему вывод (полученный двоичный файл) отличается в Linux (clang & Ubuntu) и windows (clang или cl в VS2019):
- Есть ли еще параметры для кодировщика, которые я должен рассмотреть?
- есть внутренние различия, которые мешают либопусу вести себя согласованно на разных платформах?
- существует ли известный набор инструментов, который работаетпоможет мне проверить мой код? В настоящее время я использую ctl-вызовы с GET_BITRATE и т. д., чтобы узнать, какие настройки были применены к кодировщику