如何使用curl从ONVIF协议摄像头获取backchannel URI
问题根因
- 请求URL拼接错误:你误将
RTSP/1.0版本字段写入了请求URL,curl发起RTSP请求时会自动携带版本信息,不需要手动拼接 - 请求头配置错误:首先
Content- Type字段中间多了多余空格,其次DESCRIBE请求不需要携带Content-Type头,需要替换为Accept: application/sdp头,声明你期望接收SDP格式的描述返回 - curl默认RTSP逻辑问题:你没有指定curl使用自定义RTSP请求方法,它默认会优先发起OPTIONS请求,所以你看到的返回是OPTIONS的响应结果,根本没有执行你需要的DESCRIBE请求
修正后的请求命令
curl -v --rtspreq DESCRIBE \ "rtsp://admin:password@192.168.1.212:554/Streaming/Channels/101" \ -H "Accept: application/sdp" \ -H "User-Agent: ONVIF Rtsp client" \ -H "Require: www.onvif.org/ver20/backchannel"
后续操作说明
- 命令执行后如果摄像头支持backchannel功能,返回的SDP内容中会包含标记了backchannel属性的音频轨道,一般为带
a=sendonly属性的音频流,对应的媒体端口就是后续音频推流的目标端口 - 拿到SDP配置后,需要先发送SETUP请求完成backchannel轨道的会话协商,协商完成后按照约定的编码格式(通常为G.711a、G.711u或AAC)将PC麦克风采集的音频推送到对应RTSP会话即可
- 若修正后仍未返回backchannel相关的SDP内容,先确认你的摄像头型号确实支持ONVIF backchannel规范,部分低端摄像头仅实现了ONVIF基础拉流功能,未实现反向音频通道,还有部分摄像头需要先在WEB管理页开启音频输出、反向音频权限才能正常调用该接口
内容的提问来源于stack exchange,提问作者tyamzak
相关产品推荐
相关产品推荐

