Вопрос или проблема
Когда я запускаю следующую команду на видеофайле, я теряю встроенные субтитры.
ffmpeg.exe -i INPUT.mp4 -c copy OUTPUT.mp4
Мне нужно что-то добавить, чтобы не потерять субтитры, если они присутствуют?
Я обычно запускаю эту команду на своих файлах перед воспроизведением на медиаплеере Roku.
Если вы добавите -map 0
к команде, это, похоже, сохранит все дорожки, включая субтитры:
ffmpeg -i input.mkv -map 0 -c copy output.mkv
Ответ или решение
Когда вы выполняете команду FFmpeg для изменения формата или копирования видео, основная цель зачастую заключается в том, чтобы сохранить как можно больше исходных характеристик файлов, включая видео, аудио и субтитры. В ситуации, когда вы используете команду:
ffmpeg.exe -i INPUT.mp4 -c copy OUTPUT.mp4
возможная потеря встроенных субтитров объясняется тем, что FFmpeg по умолчанию не выбирает все дорожки (аудио, видео и субтитры) из входного файла, если вы явно не укажете это.
Что происходит с субтитрами?
При выполнении вашей команды FFmpeg копирует только первую дорожку каждого типа. Это значит, что если в вашем видеофайле присутствуют встроенные субтитры, но они не являются первой дорожкой (например, если первая дорожка — это видео, а вторая — аудио), они не будут скопированы в выходной файл. В итоге, вы получите файл без встроенных субтитров.
Как избежать этой проблемы?
Чтобы гарантировать, что все дорожки, включая субтитры, будут сохранены в новом файле, необходимо использовать опцию -map
. Команда:
ffmpeg -i input.mkv -map 0 -c copy output.mkv
включает все дорожки (0 – это индекс входного файла и -map 0
указывает на выбор всех дорожек) и завершает задачу без потери данных.
Преимущества использования -map
- Сохранение всех дорожек: Опция
-map 0
позволяет вам сохранить как видео, так и аудио, а также все субтитры, что делает этот подход универсальным решением. - Удобство: Для пользователей, таких как вы, которые часто производят преобразование медиафайлов для воспроизведения на устройствах, таких как Roku Media Player, это облегчает настройку и исключает необходимость в дальнейших преобразованиях.
- Эффективная работа с форматом: FFmpeg отлично справляется с форматами, такими как MKV, которые могут содержать несколько потоков однотипных данных.
Заключение
Потеря встроенных субтитров при использовании FFmpeg может быть легко предотвращена путем добавления параметра -map 0
к вашей команде. Это гарантирует, что все дорожки из исходного файла будут скопированы в выходной. Учтите, что без указания этого параметра FFmpeg будет передавать только первую дорожку, что может привести к неожиданным результатам. Теперь вы знаете, как сохранить субтитры при преобразовании видеофайлов с помощью FFmpeg, и можете использовать это знание для оптимизации вашего рабочего процесса.