问题背景
前段时间做3S
比赛的时候涉及到在安卓端调用实验室海康威视摄像头进行实时的视频监控,苦于海康官网没有提供安卓端的SDK,只好硬着头皮在网上大海捞针般的开始查找,倒是找到了一些反编译出来的SDK,包括相应的网络库SDK和播放库SDK,还提供相应的demo,然而遗憾的是并没把这些成功跑起来。
那就另辟蹊径吧。在网上查阅资料和大牛们的博客的时候发现最新的海康IP摄像头是支持rtsp协议进行流媒体播放的,翻阅了下实验室采购的摄像头的技术手册,完全没有问题,最终的技术方案就是在安卓端采用videoview
调用基于rtsp协议的流媒体地址进行播放,实现移动端实时视频监控的效果。
解决方案
海康威视IP摄像头rtsp协议地址如下:
rtsp://[username]:[passwd]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
说明:
username:用户名,例如admin
passwd:密码,例如12345
ip:设备的ip地址,例如192.0.0.64
port:端口号默认554,若为默认可以不写
codec:有h264、MPEG-4、mpeg4这几种
channel:通道号,起始为1
subtype:码流类型,主码流为main,子码流为sub
例如,请求海康IP摄像机通道1的码流,url如下:
主码流:
rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.0.0.64:554/MPEG-4/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stream
rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream
rtsp流测试
基于rtsp协议的码流确定好之后,我们可以用流媒体播放器对视频地址进行测试,这里推荐使用VLC media player
,功能相当强大而且跨平台,最重要的是它还是开源的,是一款浑身闪耀着牛X气息的播放器。
- 打开VLC播放器,选择
打开网络串流
- 在网络URL中输入码流地址
- 播放效果如下