海康威视rtsp取流问题

海康威视rtsp取流问题,第1张

1、先确认rtsp协议是否正确,ip:port、user/pwd等还有相关拼写是否符合海康的标准;

2、ping检查网络,ping 对应ip是否通;检查对应的端口是否开放

3、部分海康相机有安全设置,需要在配置页上允许启用rtsp协议

设置方法:

1、可以进入路由器,既然的手机能连到路由器,那就在路由器里面肯定有IP地址,找到并记下来。

2、不能看rtsp 协议的流媒体,那有2种可能,要么路由给过滤掉了,要么路由不支持。

3、可以进入到--转发规则--DMZ主机(这里以TP-LINK无线路由为例)--选择启用--输入手机设备的IP--保存并重启路由。

avformat_open_input这些代码打开文件

然后av_read_frame不停的读文件内容

然后decode,然后encode。然后avio_open打开输出文件,然后不停的将encode结果av_interleaved_write_frame到文件里。

最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。

看了雷神的一篇文章: 最简单的基于FFmpeg的推流器(以推送RTMP为例) ,他是把本地的视频文件推流至RTMP服务器,并不符合我的要求。

接着我找到另一篇文章: ffmpeg实现H264压缩并且推流至RTSP ,这篇文章只有图像编码,并没有音频编码,并且推流之后并没有播放成功。

我综合上面两位大佬的思路,和查找一些资料实现了这个功能。

RTSP服务器使用的是 HappyTime 的免费试用版本。

我抓到的bitmap是BGRA格式的,所以使用的图像格式是 AV_PIX_FMT_BGRA cropImage 是含有rgba图像的数组

调用:

由于我是实时抓取的屏幕, frame_yuv->pts 设为当前的时间戳,以保证能正常播放。

调用:

调用:

其中pcm_buff是包含pcm数据的数组

使用udp传输时传到1400多帧就断开链接了,原因不明,所以改用使用tcp协议传输

延迟有15秒左右

参考:

>

首先采用的是vlc插件,辅助展示后台返回的rtsp流,但是最终vlc显示的视频大小分辨率是1:1形式,不理想,且vlc支持的浏览器有:ie浏览器,谷歌45版本以下;限制版本太高;

然后想让后台把rtsp流转换为hls流,前端比较好控制样式等,网页响应速度也会提升很多,结果项目使用的海康摄像头,是264段,而转hls只支持265段的,只能放弃;

最终还是返回使用海康自带的插件,切换布局时,切换插件的layout

关于视频覆盖d框问题:使用接口JS_hideWin()隐藏窗口

在视频离开页面时一定要记得销毁服务,防止页面运行缓慢

最近发现有的网站上,显示的视频流很丝滑,而且在多路情况下不会出现页面卡死。 总结了一下所使用的技术。

后端推消息,把数据转为json字符串,通过websocket推给前端, 使用base64编码

{

"channel": "camera_1",

"url": "data:image/png;base64,iV"

}

前端接收到数据后,解码,使用img 标签展示 base64

客户端的传输方式改为 ArrayBuffer方式。将channel、文件流等信息拼接为二进制数据。 通过websocket推送给前端

举例:

channel频道: camera_1 占两个字节;

: file文件流 占128字节

字节顺序 Little-endian

前端读取为ArrayBuffer, 通过视图 *** 作,取出的二进制流,生成Blob对象

读取blob对象, 返回 URL格式的字符串(base64编码)以表示所读取文件的内容

前端img 标签 src 赋值为 base64 字符串,显示视频流。

以上就是关于海康威视rtsp取流问题全部的内容,包括:海康威视rtsp取流问题、手机想看rtsp流媒体视频,路由器端口映射该如何设置、c++ ffmpeg如何获取RTP包中的Seq和timestamp等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9705859.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存