Как объединить несколько (более двух) видео на Ubuntu?

Если вы хотите иметь возможность использовать команду apt-get с вашей программой, она должна быть в аптечном репозитории, чей url должен находиться в файле /etc/apt/sources.list. Вы можете узнать, как настроить свой собственный apt-репозиторий здесь.

1
задан 14 May 2018 в 03:16

5 ответов

Я использую mkvmerge для объединения нескольких файлов MP4 в один:

mkvmerge -o outfile.mkv infile_01.mp4 \+ infile_02.mp4 \+ infile_03.mp4
19
ответ дан 23 May 2018 в 19:47
  • 1
    Приятно, легко, быстро. Спасибо, что поделился – augusto 5 March 2017 в 18:10
  • 2
    Лучше использовать расширение .mkv для выходного файла, так как это контейнер Matroska, независимо от того, какое расширение вы даете. – haridsv 17 September 2017 в 10:27
  • 3
    Вот как установить mkvmerge: tipsonubuntu.com – Morgoth 31 January 2018 в 13:54

Вы можете сделать это с помощью ffmpeg:

ffmpeg -i concat:"input1.mp4|input2.mp4" output.mp4

справки и дополнительной информации

14
ответ дан 23 May 2018 в 19:47
  • 1
    Я попытался это сделать. Проблема в том, что она не дает должного качества. 1. Звуковые дорожки запутаны. 2. В видеодорожке есть некоторые помехи. – Dhruv Singal 16 June 2015 в 14:26
  • 2
    Я использовал его для более чем образца, результат высокого качества, возможно, качество исходного видео является проблемой? – Maythux 17 June 2015 в 08:58
  • 3
    Возможно, вы правы. Это решило проблему: askubuntu.com/a/637179/420614 – Dhruv Singal 18 June 2015 в 07:18
  • 4
    Не используйте протокол concat для объединения MP4. Он работает только с определенными форматами, с которыми не сталкиваются большинство обычных пользователей. Вместо этого используйте concat demuxer или concat filter . – LordNeckbeard 17 November 2017 в 22:11

Мой сценарий, только в bash и ffmpeg. Перекодирует файлы, указанные в командной строке, в один.

Требует, чтобы файлы имели одинаковое разрешение. Принимает разные вращение метаданных, которых нет в ffmpeg concat:.

rm ffmpeg-concat-output.mkv

FILE_COUNT=$#
INPUTS=""
FILTER=""
INDEX=0
for FNAME in $@; do
    echo "Processing ${FNAME}"
    INPUTS="${INPUTS} -i $FNAME"

    if [ -z "${FILTER}" ]; then
        FILTER="[$INDEX:v:0] [$INDEX:a:0]"
    else
        FILTER="${FILTER} [$INDEX:v:0] [$INDEX:a:0]"
    fi
    let INDEX+=1
done

COMMAND="ffmpeg ${INPUTS} \
    -filter_complex '${FILTER} \
        concat=n=${INDEX}:v=1:a=1 [v] [a]' \
    -map '[v]' -map '[a]' \
    ffmpeg-concat-output.mkv"

#   -af 'volume=15dB' # won't work with -filter_complex

bash -c "${COMMAND}"
0
ответ дан 23 May 2018 в 19:47

Я написал небольшой сценарий оболочки для concat MP4 без транскодирования с использованием ffmpeg.

for f in $(ls *.MP4); do
    ffmpeg -i $f -c copy -bsf:v h264_mp4toannexb -f mpegts $f.ts
done

CONCAT=$(echo $(ls *.ts) | sed -e "s/ /|/g")

ffmpeg -i "concat:$CONCAT" -c copy -bsf:a aac_adtstoasc output.mp4

rm *.ts

Это создает промежуточные файлы в контейнере MPEG и затем объединяет их в MP4.

0
ответ дан 23 May 2018 в 19:47

В дополнение к ответам Maythux, из:

Несколько мультимедийных контейнеров (MPEG-1, MPEG-2 PS, DV) позволяют объединять видео, просто конкатенируя файлы, содержащие их.

I.e. видео, которое будет конкатенировано, используйте один из вышеупомянутых видеоконтейнеров (к которому я добавлю MPEG-4 Part 14 для личного опыта), вы могли бы просто:

cat video1.ext video2.ext video3.ext > video4.ext
-1
ответ дан 23 May 2018 в 19:47
  • 1
    Я пробовал это, но он только возвращает первое видео в качестве выхода. Я где-то читал, что это не сработает, хотя я не помню обоснования этого. – Dhruv Singal 16 June 2015 в 14:28
  • 2
    @DhruvSingal Да, я могу это подтвердить, я пробовал это на двух видеороликах MP4 с точно такой же кодировкой видео / аудио, и, поскольку я мог просматривать только первое видео. Что кажется разумным, однако я почти уверен, что раньше делал это с помощью нескольких видеороликов MP4. Возможно, память здесь не служит, или есть другие требования для этого. Я хочу исследовать это, так как мне тоже интересно, если я найду что-то, я обновлю ответ и напишу вам комментарий – kos 16 June 2015 в 14:45
  • 3
    Нам как-то нужно изменить метаданные в начале первого видео, чтобы охватить всю длину комбинированного фильма и, возможно, другие вещи. Только несколько файлов mpeg4 позволяют мне видеть метаданные. – Ken Mollerup 22 October 2015 в 17:55

Другие вопросы по тегам:

Похожие вопросы: