常用FFmpeg命令
一、格式转换
常用示例
将 MP4 转换为 AVI 格式:
1
| $ ffmpeg -i input.mp4 output.avi
|
将 WebM 转换为 MP4 格式:
1
| $ ffmpeg -i movie.webm movie.mp4
|
m3u8与MP4格式互转:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $ ffmpeg -i input.m3u8
$ ffmepg -i "http://localhost:8000/input.m3u8" -c copy output.mp4
$ ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -hls_segment_filename "output_%03d.ts" output.m3u8
$ ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k -hls_time 5 -hls_list_size 0 -hls_segment_filename "output_%03d.ts" output.m3u8
|
二、FFmpeg 全局与主要选项
- • -y:覆盖输出文件
- • -n:不要覆盖输出文件
- • -f fmt:强制输入或输出文件格式
- • -c codecName:指定编解码器, 适用于输入和输出文件
三、基础命令
列出可用编码格式:
指定输入文件和编码器:
1
| $ ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
|
四、视频参数调节
设置比特率:指定视频比特率,单位 kbit/s
1
| $ ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
|
指定分辨率与帧率:
1
| $ ffmpeg -i input.avi -s 1280x720 -r 30 output.avi
|
五、视频编辑与剪辑
- 剪切视频片段
1 2
| $ ffmpeg -i input.mp4 -ss 00:01:45 -t 00:02:35 -c copy output.mp4
|
- 调整视频帧速率
1 2
| $ ffmpeg -i input.avi -r 24 output.avi
|
六、音频参数调节
设置音频比特率:
1
| $ ffmpeg -i input.mp4 -ab 128k output.mp3
|
修改音量:
1 2
| $ ffmpeg -i input.mov -filter:a "volume=1.5" output.mov
|
七、特定任务场景
1. 转换为 GIF 动图
截取视频片段生成 GIF:
1
| $ ffmpeg -ss 2 -t 5 -i input.mp4 -vf "fps=10,scale=320:-1" output.gif
|
2. 提取视频中的音频
从视频中提取音频并保存为 mp3 格式:
1
| $ ffmpeg -i input.mp4 -vn -c copy output.mp3
|
3. 合并多个视频文件
将多个同规格视频合并到一个文件中(确保视频格式一致):
1 2 3 4 5 6 7
| # 列表文件 videos.txt 格式示例 file '1.mp4' file '2.mp4' file '3.mp4'
# 合并命令 $ ffmpeg -f concat -i videos.txt -c copy output.mp4
|
八、视频压缩与编码
H265 双重编码
1 2
| $ ffmpeg -y -i input.mp4 -c:v libx265 -b:v 2600k -pass 1 -f mp4 /dev/null && \ ffmpeg -i input.mp4 -c:v libx265 -b:v 2600k -pass 2 output.mp4
|
九、字幕处理
1. 将字幕文件嵌入视频
1
| $ ffmpeg -i input.mov -filter:v "subtitles=subtitles.srt" output.mov
|
2. 字幕格式转换
1
| $ ffmpeg -i subtitle.srt subtitle.ass
|
十、录屏操作
MacOS 录屏
1
| $ ffmpeg -f avfoundation -i 1:0 -preset ultrafast screen_recording.mkv
|
Windows 录屏
1 2 3
| $ ffmpeg -hide_banner -loglevel error -stats -f gdigrab -framerate 60 \ -offset_x 0 -offset_y 0 -video_size 1920x1080 -draw_mouse 1 -i deskop \ -c:v libx264 -r 60 -preset ultrafast -pix_fmt yuv420p -y screen_record.mp4
|
ffprobe常见命令
1 2
| $ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4
|
1 2
| $ ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4
|
1 2
| $ ffprobe -v error -select_streams v:0 -show_entries frame=pict_type -of csv input.mp4 | grep -c "I"
|