ffmpeg常用命令整理

1、列出所有输入输出设备

ffmpeg -hide_banner -devices

image.png

D表示输入设备,E表示输出设备,DE表示输入输出设备。

2、查看单个设备相关的操作参数

ffmpeg -hide_banner -h demuxer=vfwcap

image.png

ffmpeg -hide_banner -h demuxer=dshow

image.png

3、查看dshow支持的设备

先修改CMD编码为UTF-8:chcp 65001

ffmpeg -hide_banner -list_devices true -f dshow -i 0

image.png

4、使用dshow采集摄像头和麦克风

ffmpeg -f dshow -i video="Lenovo EasyCamera":audio="麦克风阵列 (Realtek High Definition Audio)"

5、采集后本地播放

ffplay -f dshow -i video="Lenovo EasyCamera":audio="麦克风阵列 (Realtek High Definition Audio)"

6、采集后推流到RTMP服务器

ffmpeg -f dshow -i video="Lenovo EasyCamera":audio="麦克风阵列 (Realtek High Definition Audio)" -f flv "rtmp地址"

7、降低FFmpeg的编码延时

FFmpeg的H264编码器为了提高编码的图像质量,默认会缓冲多帧图像,这个缓冲帧数跟GOP大小有关。我程序设置GOP等于100,结果缓冲了20多帧。为了降低编码延时,可以添加-preset:v ultrafast和-tune:v zerolatency两个选项

preset可设置的等级可分为:ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow

最终推流命令:

ffmpeg -f dshow -i video="Lenovo EasyCamera":audio="麦克风阵列 (Realtek High Definition Audio)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv "rtmp地址"

8、其他常用命令

摄像头推流

ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/home

麦克风推流

ffmpeg -f dshow -i audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

摄像头&麦克风推流

ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -f dshow -i audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

或者

ffmpeg -f dshow -i video="USB2.0 PC CAMERA":audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -r 25 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123

屏幕推流

首先需要安装一个软件,screen capture recorder

编译好的下载地址是:http://sourceforge.net

屏幕推流

ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/home

屏幕&麦克风推流

ffmpeg -f gdigrab -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://127.0.0.1:1935/rtmplive/home

屏幕&麦克风&摄像头

ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home