tags | ||
---|---|---|
|
ffmpeg -i in.mp4 out.avi
ffmpeg -i in.mkv -c:v copy -c:a copy out.mp4
使用crf
(恒定速率因子)参数来控制输出质量。cRF越低,质量越高(范围:0-51)。默认值为23,视觉上无损压缩对应于-crf 18
. 使用该preset
参数来控制压缩过程的速度。附加信息: https: //trac.ffmpeg.org/wiki/Encode/H.264
ffmpeg -i in.mp4 -preset slower -crf 18 out.mp4
无需重新编码:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
-ss
指定开始时间,例如00:01:23.000
或83
(以秒为单位)-t
指定剪辑的持续时间(相同格式)。- 最近
ffmpeg
还有一个标志来提供结束时间-to
。 -c
copy 将第一个视频、音频和字幕比特流从输入复制到输出文件,而不对其进行重新编码。这不会损害质量并使命令在几秒钟内运行。
重新编码:
如果您省略该-c copy
选项,ffmpeg
将根据您选择的格式自动重新编码输出视频和音频。对于高质量视频和音频,请分别阅读x264 编码指南和AAC 编码指南。
例如:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
要从 in0.mp4
复制视频并从 in1.mp4
复制音频:
ffmpeg -i in0.mp4 -i in1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4
- 使用-c copy流将被
stream copied
重新编码,因此不会有质量损失。如果要重新编码,请参阅FFmpeg Wiki:H.264 编码指南。 - 该
-shortest
选项将使输出持续时间与最短输入流的持续时间相匹配。 - 有关详细信息,请参阅
-map
选项文档。
ffmpeg -i test.mp4 -f mp3 -vn test.mp3
首先,制作一个文本文件。
file 'in1.mp4'
file 'in2.mp4'
file 'in3.mp4'
file 'in4.mp4'
然后,运行ffmpeg
:
ffmpeg -f concat -i list.txt -c copy out.mp4
视频延迟 3.84 秒:
ffmpeg -i in.mp4 -itsoffset 3.84 -i in.mp4 -map 1:v -map 0:a -vcodec copy -acodec copy out.mp4
音频延迟 3.84 秒:
ffmpeg -i in.mp4 -itsoffset 3.84 -i in.mp4 -map 0:v -map 1:a -vcodec copy -acodec copy out.mp4
使用libass库(确保您的 ffmpeg 安装在配置中包含该库--enable-libass
)。
首先将字幕转换为.ass格式:
ffmpeg -i sub.srt sub.ass
然后使用视频过滤器添加它们:
ffmpeg -i in.mp4 -vf ass=sub.ass out.mp4
要提取 1 到 5 秒以及 11 到 15 秒之间的所有帧:
ffmpeg -i in.mp4 -vf select='between(t,1,5)+between(t,11,15)' -vsync 0 out%d.png
每秒仅提取一帧:
ffmpeg -i in.mp4 -fps=1 -vsync 0 out%d.png
顺时针旋转90度:
ffmpeg -i in.mov -vf "transpose=1" out.mov
对于转置参数,您可以传递:
0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip
使用-vf "transpose=2,transpose=2"
180度。
- 找到播放列表文件,例如使用 Chrome > F12 > Network > Filter: m3u8
- 下载并连接视频片段:
ffmpeg -i "path_to_playlist.m3u8" -c copy -bsf:a aac_adtstoasc out.mp4
如果您收到“协议‘https 不在白名单‘文件,加密’!” 错误,添加protocol_whitelist
选项:
ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -i "path_to_playlist.m3u8" -c copy -bsf:a aac_adtstoasc out.mp4
要将前 90 秒的音频替换为静音:
ffmpeg -i in.mp4 -vcodec copy -af "volume=enable='lte(t,90)':volume=0" out.mp4
要将 1'20" 到 1'30" 之间的所有音频替换为静音:
ffmpeg -i in.mp4 -vcodec copy -af "volume=enable='between(t,80,90)':volume=0" out.mp4
使用“另一个去隔行过滤器”去隔行。
ffmpeg -i in.mp4 -vf yadif out.mp4
参数:-r
标记图像帧率(每幅图像的反比时间);-vf fps=25
标记输出的真实帧率。
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
- 提取所有帧:
ffmpeg -i input.mp4 thumb%04d.jpg -hide_banner
- 每秒提取一帧:
ffmpeg -i input.mp4 -vf fps=1 thumb%04d.jpg -hide_banner
- 仅提取一帧:
ffmpeg -i input.mp4 -ss 00:00:10.000 -vframes 1 thumb.jpg
ffmpeg -i in.mov -vf "drawtext=fontfile=arial.ttf: text=%{n}: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000099: fontsize=72" -y out.mov
ffmpeg -i in.mp4 -map_metadata -1 -metadata title="My Title" -c:v copy -c:a copy out.mp4
https://ffmpeg.lav.io/是一个用于编写 FFmpeg 操作的交互式资源。