发布时间:
FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流式传输、过滤和播放几乎所有人类和机器创建的内容。它支持从最古老到最前沿的各种格式,无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 可以在 Linux、Mac OS X、Microsoft Windows、BSD、Solaris 等各种构建环境、机器架构和配置下编译、运行并通过我们的测试基础架构 FATE的测试。
关键帧 IPB #
帧率 每秒画面数量 0-30 一搬25帧
I #
表示关键帧,是最完整的帧画面,一般视频封面都选择I帧;
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
P #
单预测帧,利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码;
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,P)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
B #
双向预测帧,利用双向帧进行预测编码;
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,B)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
均匀抽帧 #
-r
指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。
ffmpeg -i 666051400.mp4 -r 20 -q:v 2 -f image2 %08d.000000.png
视频拆分帧 #
ffmpeg -i 666051400.mp4 %08d.000000.png
提取音频 #
ffmpeg -i 666051400.mp4 -vn -codec copy out.m4a
视频处理 #
-
指定时间抽帧图片
ffmpeg -ss 00:00:30 -i 666051400.mp4 -vframes 1 0.png
-
视频截取
-ss
5指定从输入视频第1:05秒开始截取,-t 10指明最多截取10秒;ffmpeg -i 666051400.mp4 -ss 1:05 -t 10 output.mp4
-
视频截取
-c:v
和-c:a
分别指定视频和音频的编码格式。-c:v copy
-c:a copy
标示视频与音频的编码不发生改变,而是直接复制,这样会大大提升速度。-ss
1:05放到-i前面,与原来的区别是,这样会先跳转到第1:05秒在开始解码输入视频,而原来的会从开始解码,只是丢弃掉前1:05秒的结果。
ffmpeg -ss 1:05 -i 666051400.mp4 -t 10 -c:v copy -c:a copy output.mp4
-
图片合并视频
-framerate
指定帧率
ffmpeg -f image2 -framerate 30 -i %08d.000000.jpg test.mp4
-
视频拼接(字符串)
ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4
-
视频拼接(文件)
list.txtfile '001.mp4' file '002.mp4'
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
视频推流 #
搭配 mediamtx 实时媒体服务器
rtsp
协议推流
ffmpeg -re -i output.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream
rtsp
协议循环推流,添加 -stream_loop
ffmpeg -stream_loop -1 -re -i output.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream
mediamtx #
下载 mediamtx releases,双击 exe 直接启动就好。
2025/08/20 14:44:31 INF MediaMTX v1.14.0
2025/08/20 14:44:31 INF configuration loaded from d:\Downloads\mediamtx_v1.14.0_windows_amd64\mediamtx.yml
2025/08/20 14:44:31 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2025/08/20 14:44:31 INF [RTMP] listener opened on :1935
2025/08/20 14:44:31 INF [HLS] listener opened on :8888
2025/08/20 14:44:31 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2025/08/20 14:44:31 INF [SRT] listener opened on :8890 (UDP)