首页 > 编程知识 正文

udp传输视频传输花屏,摄像头udp端口

时间:2023-05-03 20:34:34 阅读:232027 作者:3021

问题描述

预览网络摄像头的画面时,经常出现雪花屏的问题。原因是网络摄像头默认使用RTSP协议,RTSP下层默认使用UDP传输,而UDP传输是不可靠的,会丢包,所以导致雪花屏。

问题解决

网络摄像头支持RTSP使用TCP或者UDP传输,使用TCP还是UDP取决于客户端的SETUP请求。SETUP请求中的Transport是TCP就使用TCP传输,Transport是UDP就使用UDP传输。
TCP提供可靠的传输,所以决定将网络摄像头传输协议由UDP改为TCP。使用ffmpeg采集网络摄像头的视频流存为mp4,默认UDP传输,以海康摄像头为例,命令行如下:

ffmpeg -i rtsp://admin:123456@192.168.2.4:554/h264/ch33/main/av_stream mycamera.mp4

使用TCP传输:

ffmpeg -i -f rtsp -rtsp_transport tcp rtsp://admin:123456@192.168.2.4:554/h264/ch33/main/av_stream mycamera.mp4

如果使用代码采集视频,则需加上以下代码:

AVDictionary *ifmtdict; av_dict_set(&ifmtdict, "rtsp_transport", "tcp", 0); ... avformat_open_input (..., &ifmtdict);

命令行和代码原理上是一样的。我试验过,两种方式都可行。抓包验证,如图所示:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。