需求
一、场景
用户多家门店有监控探头,设备是海康的和大华的。用户总部和门店不在一个网络下,并且总部要能实时调用查看门店监控,和门店回放画面。我们知道监控摄像机获取的视频是 rtsp 流的格式。 只能在特用的软件中播放,并且只能在相同的网络下播放。用户要求开发一个管理软件根据业务需要来播放视频。最终的目地是要把rtsp 流视频 转换为能在浏览器,手机等主流的播放渠道上能播放的视频(rtmp,mp4,flv,m3u8等格式);
解决办法
(1)、客户端转码
我们用electron 来打包客户端,客户端中安装一个在线转码ffmpeg 模块,这个模块中有功能接口能直接对rtsp 进行转码(这种场景主要给 播放软件和门店在一个网络下能直接连接的场景);
用到两个模块 “fluent-ffmpeg” “node-media-server”
fluent-ffmpeg 转码模块
我们用这个模块转码为rtmp 直播流,转码后推送到一个我们在软件内部搭建的一个rtmp 直播流服务器地址
“rtmp://localhost:1938/live/livestream”
node-media-server 模块做rtmp直播流服务器
上面的fluent-ffmpeg 模块转码推送rtmp 流到这个服务器rtmp://localhost:1938/live/livestream,
到此rtsp被本地转换为了 rtmp流了。 由于rtmp流可以在浏览器中播放, 我们找一个播放器播放这个地址即可。 能播放rtmp流的播放器很多。 我用了一个阿里的flash 播放器来播放可行。
# electron main.js 部分功能代码
const ffmpeg = require('fluent-ffmp