视频转码

1
$ ffmpeg -i input.mp4 -c:v h264_qsv output.mp4

列出编、解码器:

1
2
$ ffmpeg -encoders
$ ffmpeg -decoders

列出 dshow 设备:

1
$ ffmpeg -list_devices true -f dshow -i dummy

录制屏幕和混音:

1
2
3
4
5
6
7
$ ffmpeg -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" -f dshow -i audio="麦克风 (Realtek Audio)" -filter_complex amix=inputs=2:duration=first:dropout_transition=0 -c:v h264_qsv -r 50 -b:v 5000k output.mp4

# -c:v 指定编码器,v为高质量
# h264_qsv h264编码,intel qsv硬件加速
# -r 指定fps
# -b:v 指定bitrate
# -filter_complex amix=inputs=2:duration=first:dropout_transition=0 将两个音频混流

播放视频

1
$ ffplay input.mp4

查看视频信息

1
2
$ ffmpeg -i input.mp4	# 查看视频编码信息
$ ffprobe -hide_banner -show_streams -v error -select_streams v -print_format json -i input.mp4 # 查看视频详细信息

音视频分离/合并

1
2
3
4
5
6
7
8
9
10
$ ffmpeg -i input.mp4 -vcodec copy -an output.mp4		# 去掉视频中的音频
$ ffmpeg -i input.mp4 -acodec copy -vn output.mp3 # 提取视频中的音频
$ ffmpeg -y –i input.mp4 –i input.mp3 –vcodec copy –acodec copy output.mp4 # 音视频合并

# -an 去掉音频
# -vn 去掉视频
# -y 覆盖输出文件
# -vcodec 指定视频编码器,copy 表示与原视频相同
# -acodec 指定音频编码器
# -vcodec copy -acodec copy 可以简化为 -c copy

剪切视频

1
2
3
4
$ ffmpeg -ss 0:0:30 -t 0:1:0 -i input.mp4 -c copy output.mp4

# -ss 开始时间
# -t 持续时间

合并视频

1
$ ffmpeg -f concat -i filelist.txt -c copy output.mp4

其中,filelist.txt 文件的内容:

1
2
3
file ./input1.mp4
file ./input2.mp4
file ./input3.mp4

视频/音频变速

1
2
$ ffmpeg -i input.mp4 -filter:v setpts=0.5*PTS output.mp4	# 视频变速
$ ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3 # 音频变速