Я пытаюсь добавить текстовые субтитры в контейнер .mp4 с помощью ffmpeg:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4
Когда я пытаюсь запустить эту строку, появляется ошибка:
Количество потоковых карт должно соответствовать количеству выходных потоков.
Если я попытаюсь изменить mp4 на mkv (хотя mp4 поддерживает текстовые субтитры), например:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv
Он правильно отображает потоки, но выдает ошибку:
Кодер (идентификатор кодека 94210) не найден для выходного потока # 0.2
Когда я запускаю
ffmpeg -codecs
Я вижу, что кодек srt поддерживается как декодер и кодировщик, однако я не уверен, что используется для кодирования подпрограмм mp4 и mkv, и нужно ли мне включать его или компилировать отдельно.
-c:s copy
не с-c:s mov_text
.ПРИМЕЧАНИЕ. Это решение «записывает субтитры» в видео, так что каждый зритель будет вынужден их увидеть.
Используйте
libass
библиотеку (убедитесь, что в вашей установке ffmpeg есть библиотека в конфигурации--enable-libass
).Сначала преобразуйте субтитры в
.ass
формат:Затем добавьте их с помощью видеофильтра:
источник
libass
расширения, если они отсутствуют в системах Debian, с помощью `apt update && apt install libass-dev".Вы пытаетесь объединить субтитры в поток субтитров. Это просто, но для MP4 (или M4V) и MKV используется другой синтаксис. В обоих случаях вы должны указать видео и аудио кодек или просто скопировать поток, если вы просто хотите добавить субтитры.
MP4:
MKV:
источник
Контейнер MKV поддерживает видео и аудио кодеки практически все, а также поддерживает субтитры и меню DVD. Таким образом, вы можете просто скопировать кодеки из входного видео в выходное видео с помощью контейнера MKV с субтитрами. Сначала вы должны преобразовать SRT в формат субтитров ASS.
и вставлять субтитры задницы в видео
Также работал с файлом VMW.
см. вики-страницу Сравнение форматов контейнеров
источник
ffmpeg поддерживает
mov_text
кодировщик субтитров, который является почти единственным, поддерживаемым в контейнере MP4 и воспроизводимым iTunes, Quicktime, iOS и т. д.Ваша строка будет гласить:
ffmpeg -i input.mp4 -i input.srt -map 0:0 -map 0:1 -map 1:0 -c:s mov_text output.mp4
источник
Я попытался использовать MP4Box для этой задачи, но он не смог справиться с M4V, с которым я имел дело. Мне удалось внедрить SRT в виде мягких субтитров с помощью ffmpeg со следующей командной строкой:
ffmpeg -i input.m4v -i input.srt -vcodec copy -acodec copy -scodec copy -map 0:0 -map 0:1 -map 1:0 -y output.mkv
Как и вам, мне пришлось использовать выходной файл MKV - мне не удалось создать файл M4V.
источник
Я дам простой и общий ответ, который работает с любым количеством аудио и субтитров srt и учитывает метаданные, которые могут включать контейнер mkv . Таким образом, он даже добавит изображения, которые matroska может включать в качестве вложений (но не другие типы AFAIK), и преобразовать их в треки; вы не сможете смотреть, но они будут там (вы можете их демультиплексировать). Ах, и если в mkv есть главы, то в mp4 тоже.
Как видите, все дело в том
-map 0
, что FFmpeg сообщает о необходимости добавления всех дорожек, включая метаданные, главы, вложения и т. Д. Если есть нераспознанная «дорожка» ( mkv позволяет прикреплять файлы любого типа), она будет закончиться ошибкой.Вы можете создать простой пакет
mkv2mp4.bat
, если вы обычно это делаете, чтобы создать mp4 с тем же именем, что и mkv . Было бы лучше с контролем ошибок, другим именем вывода и т. Д., Но вы поняли.Теперь вы можете просто запустить
И он создаст "Видео с субтитрами и т.д.mp4" с максимальным количеством информации.
источник
Простой пример:
Замените только переменные linux
источник
Вот почему mkv - такой хороший контейнер, особенно теперь, когда он зрел:
источник