# FFmpeg 常用命令

# 获取基本信息

ffmpeg -i input.mp4

ffmpeg -i input.mp4 -hide_banner

# 格式转换

ffmpeg -i input.mp3 output.ogg
ffmpeg -i input.mp4 output.avi
ffmpeg -i input.flv output.mpeg
# 维持视频质量进行转换 -qscale 0
ffmpeg -i input.webm -qscale 0 output.mp4
# 列出支持的格式
ffmpeg -formats

mp4vsavi

# 压缩视频文件

# -crf 0 为无损 51最差 一般建议 18~28
# -preset 指定的编码速度越慢,获得的压缩效率就越高
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 18 output_crf18.mp4
# 上面没有处理音频,使用下面的选项可以压缩音频
# -ac 2 -c:a aac -strict -2 -b:a 128k

# 压缩音频文件

# -ar 控制采样率
# -ab audiobit 控制音频比特率  96k 112k 128k 160k  单位kbps
ffmpeg -i input.mp3 -ab 96k output_96k.mp3

# 修改分辨率

# -c:a copy 音频不做处理
ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
ffmpeg -i input.mp4 -s 1280x720 -c:a copy output_1280x720.mp4

# 提取音频

# -vn video no
ffmpeg -i input.mp4 -vn output.mp3
# -ar audiorate 指定采样率
# -ac audiochannel 2 指定双声道
# -ab audiobit 指定音频比特率
# -f 输出文件格式
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
# -ab 320 指定 audiobit 为320kpbs
ffmpeg -i input.mp4 -vn -ab 320k output_320k.mp3

audio

# 去除音频(静音)

# -an audio no
ffmpeg -i input.mp4 -an output_noaudio.mp4

# 提取图像(生成缩略图)

mkdir images
ffmpeg -i input.mp4 -r 1 -f image2 ./images/image-%3d.png
# -r 1 每秒提取1帧 默认值为25
# -f iamge2  输出格式 image2 图片
# image-%3d.png  命名 image-001.png
# 反过来 图片序列转视频
ffmpeg -r 1/10 -i ./images/image-%3d.png -c:v libx264 -r 30 -pix_fmt yuv420p video.mp4
# -r 1/10 每张图像图像显示10s
# -i ./images/image-%3d.png 读取image-开头带3为数字以png结尾的图片
# -c:v libx264 指定视频编解码器为h264
# -r 30 输出帧率
# -pix_fmt yuv420p 输出视频分辨率

# 图片转换(YUV)

ffmpeg -i input.png -pix_fmt yuv420p output.yuv

# 测试音视频

ffplay input.mp4
ffplay input.mp3

# 其他命令

# -threads 4  启用多线程
# -c:v h264_nvenc 使用N卡硬件加速