У меня возникла проблема с воспроизведением некоторых контейнеров MKV (89 штук, общим объемом 196,3 ГБ).

Аудио + видео кодируются со скоростью 25 кадров в секунду, но сабвуферы полностью не синхронизированы - они кодируются со скоростью 23,976 кадров в секунду.

Мой вопрос: могу ли я в любом случае изменить / перекодировать частоту кадров в этих фильмах до 23,976?

3 ответа3

1

не нужно кодировать и терять качество, по крайней мере, для окон. Используйте программное обеспечение для редактирования субтитров, перейдите к синхронизации, измените частоту кадров с одного из ваших оригинальных субтитров на все, что захотите, затем сохраните в новый синхронизированный субтитр.

1

Как говорили люди в комментариях, правильный способ решить проблему, которую вы на самом деле пытаетесь решить, - это настроить субтитры или сказать своему игроку, что они хотят получить другое скоростное видео. (Например, mpv --sub-fps 25 будет поддерживать переходы для шоу 25fps синхронно с его копией 24/1.001 fps.) (http://mpv.io/)

Но чтобы ответить на актуальный вопрос:

Вам не нужно перекодировать, чтобы изменить fps. К сожалению, ffmpeg не может ремукшироваться с новыми временными метками без перекодирования, но это ограничение дизайна ffmpeg. Кодирование видео происходит с потерями и очень медленно, поэтому не делайте этого.

Попробуйте mkvmerge --default-duration 0:24000/1001fps --fix-bitstream-timing-information 0 in.mkv -o out.mkv чтобы изменить FPS видео. Это не повлияет на синхронизацию звука, поэтому вы получите /v десинхронизацию. 0: выбирает дорожку 0 во входном файле, который, как я думаю, обычно является видео.

Вам нужно будет перекодировать аудио после обработки с помощью ускоряющего фильтра с сохранением высоты тона. Я обычно делаю это только во время воспроизведения с scaletempo фильтра масштабирования (mpv / mplayer)(mpv вставляет его автоматически). У ffmpeg есть фильтр atempo который, вероятно, добивается цели .

Так что смешайте замедленное аудио с видео 24/1.001fps, и у вас снова будет рабочий файл.

Я действительно не проверял все это, потому что обычно вам никогда не нужно это делать. Просто скажите своему игроку, для какой скорости подводные лодки. И вы даже можете использовать mpv --speed 25025/24000 -subfps 25 myfile.mkv для воспроизведения видео «на лету» со скоростью 25fps, если у вас есть копия британского шоу 24/1.001 fps, которая изначально была 25fps, и Вы хотите воспроизвести его на оригинальной скорости с постоянным звуковым ускорением.

-1

Вы можете попробовать перекодировать видео и аудио с другой частотой кадров, сохранив субтитры такими, как они есть:

ffmpeg -i input.mkv -c:v libx264 -crf 21 -c:a aac -strict experimental -b:a 128k -r 23.98 -c:s copy output.mkv

CRF устанавливает качество видео. Выберите что-нибудь ниже для еще лучшего качества, например 18. 23 по умолчанию для x264.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .