提取图片

ffmpeg.exe -i test.mp4 -r 1 image-%5d.jpeg

视频截图

从视频中提取图片的命令如下:
ffmpeg -i [视频路径] -r 1 -q:v 2 -f image2 image-%d.jpeg
视频路径:如 “myvideo.mp4”(这时这个视频也在bin文件目录下才可以直接这么写),或者完整路径的
-r:每秒提取的帧数,如上面为每秒1帧,即一张图像
-q:v :图片质量
-f:图片格式,上述为image2
image-%d.jpeg:生成图像的文件名,可以加上完整路径,%d会使文件名按整数编号,如上述生成图像为image-1.jpeg, image-2.jpeg, …
还有其他参数:
-t:持续时间,如-t 4表示持续4s
-ss:起始时间,如-ss 01:30:14,从01:30:14开始
-vframes:指定抽取的帧数,如-vframes 120,指定抽取120张
-s:格式大小,如-s 640x360
-y:覆盖,直接使用

推流

UDP推流

Ffmpeg –re –stream_loop -1 –i input.mp4 –vcodec copy –acodec copy –f mepegts udp://238.0.0.1:1234

Rtmp推流

Ffmpeg –re –stream_loop -1 –i input.mp4 –vcodec copy –acodec copy –f flv rtmp://1.1.1.1/live/channel

3D格式转换

ffmpeg -ss 00:10:00 -t 30 -i infinitwar-3d.mp4 -vcodec h264 -acodec aac -b:v 16M -s 3840*2176 -vf stereo3d=sbsl:arbg h3.mp4

全I帧变换

ffmpeg -i input.mp4 -strict -2 -qscale 0 -intra output.mp4

多视频流组合

4分屏
ffmpeg -i D:/download/test1.avi -i D:/download/test2.mp4 -i D:/download/test3.mp4 -i D:/download/test4.wav -filter_complex “[0:v]pad=iw2:ih2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h” D:/download/outputtest.mp4

4屏,1+3模式 1080p模式
ffmpeg -i D:/download/test1.avi -i D:/download/test2.mp4 -i D:/download/test3.mp4 -i D:/download/test4.wav -filter_complex “[0:v]pad=1920:1080:0:180[a];[a][1:v]overlay=1280:0[b];[b][2:v]overlay=1280:360[c];[c][3:v]overlay=1280:720”

多个视频顺序拼接

Ffmpeg –f concat –I filelist.txt –c copy concat.mp4

视频加logo

文字logo
ffmpeg -i blwy-1-out.mp4 -vf drawtext=“fontfile=simsun.ttc:textfile=text.txt:x=100:y=1000:fontsize=50:fontcolor=0xFF0000:reload=1” -b 8M addtext.mp4

查看帧信息

ffprobe -i 2.mp4 -show_packets > packets2.txt

ffprobe -v quiet -show_frames -select_streams v 6b23b0257ba2a4ff92b27b2446bbfe29.mp4 > 1.txt

取出B帧

三种方法
此去除B帧的方法只适用于采用 libx264 编码器编码的视频

引用链接:
ffmpeg x264 选项指南

第一种
参数中加 -bf 0

ffmpeg -i test.mp4 -vcodec libx264 -bf 0 test-640x480.h264
1
第二种
参数中加 -x264opts “bframe=0”

ffmpeg -i test.mp4 -vcodec libx264 -x264opts “bframes=0” test-640x480.h264

第三种
参数中加 -profile:v baseline

ffmpeg -i test.mp4 -vcodec libx264 -profile:v baseline -pix_fmt yuv420p -s 640x480 -acodec aac test1.mp4

加这个参数时,请指定图像格式,否则很容易报错

No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
x264 [error]: main profile doesn’t support 4:4:4
[libx264 @ 0x8fa9640] Error setting profile main.
[libx264 @ 0x8fa9640] Possible profiles: baseline main high high10 high422 high444

查看是否含有B帧
转换完成后,通过 ffprobe 可以查看视频流中是否含有B帧

ffprobe -v quiet -show_frames -select_streams v test.mp4 | find “pict_type=B”

原文链接:

图片拼接成为视频

ffmpeg -f image2 -i f%04d.bmp -vcodec h264 -pix_fmt yuv420p -r 25 out.mp4

提取音频

ffmpeg -i 3.mp4 -vn -y -acodec copy 3.m4a
ffmpeg -i 3.mp4 -vn -y -acodec copy 3.aac

推送电脑的视频

ffmpeg -f dshow -i video=“Integrated Camera”:audio=“内装麦克风 (Conexant SmartAudio HD)” -vcodec h264 -acodec aac -b 2M -r 25 -f flv rtmp://localhost/hls1/xx

修改视频速度

可以改变使用的视频流的速度setpts视频滤波器。请注意,在以下示例中,音频流不会更改,因此,最好使用-an禁用。

速度 快一倍

要将视频的速度提高一倍,您可以使用:
ffmpeg -i input.mkv -filter:v “setpts=0.5PTS" output.mkv
滤波器通过改变每个视频帧的呈现时间戳(PTS)来工作。例如,如果有两个连续帧显示在时间戳1和2,并且您想加速视频,那些时间戳分别需要变为0.5和1。因此,我们必须将它们乘以0.5。
请注意,此方法将丢弃帧以实现所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢帧。例如,从4 FPS的输入到加速到4倍(16 FPS)的输入:
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25
PTS” output.mkv

减慢播放速度

要减慢视频播放速度,您必须使用大于1的乘数:
ffmpeg -i input.mkv -filter:v “setpts=2.0*PTS” output.mkv

加速/减慢音频

您可以加快或音频与减缓安腾普音频过滤器。将音频的速度提高一倍:
ffmpeg -i input.mkv -filter:a “atempo=2.0” -vn output.mkv
atempo过滤器限于使用介于0.5和2.0之间的值(因此它可以将其减慢到不小于原始速度的一半,并且速度不超过输入的两倍)。如果你需要,你可以通过串联多个atempo过滤器来克服这个限制。以下四倍音频速度:
ffmpeg -i input.mkv -filter:a “atempo=2.0,atempo=2.0” -vn output.mkv

添加滤镜参数

使用复杂的滤镜,您可以同时加速视频和音频:
ffmpeg -i input.mkv -filter_complex “[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]” -map “[v]” -map “[a]” output.mkv

指定I帧间隔

./ffmpeg -i input -keyint_min 25 -g 25 -sc_threshold 0 out.mp4

指定I帧间隔,去掉B帧,本次是1秒一帧,指定码流
ffmpeg -hwaccel cuda -i p_all.mp4 -b 10M -keyint_min 25 -g 25 -sc_threshold 0 -bf 0 p_all_n.mp4

ffmpeg -i p_810.mp4 -i a_270.mp4 -i b_270.mp4 -i c_270.mp4 -filter_complex “[0:v]pad=1920:1080:0:135[a];[a][1:v]overlay=1440:135[b];[b][2:v]overlay=1440:405[c];[c][3:v]overlay=1440:675” -b 8M -keyint_min 25 -g 25 -sc_threshold 0 -bf 0 1234.mp4

ffmpeg -i a_810.mp4 -i b_270.mp4 -i c_270.mp4 -i p_270.mp4 -filter_complex “[0:v]pad=1920:1080:0:135[a];[a][1:v]overlay=1440:135[b];[b][2:v]overlay=1440:405[c];[c][3:v]overlay=1440:675” -b 8M -keyint_min 25 -g 25 -sc_threshold 0 -bf 0 2341.mp4

ffmpeg -i b_810.mp4 -i c_270.mp4 -i p_270.mp4 -i a_270.mp4 -filter_complex “[0:v]pad=1920:1080:0:135[a];[a][1:v]overlay=1440:135[b];[b][2:v]overlay=1440:405[c];[c][3:v]overlay=1440:675” -b 8M -keyint_min 25 -g 25 -sc_threshold 0 -bf 0 3412.mp4
1234.mp4

ffmpeg -i c_810.mp4 -i p_270.mp4 -i a_270.mp4 -i b_270.mp4 -filter_complex “[0:v]pad=1920:1080:0:135[a];[a][1:v]overlay=1440:135[b];[b][2:v]overlay=1440:405[c];[c][3:v]overlay=1440:675” -b 8M -keyint_min 25 -g 25 -sc_threshold 0 -bf 0 4123.mp4
1234.mp4