1. 分离视频音频流1.1 分离视频流 1.2 分离音频流2. 剪切视频3. 从视频中生成gif图片4. 视频导出成多张图片5. FFMPEG录制视频5.1 录制桌面报错Unknown encoder 'libx264rgb’
1. 分离视频音频流
FMPEG视频转为图片
1.1 分离视频流
ffmpeg -i input_file -vcodec copy -an output_file_video
1.2 分离音频流
ffmpeg -i input_file -acodec copy -vn output_file_audio
2. 剪切视频
-r
:提取图像的频率
-ss
:开始时间
-t
:持续时间
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi
3. 从视频中生成gif图片
- -t参数表示提取前10秒视频
- -s 表示按照 320x240的像素提取
ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif
4. 视频导出成多张图片
-r
:参数表示按照30帧的速度提取。
- 帧数越大,提取越多
ffmpeg -i output.mp4 -r 30 -f image2 foo-%05d.jpeg ffmpeg -i D:\视频\2022-07-14.mp4 -r 30 -f image2 D:\视频\temp\dnf-%05d.jpg
5. FFMPEG录制视频
5.1 录制桌面
为了实现对于Window桌面录制,有两种方式进行采集:
- DirectShow 设备
- gdigrab设备
使用GDI screengrabber可以录制主屏幕的内容
- 抓取所有显示设备(双屏幕也可以都抓),CMD终端运行如下命令开始,按Q退出
//Dshow设备 ffmpeg -f dshow -i video="screen-capture-recorder" output.mkv //gdigrab设备 采集整个桌面 ffmpeg -f gdigrab -framerate 30 -i desktop output.mkv
这两个命令默认都是采用x264 进行编码,在本地CPU不是足够高的情况下,录制的视频画面根本看不清楚,这是因为编码效率太低导致;
为了提高录制效果,我们可以采用无损编码+提高编码速度方式进行录制,具体命令如下:
- libx264rgb需要提前编译好,windows下需要自己编译(可以参考下方报错安装提示)
ffmpeg -framerate 30 -f gdigrab -i desktop -c:v libx264rgb -crf 0 -preset ultrafast output.mkv # 或者 ffmpeg -framerate 30 -f gdigrab -i desktop -c:v libx264rgb -preset:v ultrafast -tune:v zerolatency output.mkv
- 抓取指定区域,相对于左上角位置
ffmpeg -f gdigrab -framerate 30 -offset_x 10 -offset_y 20 -video_size 640x480 -show_region 1 -i desktop output2023.mkv
- 获取名称为“微信”的窗口
ffmpeg -f gdigrab -framerate 30 -i title=微信 output.mkv
报错
Unknown encoder 'libx264rgb’
这是在安装ffmpeg时没有安装
libx264
库导致安装libx264
git clone https://code.videolan.org/videolan/x264.git
windows下自己编译libx264可以参考: