#audio #video #ffmpeg #video-encoding #mpv
#Аудио #Видео #ffmpeg #кодирование видео #mpv
Вопрос:
Я использую видеопроигрыватель MPV для перекодирования динамического списка воспроизведения медиафайлов.
Я передаю закодированный вывод MPV в FFMPEG и форматирую его для доставки в rtmp.
Однако список воспроизведения может содержать носители с несогласованными аудио и видео, т.е. звуковая дорожка может быть короче / длиннее видеодорожки.
Независимо от того, какой MPV будет выводить только то, что ему дано. Поэтому, если в моем медиафайле есть аудио длиной 1 секунду и видео длиной 2 секунды, он будет выводить медиапоток с точно таким же смещением, вместо того, чтобы генерировать нулевой звук или переходить к следующему элементу в списке воспроизведения при первом обнаружении активного окончания потока (eof).
Например, предположим, что в моем плейлисте было много проблемных носителей, где аудио и видео каждого файла были смещены:
Если я выведу этот медиапоток на сервер популярной потоковой службы, это может привести к заиканию и / или потере a / v синхронизации. Аналогично, если я выведу этот медиапоток в файл и воспроизведу его в MPV или другом видеопроигрывателе, результат будет выглядеть примерно так:
Я пытался исправить это в MPV всевозможными способами, используя все доступные соответствующие опции командной строки. Я даже написал пользовательский скрипт, который обнаруживает звук «eof» и переходит к следующему элементу в списке воспроизведения, но он недостаточно быстр и по-прежнему приводит к небольшим пропускам звука.
Так что моя единственная надежда — исправить это в ffmpeg. В случае нулевого аудио / видео мне нужен резервный или генеративный фильтр, который может заполнить эти пустые пробелы тишиной (аудио) или цветом / изображением (видео).
Я открыт для любых идей, и если мое понимание в a / v-кодировании немного не соответствует, пожалуйста, просветите меня.
Комментарии:
1. Если вы можете, перекодируйте непосредственно в ffmpeg, используя фильтр concat, который учитывает синхронизацию между сегментами.
2. к сожалению, использование mpv в качестве основного декодера жизненно важно.
3. Затем вам нужно посмотреть, как использовать фильтры tpad и aresample в mpv.