从监控摄像头拿视频流
- 作者:
 - 淡白
 - 创建时间:
 - 2022-08-13 10:08:28
 - lal rtsp flv onvif
 
摘要:本文介绍了使用ONVIF协议连接摄像头获取RTSP流地址,并使用lal流媒体服务器播放。主要步骤包括使用ONVIF Client工具连接摄像头获取RTSP流地址,然后将流地址添加到lal流媒体服务器,并通过API获取播放地址进行播放。如果遇到无法播放的情况,可以尝试更换视频编码为H.264或检查音频编码是否支持。
首先了解两个相关协议
onvif
ONVIF是一个开放的安防行业组织,致力于为安防行业提供和促进标准化开放接口,
以实现IP网络安防产品的有效互操作性。
官网
RTSP
实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。
流数据本身的传输不是RTSP的任务。大多数RTSP服务器使用实时传输协议(RTP)和实时传输控制协议(RTCP)结合媒体流传输。然而,一些供应商实现专有传输协议。例如,RealNetworks公司的RTSP服务器软件也使用RealNetworks的专有实时数据传输(RDT)。
RTSP由RealNetworks公司,Netscape公司和哥伦比亚大学开发,第一稿于1996年提交给IETF。由互联网工程任务组(IETF)的多方多媒体会话控制工作组(MMUSIC WG)进行了标准化,并于1998年发布为RFC 2326。 RTSP 2.0 于2016年发布为RFC 7826,作为RTSP 1.0的替代品。RTSP 2.0基于RTSP 1.0,但除了基本的版本协商机制之外不向后兼容。
用到的一些网站
主要流程
通过onvif协议连接登陆摄像头,这样就可以设置一些音视频参数和查看rtsp流地址。
部署lal流媒体服务器,调用 lal API接口拉取rtsp流,用户再从 lal 拉取所需的播放格式。
需要条件
- 
服务器能访问到摄像头ip
 - 
摄像头支持rtsp、rtmp等视频流
 
使用ONVIF Client连接摄像头 拿到rtsp流地址
运行工具如下:

左栏右击,添加摄像头。默认如果在一个网段下是会直接扫描出来的。

设置它的登陆信息。可能的默认密码 admin
认证后双击会出现在右侧播放。

复制url,这就是rtsp流地址。
添加流地址到lal流媒体服务器
根据官方文档或者拉下源代码运行服务器
我以源代码运行默认api端口是8083
访问http://127.0.0.1:8083/api/stat/all_group
返回
{
    "error_code": 0,
    "desp": "succ",
    "data": {
        "groups": null
    }
}
通过接口添加流地址

再访问http://127.0.0.1:8083/api/stat/all_group
{
    "error_code": 0,
    "desp": "succ",
    "data": {
        "groups": [
            {
                "stream_name": "test",
                "audio_codec": "",
                "video_codec": "H264",
                "video_width": 1280,
                "video_height": 720,
                "pub": {
                    "session_id": "",
                    "protocol": "",
                    "base_type": "",
                    "start_time": "",
                    "remote_addr": "",
                    "read_bytes_sum": 0,
                    "wrote_bytes_sum": 0,
                    "bitrate": 0,
                    "read_bitrate": 0,
                    "write_bitrate": 0
                },
                "subs": null,
                "pull": {
                    "session_id": "RTSPPULL1",
                    "protocol": "RTSP",
                    "base_type": "PULL",
                    "start_time": "2022-08-13 11:15:33.226",
                    "remote_addr": "10.211.55.5:554",
                    "read_bytes_sum": 1552868,
                    "wrote_bytes_sum": 0,
                    "bitrate": 866,
                    "read_bitrate": 866,
                    "write_bitrate": 0
                }
            }
        ]
    }
}
播放
根据需要从下面个地址获取播放地址
lalserver 各协议推拉流url地址列表
通过flv.js 播放http-flv

鉴权
通过通知和api调用来达到自定义鉴权
通知事件
其他情况
如果遇到无法播放的情况可以看下视频编码是不是h265 尝试更换为h264
或者音频编码是不支持的