]> Sergey Matveev's repositories - stargrave-blog.git/commit
Кодирование 5.1 звука фильма в Opus
authorSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2020 10:11:34 +0000 (13:11 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2020 10:11:34 +0000 (13:11 +0300)
commit6bb40498db36dcdede16742fc944468c954dae76
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent870b1a022b98cb33fd53b09f735c7f1d6a806041
Кодирование 5.1 звука фильма в Opus

Если сделать дамп аудио ffmpeg-ом (теперь только им занимаюсь темой
кодирования!) в PCM файл, потом его сжать opusenc-ом, то после сведения
в контейнер с видео, каналы явно на слух становятся другими,
перетасоваными. С ходу у меня так и не получилось ffmpeg заставить
дампить в другом виде (перевернуть, чтобы после Opus-а всё встало на
свои места). С ходу я не очень понял как конкретно они тасуются, чтобы
каким-нибудь sox-ом поменять их вручную местами.

Но потом плюнул и вспомнил что FFmpeg же может родной libopus
использовать для кодирования. Немного шаманства каналами всё равно
придётся сделать, но кодирует он теперь без проблем в нужном порядке:

    -filter:a "channelmap=channel_layout=5.1" -mapping_family 1

При этом Opus определяет (и вне FFmpeg) что четыре канала типа
полноценных, а два не особо и применяет какую-то оптимизацию: в итоге
оно существенно экономит битрейт для двух каналов.