1、列出所有输入输出设备
ffmpeg -hide_banner -devices
D表示输入设备,E表示输出设备,DE表示输入输出设备。
2、查看单个设备相关的操作参数
ffmpeg -hide_banner -h demuxer=vfwcap
ffmpeg -hide_banner -h demuxer=dshow
3、查看dshow支持的设备
先修改CMD编码为UTF-8:chcp 65001
ffmpeg -hide_banner -list_devices true -f dshow -i 0
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