ZLMediaKit尝试解决GB28181(UDP方式)的视频花屏问题

2023-11-18

问题现象: 视频出现大量花屏,无法观看

已尝试的方案

  • try1 服务器调优
    增加服务器的缓存接收大小, 减少UDP的丢包,尝试无效
1.下面的代码添加到/etc/sysctl.conf的末尾,然后保存
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_default = 8388608
net.core.wmem_max = 16777216
2.运行sysctl -p使设置生效
3.再次查看缓存大小
cat /proc/sys/net/core/rmem_max
  • try2 程序调优
    修改ZLMediaKit源码,调整RtpReceiver.h 接收大小调整,无效
cd ZLMediakits
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/usr/local/openssl -DOPENSSL_LIBRARIES=/usr/local/openssl/lib
cmake --build . --target MediaServer

修改文件截图
在这里插入图片描述

继续搜索视频花屏问题的答案 ,只剩下源头调整 和FFMPEG 调整2个方案

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

  • Ans1: ( 从源头修改)
    网络摄像头支持RTSP使用TCP或者UDP传输,使用TCP还是UDP取决于客户端的SETUP请求。SETUP请求中的Transport是TCP就使用TCP传输,Transport是UDP就使用UDP传输。
    TCP提供可靠的传输,可以将网络摄像头传输协议由UDP改为TCP
  • Ans2: (从FFMPEG源码修改)
    UDP 缓冲区大小不足会导致多个高分辨率视频流的流中断 ,需要重建 ffmpeg/libav 更改 udp.c 源文件中的 UDP_MAX_PKT_SIZE.

方案1: 因为我们是上级平台,无法从源头修改

try3 FFMPEG调优

调整UDP接收的缓存大小

1.修改文件: /ffmpeg-4.1/libavformat/udp.c

修改文件截图
在这里插入图片描述

2.重新编译ffmpeg

 cd ffmpeg-4.1
 sudo ./configure --prefix=/usr/local/ffmpeg
 sudo make & make install
 export PATH=/usr/local/ffmpeg/bin:${PATH}

在这里插入图片描述

