Я пытаюсь использовать FFmpeg для создания списка воспроизведения HLS, который содержит несколько звуковых воспроизведений, но я не могу синхронизировать аудио и видео дорожки. Вот сценарий:
Предположим, у меня есть 2 видео файла, каждый с 1 звуковой дорожкой
Я использую FFmpeg, чтобы объединить 2 видео в одно видео, например:
Извлеченная звуковая дорожка для каждого файла (транскодируется как .mp3)
Я хочу создать список воспроизведения HLS, где альтернативные звуковые дорожки - соответственно левый и правый аудио:
Проблема в том, что я не могу правильно синхронизировать звук с видео . Я попробовал пару команд ffmpeg, каждая наивная на своем уровне, и в лучшем случае я получаю синхронизированный поток на рабочем столе, но на мобильном телефоне (где воспроизведение обрабатывается собственным проигрывателем устройства), видео теряет синхронизацию со звуком очень быстро, как только я переключаюсь на другую видео дорожку.
Я использую ffmpeg 3.1.1 .
Пример команды, которую я попробовал, начиная с относительно простой, где я отображаю звуковые дорожки на segmenterмультиплексор, а видео на hls:
Я не эксперт по аудио / видео, поэтому я почти уверен, что в моих рассуждениях есть что-то принципиальное, поэтому я прошу вас, ребята, о помощи и руководстве. Особенно:
То, что я пытаюсь сделать здесь, неосуществимо? Еще один способ выразить это дано N звуковых дорожек, записанных синхронно с исходным видео, для создания списка воспроизведения HLS с аудио всегда синхронизированным по губам?
Является ли битрейт видео FPS & Audio причиной проблемы аудио / видео синхронизации? Есть ли даже корреляция?
Влияет ли разный уровень качества видео (например, битрейт) на синхронизацию?
Повлияет ли выбранный аудиоконтейнер (mp3 vs aac) на синхронизацию?
Должен ли я использовать одну команду с несколькими входами или работать с каждым потоком отдельно?
Как вы видите, я совсем растерялся. Я много занимался поиском в Интернете, смотрел выступление Apple «Эффективный HLS» на WWDC 2012, но информация о том, как создавать эффективные списки воспроизведения Multiple Audio Rendition, в Интернете, похоже, скудна.
Спасибо за любые указатели.
1 ответ на вопрос
4
Alfredo Di Napoli
Я нашел решение сам.
Проблема состоит в том, что segmentмультиплексору необходимо просматривать некоторые опорные кадры, чтобы иметь возможность правильно нарезать аудио, поэтому отображение потоков по отдельности не будет работать.
Что будет работать, так это создать сегмент «beefy» .ts, который включает все аудио и видео файлы, а затем нарезать их соответствующим образом. Простой, но работающий пример: