FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错

场景

Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放:

Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放_monibuca 搭建流媒体服务-CSDN博客

Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览:

Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头-CSDN博客

上面拉取rtsp视频里地址一直是海康协议,如果是大华摄像头。

大华摄像头RTSP视频流地址格式:

rtsp://[username]:[password]@[ip]:[port]/cam/realmonitor?channel=1&subtype=0

username: 用户名。例如admin。

password: 密码。例如admin123。

ip: 为设备IP。例如 192.168.1.101。

port: 端口号默认为554,若为默认可不填写。

channel: 通道号,起始为1。例如通道2,则为channel=2。

subtype:码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

如:

rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1

但是在使用上面的rtsp流地址进行拉流测试发现。

使用VLC播放rtsp流时无画面

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错_第1张图片

使用FFmpeg的ffplay

ffplay -i rtsp的url时提示:

method DESCRIBE failed:404 Not Found

subtype 不是内部或外部命令,也不是可运行的程序。

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错_第2张图片

并且在使用Monibuka进行拉流时提示:

RTSP 拉流“......”,"error":"bad status code:404(Not Found)"

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错_第3张图片

注:

博客:
霸道流氓气质-CSDN博客

实现

这是因为特殊字符&未进行URLCode编码导致。

 FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错_第4张图片

将&进行url编码之后

rtsp://admin:admin123@ip:554/cam/realmonitor?channel=1%26subtype=0

此时再进行拉流测试一切正常。

2、为什么使用urlcode编码

因为在把字符串用url方式传送给httpserver时,字符串中不能出现中文和特殊字符(空格、换行符);所以要对url 进行urlcode 。

每一个中文字符都有一个urlcode 编码

每一个特殊字符都有一个urlcode编码

可以在 urlcode 在线工具进行查看

 英文的urlcode 是本身,不会变化

3、如果确定urlcode编码没问题后,大华摄像头仍然无法拉取rtsp流地址可以排查如下

大华摄像头rtsp流地址端口默认是554,查看方式

设置-端口-RTSP端口

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错_第5张图片

排查大华摄像头视频编码

设置-视频-视频编码-主子码流,这里是H265,将其修改为H264尝试。

排查大华摄像头RTSP流鉴权

设置-安全-RTSP鉴权-将其修改为None

排查554端口是否开放

telnet ip 554

如果提示telnet不识别,win10上程序和功能,打开telnet客户端。
 


 

你可能感兴趣的:(架构之路,ffmpeg)