前言
- 最近整个rtsp的摄像头显示到网页上,百度一看这个还有点麻烦。
ffmpeg
- http://ffmpeg.org/ffmpeg.html
- 首先需要确定你的地址可以打开,建议下个vlc打开视频地址,如果能打开就ok。
- 注意:vlc默认是udp,在偏好设置中可以设置tcp,有些rtsp的地址必须是tcp才可以看见。
- 确认完地址后我们还需要ffmpeg这个神器。
- 一般来说,这个exe文件会写入环境变量,当然放到目录里执行也可以。
- 这玩意的参数比较复杂,而且功能特别多,建议对着官网和github查看。
- 对于rtsp的转换,如果是需要jsmpeg播放器打开的,需要转成mpegts格式如下:
ffmpeg -i rtsp://192.168.168.22 -f mpegts -codec:v mpeg1video -bf 0 -codec:a mp2 -r 30 http:// localhost:8081/1234/640/480 /
- 解释下参数,-i就是源地址不用说了
- -f就是转换的格式,如果给nginx转换,可以把rtsp转换为rtmp丢给它,如果用jsmpeg,需要转换为mpegts格式
- -codec解码格式,mpegts格式要mpeg1video格式,而声音需要mp2格式。
- -r 就是帧率。
- 最后那个是输出的地址,一般为ws的流地址。
- 如果是使用tcp的需要加上-rtsp_transport tcp。
ws转换
- 下载jsmpeg时,内附了个ws服务的js文件,安装完依赖后,使用node启动它。这样ws服务就建立了,其中一个端口为ffmpeg的端口,另一个端口为+secret为websocket端口
JSMEPG
- https://github.com/phoboslab/jsmpeg
- 这个是前端播放器,可以通过websocket接收ffmpeg转换推送的mpegts格式数据,通过canvas实时显示出来。用法也非常简单,player等于new 一下, player.play() pause之类控制。
调试技巧
- 确定你的地址有效,可以打开。
- 确定ffmpeg在命令行输入后可以正常推送流并显示帧数。
- 确定websocket服务正常,前端连接刷新可以正常提示。
- 确定前端收到ffmpeg推送的码流,点击101响应码升级ws可以看见推送码流,如果是持续在收说明ok。
- 确定转码格式正确,是jsmpeg可以识别的格式(当然你用别的前端播放器支持别的格式也可以)。
- 上述demo和工具已上传csdn,0积分下载:https://download.csdn.net/download/yehuozhili/13117797