最近公司项目需要将海康的预览和回放流在web上播放,由于rtmp年底flash不支持播放了,rtsp在Web不能直接播放,所以现在的思路是通过ffmpeg将rtsp流转为http-flv流,以推流的形式推给前端,前端采用flv.js播放。
首先安装ffmpeg,安装教程百度,谷歌一大堆。
配置好ffmpeg的环境变量。
安装已经编译好的nginx+nginx-http-flv服务器。博主有已经搭建好的nginx需要的自行下载。
下载解压nginx后,启动nginx。
ffmpeg命令:
转码命令实例(预览):ffmpeg -rtsp_transport tcp -i “rtsp://admin:lzm12345@192.168.1.214/h264/ch1/main/av_stream” -vcodec copy -acodec copy -f flv “rtmp://localhost:1935/live/room”
转码命令实例(回放):ffmpeg -rtsp_transport tcp -i “rtsp://admin:lzm12345@192.168.1.217:554/Streaming/tracks/201?starttime=20200628t000000z&endtime=20200628t000100z” -vcodec copy -acodec copy -f flv “rtmp://localhost:1935/live/rooms”
在这里重点讲一下海康摄像机回放的RTSP取流格式:
Ip是指超脑IP,端口不出意外是554,通道号如下图所示的话应填201
打开CMD,输入ffmpeg命令。
rtmp播放地址:rtmp://localhost:1935/live/room
http-flv播放地址:http://localhost:8080/live?port=1935&app=live&stream=room
地址中的room可以自行修改,多路推流只需要更改不同的room就好。
java代码只需要调用Process,运行ffmpeg命令即可。