3. 准备尝试,希望good luck !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZLMediaKit尝试解决GB28181(UDP方式)的视频花屏问题 的相关文章

  • 自 2012 年以来,WinSock 注册 IO 性能是否有所下降?

    我最近使用 MS 为该 API 提供的稍微可接受的文档编写了基于 WinSock Registered IO RIO 的 UDP 接收 最终的性能非常令人失望 单套接字性能有些稳定 约为每秒 180k 数据包 使用多个 RSS 队列 即多个
  • 如何在 iOS 和 macOS 上的 Safari 中使用网络摄像头录制视频?

    我已经发布了几条路径 1 录制视频https caniuse com feat html media capture https caniuse com feat html media capture但它仅适用于 iOS 并且无法自定义 我
  • 使用 Servlet 启动 VLC HTTP Stream 时出现问题

    我正在为自己开发一个 VLC 项目 我的目标是创建一个 HTML 前端来启动流 我通过使用 Java Servlet 来完成此操作 概述 乌班图13 04 Java 7 21 冰茶 2 3 9 Eclipse JAVAEE IDE 雄猫7
  • 数据包丢失和数据包重复

    我试图找出数据包丢失和数据包重复问题之间的区别 有谁知道 数据包重复 是什么意思 和TCP检测到丢失时重传数据包一样吗 No In TCP 数据包 的传递是可靠的 我认为在这种情况下术语数据应该更好 因为它是面向流的协议 数据包丢失和重复是
  • 自动旋转、UIWebView 和 UITabBarController

    我有以下视图层次结构 UITabBarController UINavigationController UIViewController only supports Portrait rotation UINavigationContro
  • HTML5 视频结束倒计时

    我可以对 HTML5 视频的结束进行倒计时吗
  • 使用 STUN 打孔

    我目前正在尝试通过 Internet 发送 UDP 消息 并且必须为端点 A 和 B 都位于 NAT 后面 设置防火墙 为此 我想使用 STUN 服务器进行打孔 当 A 创建对 STUN 服务器的请求 例如 私有 85 1 1 12 600
  • Facebook Messenger Bot:视频附件的大小?能有多大?

    至少在此处的文档中没有说明通过 Facebook Messenger 发送视频附件时所需的大小和格式 https developers facebook com docs messenger platform send api refere
  • VideoJs 在 Firefox 中的 Flash 回退问题

    我尝试将 videoJs 添加到我的网站来播放 MP4 文件 所有这些在 Chrome 中都能完美运行 但当我转到 Firefox 不支持 MP4 文件 时 Flash 播放器停留在黑屏上 按钮不执行任何操作 简单的问题 为什么 我不明白
  • 如何使用 AVFoundation 组合不同方向的视频剪辑

    我正在尝试使用 AVFoundation 将多个视频剪辑合并为一个 我可以使用下面的代码使用 AVMutableComposition 创建单个视频 AVMutableComposition composition AVMutableCom
  • 如何在 Angular2 中嵌入视频?

    我想开发单页应用程序 它是一个视频门户 用户可以登录 查看视频列表 导航到单个视频 对视频进行评分 并可以执行所有媒体相关任务 例如 播放 暂停 调整音量和寻找视频位置 既然有
  • Flask 无法播放 html 中的视频

    我有一个 Flask 应用程序 应该在加载页面时播放视频 但它只显示在左上角 并且不会从视频的第一帧开始改变 我已经尝试将其插入 html 代码但它不起作用 extends base html block content
  • 将 CIFilter 与 AVFoundation 结合使用 (iOS)

    我正在尝试将滤镜应用于在 iOS 上使用 AVFoundation 创建的视频合成 滤镜可以是模糊 像素化 棕褐色等 我需要实时应用效果并能够将复合视频渲染到磁盘 但我很高兴从其中之一开始 不幸的是 我似乎无法弄清楚这一点 这是我能做的 我
  • recvfrom() 中的 addrlen 字段有何用途?

    我在程序中使用 recvfrom 从我在 src addr 中指定的服务器获取 DGRAM 数据 但是 我不确定为什么需要初始化并传入addrlen 我读了手册页 但不太明白它的意思 如果src addr不为NULL 并且底层协议提供了源地
  • 检测视频何时缓冲,如果缓冲则显示 gif

    我想知道是否有办法在视频缓冲时显示 gif 我正在使用 HTML5 视频标签 其中有一种方法可以检测视频何时缓冲 如果没有 是否有替代方法 我看过 如何检测视频何时缓冲 https stackoverflow com questions 1
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • Android - 如何合并两个视频

    基本上 我正在寻找一种将两个 mp4 视频文件 在 SD 卡上 组合在一起的方法 更像是在第一个视频的末尾附加第二个视频 我进行了很多搜索 但找不到合适的解决方案 好吧 我根本找不到任何解决方案 所以我的问题是 是否有一个库可以组合 并可能
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网
  • Android-全屏视频视图

    我正在尝试使此 VideoView 以全屏模式显示 public class ViewVideo extends Activity private String filename private static final int INSER
  • 电子应用程序可以播放本地支持的任何视频吗?

    我知道浏览器通常会限制玩家mp4 and webm类型的媒体 但我想知道基于电子的应用程序是否可以运行 MKV 和 AVI 等格式的本地视频 我找不到明确的来源来告诉我什么是可用的 什么是不可用的 Electron 仍然仅限于网络技术 这意

