Я извлек аудио и видео из mkv с помощью mkvextract. Затем я использовал mkvmerge, чтобы объединить их обратно в mkv. Когда я воспроизвел mkv, аудио и видео были рассинхронизированы.
Как мне объединить их так, чтобы они были синхронизированы? Я пытался найти какую-нибудь полезную информацию, используя mkvmerge в исходном файле, чтобы посмотреть, есть ли там какая-нибудь полезная информация, но ничего не нашел.
решение1
Вот простой рабочий процесс:
- Узнайте, насколько велика рассинхронизация с проигрывателем VLC, используя кнопки jи k.
- Загрузите
mkvtoolnix
и нажмите «Добавить файл». - Добавьте ваш видеофайл. После добавления нажмите на аудиофайл, и теперь вы можете добавить свою задержку. Проще говоря, используйте - или + и какую бы задержку вы ни использовали с vlc.
- Нажмите
mux now
. Готово :)
решение2
Возможно, что в исходном файле указана задержка звука. Если вы используете mkvmerge GUI, вы можете изменить задержку аудиодорожки вПараметры форматаtab. Положительные значения задерживают звуковую дорожку, отрицательные значения продвигают ее вперед (все в миллисекундах). Если вы используете командную строку, вам нужно использовать аргументы -y
or --sync
. Смотритедокументация mkvmergeдля получения подробной информации. В документации также показано, как равномерно масштабировать задержку звука по всему видео (вместо установки постоянной задержки).
Чтобы определить необходимую вам задержку звука, вы можете использовать Media Player Classic вместе с клавишами +/- для определения задержки. В качестве альтернативы вы можете попробовать использовать инструмент информации о медиа, чтобы увидеть, какая задержка была в исходном файле.
решение3
В командной строке mkvmerge это выглядит так:
mkvmerge --verbose -o output.mkv -y 1:1000 input.mkv
где
- 1 — это номер трека, его можно узнать с помощью
mkvinfo
илиmediainfo
(последний добавляет 1 к номеру трека, т.е. использует естественный подсчет, начиная с 1). В большинстве случаев это будет 1 для первой звуковой дорожки. - 1000 — это задержка в мс (миллисекундах), то есть 1000 — это 1 секунда.
Кстати, --verbose
это может помочь вам выяснить, что именно происходит и почему все рассинхронизировано.