Добавьте поток, используя ffmpeg, не создавая новый файл

У меня есть несколько видео (.mp4), которые были помечены метаданными (описания, обложки, исполнители и т. Д.), И теперь у меня есть файлы субтитров для них, которые я хочу добавить в качестве потока.

Я могу использовать ffmpeg и установить как видео, так и файл .srt качестве входных данных и получить новый выходной файл, но на выходе всегда, кажется, теряются все метаданные уровня контейнера, и иногда это раздражает, всегда возвращаясь и удаляя исходные файлы.

  • Как извлечь субтитры из видео с помощью ffmpeg?
  • Удалить встроенные субтитры из файла .mkv?
  • Есть ли способ мягко вставлять субтитры в файл mp4 без повторного кодирования?
  • Есть ли способ, чтобы я мог добавить файл субтитров в качестве нового потока в видеофайл без создания нового файла? Просто изменив исходный видеофайл?

    Программы вроде Subler, похоже, делают это, но, из интереса, можно ли это сделать из командной строки?

  • Сжатие FFmpeg CRF медленнее на главной, чем в старой версии
  • Как ffmpeg определяет отдельные битрейты потока?
  • Как изменить размер видео, чтобы уменьшить его с помощью FFmpeg
  • Какова команда вырезать часть из видео и сохранить ее с помощью ffmpeg?
  • Как отображать текущее время с файлом ffplay.exe?
  • Gpaste получить как STDIN для youtube-dl
  • One Solution collect form web for “Добавьте поток, используя ffmpeg, не создавая новый файл”

    Вы не можете редактировать файл с помощью ffmpeg – ему всегда нужно создать новый выходной файл. Я думаю, что это значение по умолчанию для практически любой программы, и во многих случаях выходной файл должен быть доступен для поиска и редактироваться программой во время записи. *

    Если реальная проблема заключается в том, что вы теряете метаданные, попробуйте:

     ffmpeg -i input.mp4 -i subtitles.srt \ -c copy -c:s mov_text \ -map 0 -map 1 -map_metadata 0 output.mp4 

    Вам нужно, чтобы ffmpeg конвертировал SRT (SubRip) в MP4-совместимые субтитры с -c:s mov_text , иначе ffmpeg отказывается копировать поток. **

    Параметр -map_metadata должен копировать все глобальные метаданные из входного файла MP4 на выход, то есть все, что вы установили на уровне контейнера. Метаданные уровня битового потока должны быть скопированы автоматически без каких-либо дополнительных параметров.

    * Конечно, программы, такие как sponge из moreutils, могут «впитывать» вход и перезаписывать файл на месте, но это работает только с мультиплексорами, которые поддерживают выход без поиска, и, следовательно, не с MP4.
    ** Есть проблемы с mov_text закодированными mov_text и проигрывателем QuickTime, см. Билет FFmpeg # 1845, а также # 2488 .

    Давайте будем гением компьютера.