Вопрос или проблема
Мне нужно преобразовать демо Dolby 5.1 surround в M2TS (H264-AC3) в WebM (VP9-Opus).
Я нашел двухэтапный процесс для этого здесь:
https://gist.github.com/vielhuber/cf918eed2b5cc9eaa63f
Первая команда выполняется успешно с громким и правильным панорамированием для 5.1 surround:
ffmpeg -i dolbyTest-Win10-Final.m2ts -vcodec libx264 -crf 20 -acodec ac3 -vf "yadif" test.mp4
К сожалению, в то время как второй шаг выполняется успешно и создает громкий звуковой сигнал, он портит панорамирование перед/зад:
ffmpeg -i test.mp4 -af "channelmap=channel_layout=5.1" test2.webm
Я пытался использовать различные настройки, чтобы исправить ошибку на втором шаге, но панорамирование перед/зад всегда неправильное.
Есть ли лучшие настройки/параметры, которые я могу использовать на втором шаге, чтобы получить правильное панорамирование колонок?
ССЫЛКИ:
https://scribbleghost.net/2022/12/29/convert-audio-to-opus-with-ffmpeg/
https://ffmpeg.org/ffmpeg.html#Advanced-Audio-options
ПРИМЕЧАНИЕ:
Вы можете просмотреть мои правки, если хотите. Я просто пытаюсь сделать этот вопрос более понятным, поскольку теперь половина проблемы кажется решенной.
Ответ или решение
Конвертация файлов M2TS или MPG с многоканальным звуком 5.1 в формат WebM с минимальной потерей качества аудио — это задача, которая требует внимательного подхода к обработке и настройке аудиотреков. Рассмотрим пошагово, как можно оптимизировать процесс с использованием FFmpeg, и избежать проблем с панорамированием звука.
Задача и Проблемы
Вы хотите конвертировать файл с кодеками H.264 и AC3 в новый файл с кодеками VP9 и Opus, при этом сохранив правильное распределение звука по каналам для 5.1 аудиосистемы. Возникает проблема, связанная с искажением переднего и заднего панорамирования звука после второго этапа конверсии.
Процесс Конвертации
Чтобы произвести эффективную конвертацию, следуйте следующим шагам:
-
Исходное преобразование видеофайла:
ffmpeg -i dolbyTest-Win10-Final.m2ts -map 0:v -vcodec libvpx-vp9 -crf 30 -b:v 0 -pix_fmt yuv420p -vf "yadif" video.webm
Здесь мы использовали кодек libvpx-vp9 для видео, что обеспечит совместимость с WebM. Параметры
crf
иb:v
регулируют качество и битрейт. -
Извлечение и преобразование аудио с точной настройкой каналов:
ffmpeg -i dolbyTest-Win10-Final.m2ts -map 0:a -acodec libopus -ac 6 -b:a 320k -af "channelmap=6.0,pan=5.1:FL=0.7*FL+0.3*SL:FR=0.7*FR+0.3*SR:FC=FC:LFE=LFE:SL=0.3*FL+0.7*SL:SR=0.3*FR+0.7*SR" audio.webm
В данном случае, используем кодек libopus и панорамную настройку
channelmap
для преобразования аудио в формат 5.1. Эта настройка помогает избежать потери при панорамировании. -
Объединение видео и аудио в один файл:
ffmpeg -i video.webm -i audio.webm -c copy final_output.webm
Рекомендации
- Тестирование результатов: Каждый из этапов требует тестирования для обеспечения, что аудио сохраняет правильное позиционирование для каждого канала. Используйте инструменты анализа аудио, чтобы проверить распределение звука.
- Настройки кодеков: Обязательно учитывайте параметры кодеков
crf
иb:a
, которые влияют на качество и размеры итогового файла. - Адаптация под оборудование: Протестируйте финальный файл на оборудовании, которое будет использоваться для воспроизведения, чтобы убедиться в корректности звучания.
Заключение
Следуя вышеописанным рекомендациям и настройкам, вы сможете успешно конвертировать файл в формат WebM с минимальной потерей качества звука. Если возникнут трудности, рекомендуется обратиться к документации FFmpeg или специализированным форумам для получения дополнительной поддержки.