随机推荐

  • 1.3端口扫描:利用Nmap工具进行端口扫描

    1 预备知识 Nmap介绍 nmap的功能 端口扫描 主机发现 服务 版本识别 操作系统识别 网络路由跟踪 Nmap脚本引擎 nmap的扫描方式 Half open scanning 默认扫描方式 TCP connect TCP ACK s
  • 正则匹配微信昵称

    x 4e00 x 9fa5 a zA Z0 9 2 32 u x 1F600 x 1F64F x 1F300 x 1F5FF x 1F680 x 1F6FF x 2600 x 26FF x 2700 x 27BF u
  • PHP使用PhpSpreadsheet库的操作Excel表格

    一 PhpSpreadsheet 介绍 PhpSpreadsheet是一个用纯PHP编写的库 提供了一组类 使您可以读取和写入不同的电子表格文件格式 PhpSpreadsheet提供了丰富的API接口 可以设置诸多单元格以及文档属性 包括样
  • 全国通用DNS服务器

    全国各地电信铁通DNS服务器地址 北京 202 96 199 133 202 96 0 133 202 106 0 20 202 106 148 1 202 97 16 195上海 202 96 199 132 202 96 199 133
  • JavaSE面试总结

    网络 反射 网络 OSI 的七层模型都有哪些 TCP与UDP区别 什么是三次握手四次挥手 socket编程 time wait状态如何产生 tcp为什么要三次握手 TCP如何保证可靠传输 什么是 TCP 粘包 它的产生原因以及解决方法 TC
  • 微信小程序 顶部自定义导航 “navigationStyle“: “custom“ 真机iPhone6/7/8不显示胶囊按钮

    微信小程序 顶部自定义导航 navigationStyle custom 要实现这种效果图 1 在哪个页面上实现自定义导航栏就在哪个页面的 json 文件中写上 navigationStyle custom 如果在app json写那就是所
  • 30多岁挨踢人要转行的焦虑,是真的吗

    30多岁挨踢人要转行的焦虑 是真的吗 从菜鸟到高级都在焦虑的一个问题 到了30多岁还没有做出点成就的话 就只能转行了 诸如做管理 创业开饭馆等等 我一直对此观点持保留态度 粗略看国内挨踢的发展历程 2000年出现第一次泡沫 往前推的话 有规
  • 2023,DaaS驶入“AI大航海时代”

    2023 制胜 已然成为所有行业 企业的共同命题 随着数字化行至中程 数据壁垒逐渐被打破 DaaS作为企业增长问题的解法 再次被看到 作者 斗斗 编辑 皮爷 出品 产业家 2002年 在竞争激烈的美国职业棒球联盟 奥克兰运动家队无论在人员和
  • 关于C的预编译 宏定义 的一些使用[不断积累中]

    头文件 防止重复包含 根据 define 和条件编译 ifdef ifndef else endif 最经常的使用是 头文件 防止重复包含 但是 使用 pragma once 更好 现在 gcc cl exe 都支持 它不但代码更少 而且不
  • 点云分割介绍

    PCL之点云的分割 参考博客 https www yuque com huangzhongqing pcl kg7wvi peMqz https blog csdn net lizhengze1117 article details 890
  • 股权投资模型-CAPM模型和PEG模型(内附示例数据)

    一 CAPM模型 1 数据来源 示例数据附在分享文件中 2 数据年份 2000 2019年 3 数据指标 资本资产定价模型 Capital Asset Pricing Model 简称CAPM 是由美国学者威廉 夏普 William Sha
  • @JsonView的使用

    看到一个新的注解以前没有用过 记录一下使用方法 注意是 com fasterxml jackson annotation JsonView JsonView可以过滤pojo的属性 使Controller在返回json时候 pojo某些属性不
  • Spring MVC基本操作

    Spring MVC 一 Spring MVC概述 1 1 Spring MVC 简介 MVC是一种常见的用户界面设计模式 设计套路 其实现方案有很多 Struts2 SpringMVC等等 MVC Model 数据模型 View 视图 C
  • Delete `␍`eslint(prettier/prettier) Expected linebreaks to be ‘LF‘ but found ‘CRLF‘错误的解决方案

    Delete eslint prettier prettier Expected linebreaks to be LF but found CRLF 错误的解决方案 执行 git config global core autocrlf f
  • 蓝桥杯备赛:贪心

    例题1 最少砝码 问题描述 你有一架天平 现在你要设计一套砝码 使得利用这些砝码可以称出任意 小于等于 NN 的正整数重量 那么这套砝码最少需要包含多少个砝码 注意砝码可以放在天平两边 输入格式 输入包含一个正整数 N 输出格式 输出一个整
  • 【Java---数据结构】顺序表

    目录 一 线性表 二 顺序表 概念及结构 接口实现 打印顺序表 gt 遍历数组 在pos位置添加一个元素 插入 判断是否包含某个元素与查找某个元素对应的位置 获取pos位置的元素与给 pos 位置的元素设为 value 删除第一次出现的元素
  • 简单的小程序聊天对话窗口界面

    一个简单的微信小程序聊天对话窗口界面 包括发送文本功能 直接上代码 js代码 简单版 Page data content 当前登录者信息 login id 2023 user 大猪蹄子 avatar https img2 baidu com
  • 按钮 java_java如何创建并设置一个按钮

    java如何创建并设置一个按钮 AWT 抽象窗口工具包 是java提供用来建立和设置java的图形用户界面的基本工具 Swing 轻量级的图形界面组件 是以AWT平台为基础构建起来的新组件与AWT相比 Swing组件在实现时不包括任何依赖特
  • WebService 客户端获取别的服务器端传递xml或者json中文乱码

    最近在对接某行的网站后台WebService接口 对接过程中出现的乱码做下记录 使用WebService对接方式是 JAX WS 方式 开发工具 myeclipse 新建客户端 依次按照步骤 生成java文件 编写测试类 以上能与对方接口进
  • ZLMediaKit尝试解决GB28181(UDP方式)的视频花屏问题

    问题现象 视频出现大量花屏 无法观看 日志中出现大量的丢包输出 排查ZLMediaKit 的解决方案 https github com ZLMediaKit ZLMediaKit issues 1221 已尝试的方案 try1 服务器调优