什么是推流器呢?
能看到这篇文章的人,能知道“推流器”这个词的人,想必已经知道什么是推流器了。但是还是有必要说一下。
浏览器能够播放的流媒体类型大致有以下几种:MP4、FLV、HLS、RTMP、WebRTC、RTSP,而摄像头流媒体主要的格式之一就是“RTSP”,有人说“那浏览器支持RTSP,我们直接播放不就可以了吗?”,NO!NO!NO!。RTSP流是不可以直接在浏览器中直接播放的,需要使用vlc浏览器插件才可以,而且现在只有360浏览器才支持使用vlc插件。虽然我们做web需要适配所有浏览器,但是我们推荐用户使用的还是谷歌和火狐,总不能说,我们的系统只支持360浏览器使用吧!
那什么流媒体格式在浏览器可以通用呢?个人觉得,MP4、FLV最佳,MP4不用说了吧,前端的朋友都知道怎么播放。FLV呢?其实FLV只需要flv.js就可以实现。但在直播领域,由于RTMP推流、HTTP-FLV播放的整套方案低延时的特性,以及服务端普遍提供HTTP Web服务,FLV仍然是大多数直播产品的首选流媒体格式。好,重点来啦!所以我们要做的就是,想办法把RTSP流转成FLV流。
好的,上工具!——Nginx(rtmp版),这个工具通过配置之后可以将rtmp流自动转为flv流。
那么你不想配置怎么办?再上工具——SRS,github上一搜就有,安装完后,你拆解一下他的安装目录,会发现在objs里面有个nginx,看到这个nginx,你懂得了吧???
那么我们的工作就变成了将RTSP装换成RTMP推送跟SRS,实现自动化推流,这就是推流器。
准备工具
语言:Pyhton
数据库:MySQL 5.7,Redis-x64-3.0.504
流媒体工具:FFmpeg
流媒体转发:SRS 6.0
Python、MySQL、Redis使用应该不用我说了吧,SRS只需要傻瓜式安装,FFmpeg有必要说一下,你不需要配置什么环境变量,只需要将你下载好的FFmpeg的bin文件夹下的ffmpeg.exe、ffplay.exe、ffprobe.exe复制到C:\Windows\System32中就可以了,然后打开CMD,输入“ffmpeg”回车,看到下面内容就大功告成!
FFmpeg推流
首先打开你们的SRS。浏览器输入:127.0.0.1:8080回车,进去之后,点击“SRS控制台”,点击顶部面包屑的“视频流”,一会要看这里。
接下来就可以推流了。朋友们,为了让你们少走弯路,直接上FFmpeg推流指令:
ffmpeg -loglevel panic -thread_queue_size 512 -rtsp_transport tcp -i rtsp://admin:xiaotudou@192.168.3.201:554/h265/ch1/main/av_stream -vf "setdar=r=16/9,scale=1280/720" -qscale:v 1 -vcodec libx265 -tune zerolatency -b:v 500k -r 25 -b:a 1280k -bufsize 10000k -f flv -an rtmp://127.0.0.1/live/1921683201
你只需要将上面指令“rtsp://admin:xiaotudou@192.168.3.201:554/h265/ch1/main/av_stream”换成你的RTSP流,“libx265”换成摄像头的编码格式,“rtmp://127.0.0.1/live/1921683201”换成推送到SRS的RTMP流地址就行了。
拿海康摄像头举个例子:假如你的摄像头IP是192.168.1.11,账号是admin,密码是123456,再进入摄像头,点击“配置>音视频”,看这里,
那他的RTSP流地址就是:rtsp://admin:123456@192.168.1.11:554/h265/ch1/main/av_stream,编码格式就是:libx265。至于推送地址,前面的“rtmp://127.0.0.1/live/”不要动,后面加后缀就可以(你加的后缀决定你之后FLV流的播放地址)
打开CMD,输入你的FFmpeg命令,回车
当你看到如上输出,再去看你的“SRS控制台”
点击预览
能够播放,ok,推流成功!本篇文章到此为止,下一篇,开始将介绍使用python的具体实现步骤,散会!