avconv: Как объединить несколько файлов FLV (видео в кодировке h264, аудио в кодировке adpcm_swf)?

Я хочу объединить несколько файлов .flv (каждый из которых имеет кодировку h264/adpcm_swf с одинаковыми настройками). В идеале хотелось бы добавить что-то типа выреза между файлами - черного экрана на 1-2 секунды хватило бы.

Я пробовал использовать протокол "concat" avconv, например:

avconv -i concat:1.flv\|2.flv\|3.flv result.flv

Это дает мне результат, который содержит только содержимое 1.flv и, похоже, перекодирован с настройками flv по умолчанию. Это можно было бы сделать, указав соответствующие параметры вывода, но теоретически должна быть возможность объединить файлы без особого перекодирования?

Моя версия avconv:

avconv version 0.8.6-6:0.8.6-0ubuntu0.12.10.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:16 with gcc 4.7.2
avconv 0.8.6-6:0.8.6-0ubuntu0.12.10.1
libavutil    51. 22. 1 / 51. 22. 1
libavcodec   53. 35. 0 / 53. 35. 0
libavformat  53. 21. 1 / 53. 21. 1
libavdevice  53.  2. 0 / 53.  2. 0
libavfilter   2. 15. 0 /  2. 15. 0
libswscale    2.  1. 0 /  2.  1. 0
libpostproc  52.  0. 0 / 52.  0. 0

person Jost    schedule 12.04.2013    source источник


Ответы (2)


Вы можете использовать ffmpeg для объединения фильмов. Сначала проверьте, установлен ли у вас ffmpeg, запустив ffmpeg. Если первая строка заканчивается словами «разработчики FFmpeg», все в порядке. Если это «разработчики Libav», то ffmpeg является тайным псевдонимом avconv (это имеет место в Ubuntu). Если у вас нет ffmpeg и настоящего ffmpeg нет в вашем репозитории, вам придется скомпилировать ffmpeg самостоятельно.

Теперь, когда у вас есть настоящий ffmpeg, создайте файл inputs.txt со следующим текстом:

file 1.flv
file 2.flv
file 3.flv

и запустите:

ffmpeg -f concat -i inputs.txt -c copy result.flv
person bcmpinc    schedule 05.07.2013
comment
Это означает, что у вас есть avconv и ffmpeg определены как псевдоним для avconv. Загрузите исходный код ffmpeg с ffmpeg.org и скомпилируйте его самостоятельно, если хотите использовать метод, описанный выше. - person bcmpinc; 19.11.2013

Другой способ объединения файлов с помощью ffmpeg без необходимости сохранения всех имен файлов в txt-файле заключается в следующем:

ffmpeg -f concat -i <(for f in *.flv; do echo "file '$f'"; done) -c copy result.flv

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

person ispasov    schedule 14.08.2014