Awesome
BXC_gb28181Player
视频教程
项目介绍
- 一个基于C++开发的支持国标GB28181协议的视频流播放器,该项目的主要使用场景在安防领域,当然也不限于安防领域,任何需要实时播放ps视频流的场景,都可以使用该项目。尤其是项目中涉及ffmpeg探测流和播放流的代码实现部分,是非常具有参考价值的,我本身写这个项目也花了挺长时间,网上这部分的资料非常少。
- BXC_gb28181Player作为支持国标GB28181协议的视频流播放器,接收数据部分支持tcp/udp两种方式,解码和渲染部分支持大部分常见的音视频编码格式。
没有支持国标GB28181协议的摄像头,可以使用ZLMediaKit模拟
使用ZLMediaKit模拟摄像头简要过程
1,下载编译一份 ZLMediaKit
ZLMediaKit开源地址:https://gitee.com/xia-chu/ZLMediaKit
ZLMediaKit直接可用无需编译的程序:https://gitee.com/Vanishi/zlm
2,准备一份视频文件,用于推流到ZLMediaKit,用于模拟摄像头
// 没有视频文件的可以使用data文件夹下的提供的文件
3,视频文件推流模拟摄像头
// rtsp推流(文件推流)
ffmpeg -re -i camera_18383_300s.mp4 -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:554/live/camera
// rtsp推流(文件循环推流)
ffmpeg -re -stream_loop -1 -i camera_18383_300s.mp4 -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:554/live/camera
4,将推送到ZLMediaKit的视频流封装为ps流,并通过tcp/udp的方式推送到BXC_gb28181Player用于播放
// 查看ZLMediaKit的API文档,文档地址:https://github.com/zlmediakit/ZLMediaKit/wiki/MediaServer支持的HTTP-API
找到 startSendRtp,并调用
附
1,查看ZLMediaKit在线视频流
http://127.0.0.1/index/api/getMediaList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
2,获取ZLMediaKit在线视频流的播放地址
//rtsp播放地址
rtsp://127.0.0.1:554/live/camera
//rtmp播放地址
rtmp://127.0.0.1:1935/live/camera
附常用ffmpeg命令行
// 拉流转推流
ffmpeg -rtsp_transport tcp -i "rtsp://admin:123456@192.168.1.10:554/cam/realmonitor?channel=1&subtype=0&unicast=true" -codec copy -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:554/live/camera
// 拉流转本地录像文件
ffmpeg -rtsp_transport tcp -i "rtsp://admin:123456@192.168.1.10:554/cam/realmonitor?channel=1&subtype=0&unicast=true" -c:v copy -an -t 300 camera_18383_300s.mp4