ffmpeg在之前介绍过,是一个至关强大的工具,咱们此次利用它实现rtmp推流(最终推流地址统一为rtmp://127.0.0.1:1935/live/123)。nginx
官方下载连接为:http://ffmpeg.org/服务器
输入下面的语句便可列出电脑的设备ide
ffmpeg -list_devices true -f dshow -i dummy工具
能够看到我电脑里面有USB2.0 PC CAMERA摄像头和一个乱码的麦克风测试
若是设备名称有中文,会出现乱码,想看设备原名,能够去设备管理器中查看,又能够利用第三方工具查看,推荐后者。code
好比使用graphedit,打开程序后 图表-> 插入过滤器,就能够看到相应的设备名orm
能够发现可用设备为USB2.0 PC CAMERA和麦克风 (2- USB2.0 MIC)视频
cmd中输入下面语句并回车(USB2.0 PC CAMERA为摄像头名称)ip
ffplay -f dshow -i video="USB2.0 PC CAMERA" 开发
或者
ffplay -f vfwcap -i 0
若是成功弹出播放窗口,则表明设备可用,不然多是设备不可用或者设备被占用
cmd中输入下面语句便可查询摄像头信息
ffmpeg -list_options true -f dshow -i video="USB2.0 PC CAMERA"
USB2.0 PC CAMERA摄像头信息
cmd中输入下面语句便可查询麦克风信息
ffmpeg -list_options true -f dshow -i audio="麦克风 (2- USB2.0 MIC)"
麦克风(2- USB2.0 MIC)信息
先进行简单的本地视频推流模拟,咱们在ffmpeg的目录下放置一个视频,而后cmd进入该目录,把视频推流至rtmp://127.0.0.1:1935/live/123(127.0.0.1:1935为rtmp服务器地址、live为nginx配置节点、123当作密钥,推流拉流地址同样便可播放),语句以下
ffmpeg.exe -re -i demo.wmv -f flv rtmp://127.0.0.1:1935/live/123
此时ffmpeg源源不断的把视频推流至服务器,若是地址没错,能够利用vlc或其余手段实现拉流,这里就先不解释如何拉流
接下来正式把对摄像头进行推流,从前面咱们知道摄像头名称为USB2.0 PC CAMERA,并且推流服务器ip为127.0.0.1:1935,关键字为live,因此cmd中输入如下语句:
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/123
和本地视频推流同样,摄像头拍到的画面会实时推流出去(固然会有延迟并且如今是没有声音的),当地址正确时,能够实现拉流
前面介绍了摄像头画面推流,但是没有声音,此次咱们把麦克风声音推流出去,cmd中输入下面语句
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
和前面差很少,声音被推流出去了,经过vlc拉流能够听到录制的声音,但很明显不会有画面
终于到最激动人心的时刻了,咱们此次要实现同时推流摄像头画面与声音,此时咱们的语句应该以下
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
很nice,和前面同样,画面与声音源源不断的被推流到服务器,接下来咱们就应该正式的开发拉流了