Convert .ts to .mp4
ffmpeg -i input.ts -vcodec copy -acodec copy output.mp4
# or
ffmpeg -i input.ts -c copy output.mp4
ffmpeg -codecs
ffmpeg -formats
Convert h265 video to h264
# Default
ffmpeg -i input.mp4 -vcodec h264 output.mp4
# Speed up with quicksync
ffmpeg -i input.mp4 -vcodec h264_qsv output.mp4
# Speed up with amf
ffmpeg -i input.mp4 -vcodec h264_amf output.mp4
Convert audio to aac
ffmpeg -i input.mp4 -vcodec copy -acodec aac -movflags faststart output.mp4
-----
#!/bin/bash
for input_file in ./*.mp4; do
filename=$(basename -- "$input_file")
filename="${filename%.*}"
output_file="./output-$filename.mp4"
ffmpeg -i "$input_file" -c:v copy -c:a aac -movflags faststart "$output_file"
done
-----
Find & convert files to mp4
# Find & convert .mkv to .mp4
find . -name "*.mkv" | xargs -I {} ffmpeg -i "{}" -vcodec copy -acodec aac -movflags faststart "{}.mp4"
# Find & convert .mkv to .mp4
find . -name "*.flv" | xargs -I {} ffmpeg -i "{}" -vcodec copy -acodec aac -movflags faststart "{}.mp4"
# Remove .mkv or .flv files
find . -name "*.mkv" | xargs -I {} rm -rf {}
find . -name "*.flv" | xargs -I {} rm -rf {}
# Rename `.mkv.mp4` or `.flv.mp4` to `.mp4`
find . -name "*.mkv.mp4" | xargs -I {} rename -n 's/mkv\.mp4/mp4/g' {}
find . -name "*.flv.mp4" | xargs -I {} rename -n 's/flv\.mp4/mp4/g' {}
Combine multi video
vim files.txt
-----
file '1.mp4'
file '2.mp4'
file '3.mp4'
-----
ffmpeg -f concat -safe 0 -i files.txt -c copy -movflags faststart output.mp4
# or
ffmpeg -i 'concat:1.mp4|2.mp4' -c copy output.mp4
# or:
ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
Separate audio and video
ffmpeg -i input.mp4 -c aac -vn output_audio.aac
ffmpeg -i input.mp4 -c copy -an output_video.mp4
Combine audio & video
ffmpeg -i output_video.mp4 -i output_audio.aac -c copy -strict experimental -movflags faststart output_merged.mp4
ffmpeg -i output_video.mp4 -i output_audio.aac -c:v copy -c:a aac -strict experimental output.mp4
Add srt subtitles to video
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4