FFmpeg сплит видео и слияние

Я пытаюсь использовать FFmpeg для разделения видео на основе некоторых входов start_time и end_time и заменять их другими видеофайлами. Например, для входа 10 15 мне нужно будет заменить EXACT секунд 10 to 15 другим видео.

ОК. Что мне приходит в голову:

  1. Сначала разделите видео (в данном случае 0-10, 10-15 и 15-end)
  2. Замените 10-15 другим видео
  3. Слейте все суб-видео назад

Первый вопрос: это лучшее и быстрое решение? У нас есть более легкая команда или другие инструменты для замены определенного периода времени в видео с другим видео?

Второй вопрос: Предполагая, что FFmpeg является жизнеспособным решением, когда я просто использую команду ffmpeg -I input.video -ss 10 -t 5 -c copy output.mp4 , мой код обработки видео не может читать и обрабатывать файл. Я использовал инструмент mediainfo для сравнения двух файлов и заметил различия в размерах заголовков, в то время как все связанные с видео кодеком вещи были одинаковыми. Я заметил, что размер HEADER SIZE отличается, что, по-видимому, вызывает проблему. Есть ли способ заставить размер заголовка также (помимо кодеков) быть одинаковым?

UPDATE: вот оригинальный .mp4 файл, который отлично работает в эмуляторе.

  • Так как вы не можете писать FFMpeg в stdout с flv в mp4, есть ли обходной путь?
  • FFMPEG конвертирует flv в mp4 без потери качества
  • Есть ли способ мягко вставлять субтитры в файл mp4 без повторного кодирования?
  • Какую команду FFmpeg я использую для перехода через FLV в MP4?
  • Какой самый простой способ сохранить GIFV как простой GIF?
  • Точно вырезать видео файлы из командной строки
  • Любой способ восстановить поврежденный mp4?
  • FFMPEG разделяет MP4 с тем же качеством
  • One Solution collect form web for “FFmpeg сплит видео и слияние”

    Использование файлов trim и concat файлов с различными кодеками

    Для этого убедитесь, что ваши отдельные файлы имеют одинаковое разрешение и, в идеале, такую ​​же частоту кадров и выборку поддиапазонов и т. Д. Это предотвратит ошибки или сбои во время конкатенации.

    Вы можете делать все за один раз, не разбивая файл, используя фильтры trim и concat :

     ffmpeg -i edv_g24.mp4 -i short-video.mp4 -filter_complex "\ [0:v]trim=0:10,setpts=PTS-STARTPTS[v0]; \ [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; \ [0:v]trim=15:30,setpts=PTS-STARTPTS[v2]; \ [v0][v1][v2]concat=n=3:v=1:a=0[out]" \ -map "[out]" output.mp4 

    Здесь trim используется для указания отдельных частей входных видеопотоков ( 0:v , 1:v ), которые вы позже хотите объединить. Эти части называются от v0 до v2 . (Фильтр setpts сбрасывает временные метки этих отдельных частей на 0, что требуется для конкатенации). Позже мы объединим три части.

    Если вы хотите обрезать с определенной отметки времени до конца, используйте trim=start=15 вместо указания диапазона.

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

     ffmpeg -i edv_g24_2.mp4 -i short-video.mp4 -filter_complex "\ [0:v]trim=0:10,setpts=PTS-STARTPTS[v0]; \ [0:a]atrim=0:10,asetpts=PTS-STARTPTS[a0]; \ [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; \ [1:a]atrim=0:5,asetpts=PTS-STARTPTS[v1]; \ [0:v]trim=15:30,setpts=PTS-STARTPTS[v2]; \ [0:a]atrim=15:30,asetpts=PTS-STARTPTS[a2]; \ [v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[outv][outa]" \ -map "[outv]" -map "[outa]" output.mp4 

    Обратите внимание, что видео и аудио будут перекодированы в этом случае – обязательно укажите соответствующие целевые показатели качества вывода (например, -crf для x264, x265 или libvpx-vp9). Подробнее об этом можно узнать в Wiki FFmpeg, например, для VP9 или H.264 .

    Использование отдельных сегментов

    Если вы хотите разбить клипы и позже собрать их:

     ffmpeg -i edv_g24.mp4 -ss 0 -to 10 -c copy part1.mp4 ffmpeg -i edv_g24.mp4 -ss 10 -to 15 -c copy part2.mp4 ffmpeg -i edv_g24.mp4 -ss 15 -c copy part3.mp4 ffmpeg -i part1.mp4 -i short-video.mp4 -i part3.mp4 -filter_complex \ "[0:v][1:v][2:v]concat=n=3:v=1:a=0[outv]" \ -map "[outv]" -t 30 output.mp4 

    Если файлы имеют аудио, используйте тот же подход, что и выше:

     ffmpeg -i part1.mp4 -i short-video.mp4 -i part3.mp4 -filter_complex \ "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \ -map "[outv]" -map "[outa]" -t 30 output.mp4 

    Это снова приведет к повторному кодированию видеопотока. Это немного более просто, но в противном случае это должно быть эквивалентно вышеупомянутому методу.

    Использование concat demuxer

    В принципе вы также можете попытаться объединить потоки битов без их повторной кодировки, используя concat demuxer. Создайте файл concat.txt и добавьте следующие записи (соответствующие созданным выше видеоклипам):

     file 'part1.mp4' file 'short-video.mp4' file 'part3.mp4' 

    Затем объедините эти отдельные файлы:

     ffmpeg -f concat -i concat.txt -c copy output.avi 

    Однако это требует, чтобы ваши клипы имели одинаковый кодек, разрешение, частоту кадров и т. Д. – поэтому он не работает со всеми видами гетерогенных источников.

    Использование протокола concat

    Вышеупомянутый тип конкатенации уровня файла может быть достигнут с использованием протокола concat , с теми же ограничениями, что и выше (тот же кодек, разрешение и т. Д.):

     ffmpeg -i "concat:part1.avi|part2.avi|part3.avi" -c copy output.mp4 

    Для получения дополнительной информации о конкатенации прочитайте соответствующую страницу Wiki FFmpeg .

    Interesting Posts

    Почему мои параметры размера страницы в Word 2013 отличаются от других параметров размера страницы Word 2013?

    Преобразовать маршрутизатор в коммутатор?

    Как настроить звук для отключения звука по умолчанию, но автоматически «отключать звук», когда я подключаю наушники в Windows 7?

    Измените Windows "Swappiness"

    Завершение табуляции для аргументов команды не работает в Cygwin из-за суффикса `.exe`

    Почему .ISO называется .ISO?

    Обновление Windows 10 Offline

    Как закрыть компьютер с определенным IP-адресом?

    Условное форматирование: 3 цветовая шкала, отображающая актуальность текста в Excel для Mac

    Использовать загрузочный vhd с Virtualbox

    Как я могу вернуть лицензию Microsoft, поставляемую с компьютером Dell?

    Как я могу проверить, правильно ли работает nginx обратный прокси + apache?

    Есть ли другой вариант для Picasa с аналогичной простотой использования и простотой?

    Является ли PCI x16 и PCI Express 2.1 одинаковым?

    Mount dev, proc, sys в среде chroot?

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