https://www.mp4joiner.org/en/ ls Movie_Part_1.mp4 Movie_Part_2.mp4 | \ perl -ne 'print "file $_"' | \ ffmpeg -f concat -i - -c copy Movie_Joined.mp4 ls Movie_Part_1.mp4 Movie_Part_2.mp4 | perl -ne '$_ =~ s/\n$//; print "file '"'"'$_'"'"'\n"' | ffmpeg -f concat -i - -c copy Movie_Joined.mp4 ls * | perl -ne 'print "file $_"' | ffmpeg -f concat -i - -c copy Movie_Joined.mp4 ffmpeg -safe 0 -f concat -i <(find . -type f -name '*' -printf "file '$PWD/%p'\n" | sort) -c copy output.mkv ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv \ -filter_complex "[0:v] [0:a] [1:v] [1:a] [2:v] [2:a] \ concat=n=3:v=1:a=1 [v] [a]" \ -map "[v]" -map "[a]" output.mkv $ cat mylist.txt file '/path/to/file1' file '/path/to/file2' file '/path/to/file3' $ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4 ffmpeg -i "concat:input1|input2" -codec copy output.mkv :: Create File List echo file file1.mp4 > mylist.txt echo file file2.mp4 >> mylist.txt echo file file3.mp4 >> mylist.txt :: Concatenate Files ffmpeg -f concat -i mylist.txt -c copy output.mp4 ls video1.mp4 video2.mp4 | while read line; do echo file \'$line\'; done | ffmpeg -protocol_whitelist file,pipe -f concat -i - -c copy output.mp4 ####################################### # Merge mp4 files into one output mp4 file # usage: # mergemp4 #merges all mp4 in current directory # mergemp4 video1.mp4 video2.mp4 # mergemp4 video1.mp4 video2.mp4 [ video3.mp4 ...] output.mp4 ####################################### function mergemp4() { if [ $# = 1 ]; then return; fi outputfile="output.mp4" #if no arguments we take all mp4 in current directory as array if [ $# = 0 ]; then inputfiles=($(ls -1v *.mp4)); fi if [ $# = 2 ]; then inputfiles=($1 $2); fi if [ $# -ge 3 ]; then outputfile=${@: -1} # Get the last argument inputfiles=(${@:1:$# - 1}) # Get all arguments besides last one as array fi # -y: automatically overwrite output file if exists # -loglevel quiet: disable ffmpeg logs ffmpeg -y \ -loglevel quiet \ -f concat \ -safe 0 \ -i <(for f in $inputfiles; do echo "file '$PWD/$f'"; done) \ -c copy $outputfile if test -f "$outputfile"; then echo "$outputfile created"; fi } hd720 ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 0 -preset veryslow -c:a copy MyMovie_720p.mkv ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy MyMovie_720p.mkv ffmpeg -i input.mp4 -vf scale=1280:720 -preset slow -crf 18 output.mp4 ffmpeg -i input.mp4 -vf scale=$w:$h output.mp4 ffmpeg -i input.mkv -c:a copy -s 1280x720 output.mkv ffmpeg -f concat -i mylist.txt -vf -s 1280x720 -c:v libx264 -crf 18 -preset slow -c:a copy MyMovie_720p.mkv -c:a copy output.mp4 ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio