ffmpeg在以前介绍过,是一个相当强大的工具,我们这次利用它实现rtmp推流(最终推流地址统一为rtmp://127.0.0.1:1935/live/123)。
1、首先下载ffmpeg和ffplay
![91f120e04ced79f3f72108cfb0012de7.png](https://i-blog.csdnimg.cn/blog_migrate/f8029b2b092a34ca616922de3d5ee354.jpeg)
http://ffmpeg.org/
官方下载链接为:http://ffmpeg.org/
2、cmd进入ffmpeg所在目录
![67136b9a1dd30d06bd9256baa4bcd3c8.png](https://i-blog.csdnimg.cn/blog_migrate/37fb53bf95486488155eda12fc958e51.jpeg)
cmd进入ffmpeg.exe所在目录
3、ffmpeg查看电脑设备
输入下面的语句即可列出电脑的设备
ffmpeg -list_devices true -f dshow -i dummy
![ed7325469b0e634a6329fb081fb0097c.png](https://i-blog.csdnimg.cn/blog_migrate/b2587fe37a105fadcf7ea61d2289c5a6.jpeg)
ffmpeg -list_devices true -f dshow -i dummy
可以看到我电脑里面有USB2.0 PC CAMERA摄像头和一个乱码的麦克风
如果设备名称有中文,会出现乱码,想看设备原名,可以去设备管理器中查看,又可以利用第三方工具查看,推荐后者。
比如使用graphedit,打开程序后 图表-> 插入过滤器,就可以看到相应的设备名
![d5695a359cbf92d33ace2acadf162b4c.png](https://i-blog.csdnimg.cn/blog_migrate/f1c49d42b25187e485ef8be95f8cb2fe.jpeg)
![a9e58ee5088ad49477f2ea5de538470d.png](https://i-blog.csdnimg.cn/blog_migrate/9edc0e7d5fb3a3f5652430cf0b6151cf.jpeg)
![9a7140373d5e975b8cc3711e63d7e181.png](https://i-blog.csdnimg.cn/blog_migrate/fd891e1854214c2d761602bf6a23954e.jpeg)
可以发现可用设备为USB2.0 PC CAMERA和麦克风 (2- USB2.0 MIC)
可以发现可用设备为USB2.0 PC CAMERA和麦克风 (2- USB2.0 MIC)
4、测试摄像头是否可用
cmd中输入下面语句并回车(USB2.0 PC CAMERA为摄像头名称)
ffplay -f dshow -i video="USB2.0 PC CAMERA"
或者
ffplay -f vfwcap -i 0
![982050195ffd5ca83fe9cddb35e9ebc4.png](https://i-blog.csdnimg.cn/blog_migrate/aac0d367b43a93831adbcbd712baa6cf.jpeg)
弹出的监控画面
如果成功弹出播放窗口,则代表设备可用,否则可能是设备不可用或者设备被占用
5、查看摄像头和麦克风信息
cmd中输入下面语句即可查询摄像头信息
ffmpeg -list_options true -f dshow -i video="USB2.0 PC CAMERA"
![c5561bdca592b3eb815770985ce6ca84.png](https://i-blog.csdnimg.cn/blog_migrate/e25bc69fae86908b3bfad13ad82d955d.jpeg)
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)"
![6b46cc9b94f70b7a6fb1d90b0cd2a734.png](https://i-blog.csdnimg.cn/blog_migrate/d2c562e0effee2f1ba9add7f692d7e3d.jpeg)
麦克风(2- USB2.0 MIC)信息
6、本地视频的推流
先进行简单的本地视频推流模拟,我们在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
![31399cffa1fec344099710cdaa3939ef.png](https://i-blog.csdnimg.cn/blog_migrate/9da8e15303ae49894c334831ff9625d2.jpeg)
推流中...
此时ffmpeg源源不断的把视频推流至服务器,如果地址没错,可以利用vlc或其他手段实现拉流,这里就先不解释如何拉流
7、摄像头推流
接下来正式把对摄像头进行推流,从前面我们知道摄像头名称为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
![289bd4fe159a9ef95480ae594f2cf621.png](https://i-blog.csdnimg.cn/blog_migrate/1958a2b2bf4c7167c57cc341711bcc8a.jpeg)
摄像头推流中
和本地视频推流一样,摄像头拍到的画面会实时推流出去(当然会有延迟而且现在是没有声音的),当地址正确时,可以实现拉流
8、麦克风推流
前面介绍了摄像头画面推流,可是没有声音,这次我们把麦克风声音推流出去,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
![f740f3c6b771385a7987500c8558d661.png](https://i-blog.csdnimg.cn/blog_migrate/17b60630416214c668b8cc758ed37cf2.jpeg)
推送声音
和前面差不多,声音被推流出去了,通过vlc拉流可以听到录制的声音,但很明显不会有画面
9、摄像头&麦克风推流
终于到最激动人心的时刻了,我们这次要实现同时推流摄像头画面与声音,此时我们的语句应该如下
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
![eceb3389133d311726635b3faffeccda.png](https://i-blog.csdnimg.cn/blog_migrate/ca073b19288a9f8043e8878f05c166d7.jpeg)
监控画面与声音同步推流
很nice,和前面一样,画面与声音源源不断的被推流到服务器,接下来我们就应该正式的开发拉流了