Если вы хотите иметь возможность использовать команду apt-get с вашей программой, она должна быть в аптечном репозитории, чей url должен находиться в файле /etc/apt/sources.list. Вы можете узнать, как настроить свой собственный apt-репозиторий здесь.
Я использую mkvmerge для объединения нескольких файлов MP4 в один:
mkvmerge -o outfile.mkv infile_01.mp4 \+ infile_02.mp4 \+ infile_03.mp4
Вы можете сделать это с помощью ffmpeg:
ffmpeg -i concat:"input1.mp4|input2.mp4" output.mp4
справки и дополнительной информации
Мой сценарий, только в 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}"
Я написал небольшой сценарий оболочки для 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.
В дополнение к ответам Maythux, из:
Несколько мультимедийных контейнеров (MPEG-1, MPEG-2 PS, DV) позволяют объединять видео, просто конкатенируя файлы, содержащие их.I.e. видео, которое будет конкатенировано, используйте один из вышеупомянутых видеоконтейнеров (к которому я добавлю MPEG-4 Part 14 для личного опыта), вы могли бы просто:
cat video1.ext video2.ext video3.ext > video4.ext