ffmpeg拉取rtsp网络视频流报错解析
在使用ffmpeg调用api方式对一个rtsp网络视频流拉流播放时,应用程序出现了一些错误提示,并且拉流播放的画面也出现了一些马赛克的现象。所以这里便对应用程序所产生的错误提示进行了详细的研究和分析。这里将分析结果贴在下面,若其他朋友遇到类似的错误,供参考。
[rtsp @ 0x560bbad10b00] max delay reached. need to consume packet-------------该报错说明ffmpeg接收端的缓冲区已满,达到最大延迟限制,接收端无法及时处理这些视频帧
[rtsp @ 0x560bbad10b00] RTP: missed 152 packets-------丢失了部分rtp协议数据包,造成的影响是可能是马赛克 卡顿或者跳帧
Invalid UE golomb code--------解码失败或者部分失败
[h264 @ 0x560bbad513c0] cbp too large (3199971767) at 86 31-------[h264 @ 0x560bbad513c0]: 表示这是 H.264 解码器报告的错误,后面的十六进制数是解码器实例的内存地址。"cbp too large (3199971767)": CBP 代表 Coded Block Pattern,这个值异常大。"at 86 31": 可能表示错误发生在第 86 帧的第 31 个宏块(或者是其他相关的位置信息),问题原因可能是解码器版本与编码器版本不匹配或者编码器生成了不符合h264的数据流
[h264 @ 0x560bbad513c0] error while decoding MB 86 31-----[h264 @ 0x560bbad513c0]: 表示这是 H.264 解码器报告的错误,后面的十六进制数是解码器实例的内存地址。"error while decoding MB 86 31": 表示在解码第 86 个宏块(Macroblock)的第 31 个子块时发生了错误。
[h264 @ 0x560bbad513c0] concealing 4403 DC, 4403 AC, 4403 MV errors in P frame------[h264 @ 0x560bbad513c0]: 表示这是 H.264 解码器报告的信息,后面的十六进制数是解码器实例的内存地址。"concealing": 表示解码器正在尝试隐藏(或修复)错误。"4403 DC, 4403 AC, 4403 MV errors": 指出了三种不同类型的错误及其数量。"in P frame": 表明这些错误发生在 P 帧(预测帧)中。DC(直流)系数:表示块的平均亮度或色度。
AC(交流)系数:表示块内的细节和纹理信息。
MV(运动矢量):用于预测帧间运动的向量。
P 帧:预测帧,依赖于之前的 I 帧或 P 帧进行编码。
a. DC 错误:影响整个宏块的基本亮度或色度。
b. AC 错误:影响块内的细节和纹理。
c. MV 错误:影响运动预测的准确性。
错误原因:
网络传输过程中的数据包丢失或损坏。 b. 存储介质问题:
硬盘或其他存储设备上的文件损坏。 c. 编码问题:
编码器生成了不完全符合标准的比特流。 d. 解码器限制:
解码器可能无法处理某些特定的编码特性。
影响:
视频质量下降:可能会出现马赛克、模糊或冻结的画面。
运动不连贯:由于 MV 错误,可能导致运动预测不准确。
色彩或亮度异常:DC 错误可能导致整个区块的颜色或亮度出现问题。
[h264 @ 0x560bbad513c0] Increasing reorder buffer to 1-------[h264 @ 0x560bbad513c0]: 表示这是 H.264 解码器报告的信息,后面的十六进制数是解码器实例的内存地址。
"Increasing reorder buffer to 1": 表示解码器正在增加其重排序缓冲区的大小到 1。
为什么会出现这个消息:
a. 初始化过程:
解码器在开始时可能不知道需要多大的重排序缓冲区。
它可能从较小的值开始,然后根据需要增加。
b. 适应视频特性:
某些视频流可能需要更大的重排序缓冲区来正确处理帧序列。
c. 编码特性:
视频可能使用了 B 帧(双向预测帧)或复杂的 GOP(图像组)结构。
影响:
这通常不会导致任何问题或错误。
它是解码器正常工作和自我调整的一部分。
可能会略微增加内存使用。
"Increasing reorder buffer to 1" 是一个正常的操作日志,表示 H.264 解码器正在调整其内部缓冲区以更好地处理输入的视频流。这种自适应行为有助于确保视频的正确解码和流畅播放
[rtsp @ 0x560bbad10b00] max delay reached. need to consume packet-----这是与 RTSP(Real Time Streaming Protocol)流相关的一个警告或错误提示,[rtsp @ 0x560bbad10b00]: 表示这是 RTSP协议处理器报告的信息,后面的十六进制数是处理器实例的内存地址。"max delay reached": 表示达到了最大允许的延迟时间。"need to consume packet": 提示需要消费(处理)数据包。
出现这个消息的原因:
a. 处理速度不足:
接收数据包的速度快于处理数据包的速度。
可能是由于解码器处理速度慢或系统资源不足导致的。
b. 网络延迟:
网络传输延迟导致数据包堆积。
c. 缓冲区设置不当:
接收缓冲区可能设置得太小,无法容纳足够的数据包。
d. 流媒体服务器问题:
服务器可能发送数据的速度过快。
解决方法:增加缓冲区大小和最大延迟时间 -buffer_size 10240k -max_delay 5000000或者使用更快的解码器例如nvidia的解码器或者降低接收视频的质量
[rtsp @ 0x560bbad10b00] RTP: missed 3 packets
[h264 @ 0x560bbad513c0] out of range intra chroma pred mode----这是h264解码器的一个错误,[h264 @ 0x560bbad513c0]: 表示这是 H.264 解码器报告的信息,后面的十六进制数是解码器实例的内存地址。
"out of range intra chroma pred mode": 表示在帧内(intra)色度(chroma)预测模式中遇到了超出范围的值。
错误原因:
解码器遇到了一个不在预定义范围内的色度预测模式值。
这通常意味着比特流中的数据可能已经损坏或不符合 H.264 标准。
可能的原因:
视频文件损坏:
文件在传输或存储过程中可能被部分损坏。 b. 编码器错误:
编码视频的软件可能存在 bug,生成了不合规的比特流。 c. 不兼容的编码设置:
使用了解码器不支持的高级或非标准的编码特性。 d. 解码器 bug:
在某些罕见情况下,可能是解码器自身的问题。
从上面的日志可以得到结论:自己的程序出现马赛克的原因很大一部分原因是缓冲区满,达到了ffmpeg允许的最大延迟限制;也有一部分原因可能是编码器出现了一些不符合H264协议的数据流;另外也有接收端服务器性能问题。
解决方面的问题方法有以下几个方面:
- 降低服务端的帧率,这样数据流就会较小,可能会减少这种报错
- 接收解码端使用更快的解码器,例如nvida的h264_cuvid等
- 接收端扩大缓冲区的大小和增加最大延迟时间
- 调整视频源的发送分辨率和降低比特率
相关文章:
ffmpeg拉取rtsp网络视频流报错解析
在使用ffmpeg调用api方式对一个rtsp网络视频流拉流播放时,应用程序出现了一些错误提示,并且拉流播放的画面也出现了一些马赛克的现象。所以这里便对应用程序所产生的错误提示进行了详细的研究和分析。这里将分析结果贴在下面,若其他朋友遇到类…...
c# iTextSharp 读取PDF
安装 iTextSharp: 可以通过 NuGet 包管理器安装 iTextSharp: Install-Package itext7创建 PDF 文件: using System; using System.IO; using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element;class Program {static voi…...
<<迷雾>> 第5章 从逻辑学到逻辑电路(3)--与门 示例电路
与门及其符号(2输入端) info::操作说明 鼠标单击开关切换开合状态 系统中使用 半方形半圆形 表示与门 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch05-11…...
Java应用的数据库连接池连接超时处理
Java应用的数据库连接池连接超时处理 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在Java应用中,数据库连接池是管理数据库连接的重要组件。然而,当数据库负载过高或网…...
机器学习:opencv--摄像头OCR
目录 前言 一、三个函数 1.显示图像 2.点排序 3.透视变换 二、代码实例 1.打开摄像头 2.图像预处理 3.检测特定轮廓 4.对轮廓进行处理 5.释放资源 前言 摄像头OCR指的是利用摄像头捕捉图像中的文字信息,并通过光学字符识别(OCR)技…...
基于二分查找的动态规划 leetcode 300.最长递增子序列
如题: https://leetcode.cn/problems/longest-increasing-subsequence/description/ 其实常规动态规划的解法就没什么好说的了,有意思的是官方放出了一个二分查找的动态规化解法,时间复杂度能降到O(nlog(n)),但是为什么这样能解&…...
Java8 IntStream流sum的Bug
做. - 力扣(LeetCode)的时候发现 IntStream流中的sum在相加的过程中会加到突破Int上限导致数据不对,需要装成LongStream流才能有正确的输出。 long sum Arrays.stream(milestones).asLongStream().sum(); 要这样子写,只把sum改…...
PCL 索引空间采样
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 索引空间采样 2.1.2 可视化原始点云和下采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总…...
PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(三)
作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服!下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有"贴Builder(PasteSpide…...
【无标题】logistic映射
当Logistic映射中的控制参数 μ \mu μ 为负数时,系统的行为与正数 μ \mu μ 的情况截然不同。Logistic映射的一般形式是: x ( t 1 ) μ x ( t ) ( 1 − x ( t ) ) x(t1) \mu x(t) (1 - x(t)) x(t1)μx(t)(1−x(t))其中 x ( t ) x(t) x(t) 表示时…...
基于Node.js+Express+MySQL+VUE科研成果网站发布查看科研信息科研成果论文下载免费安装部署
目录 1.技术选型 2.功能设计 3.系统架构 4.开发流程 5.开发背景 6.开发目标 7.技术可行性 8.功能可行性 8.1功能图 8.2 界面设计 8.3 部分代码 构建一个基于Spring Boot、Java Web、J2EE、MySQL数据库以及Vue前后端分离的科研成果网站,可…...
提升C++代码质量的一些建议
文章目录 1. 命名清晰2. 简洁性3. 一致性4. 注释5. 避免复杂性6. 重构7. 测试8. 错误处理9. 文档10. 代码复用11. 性能优化12. 安全性- 代码规范推荐 C开发中,写出优雅且可维护的代码不仅能提升代码质量,还能提高团队协作效率和项目长期的可扩展性。以下…...
起重机防摇摆技术如何达标-武汉正向科技
武汉正向科技防摇摆控制器 主要技术参数 1、防摇摆精度: 0.4 2、行车到达目标位置偏差位置偏差: 25mm 3、通讯方式:PROFINET / PROFIBUS / RS232 / RS422 / RS485; 4、消除载荷的摇摆达 96% 以上; 5、技术先进…...
[大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成
MoRAG--Multi-Fusion Retrieval Augmented Generation for Human Motion KS Shashank, S Maheshwari, RK Sarvadevabhatla - arXiv preprint arXiv:2409.12140, 2024 MoRAG - 基于多部分融合的检索增强型人体动作生成 1. 目录 MoRAG--Multi-Fusion Retrieval Augmented Generat…...
解决端口被占用
当你被你的编译器提醒, 当前端口被占用, 但明明你的服务什么的都没有启用,这时有三种解决办法: 1 。 重启 。 重启解决80%的问题 2 。 修改你的端口号 。 3 。 去windows命令行中查看,端口占用情况 第一步 …...
【递归】7. leetcode 404 左叶子之和
1 题目描述 题目链接:左叶子之和 2 解答思路 递归分为三步,接下来就按照这三步来思考问题 第一步:挖掘出相同的子问题 (关系到具体函数头的设计) 第二步:只关心具体子问题做了什么 (关系…...
react+antdMobie实现消息通知页面样式
一、实现效果 二、代码 import React, { useEffect, useState } from react; import style from ./style/index.less; import { CapsuleTabs, Ellipsis, Empty, SearchBar, Tag } from antd-mobile; //消息通知页面 export default function Notification(props) {const [opti…...
Git 撤销一个已经push到远端仓库的commit
在 Git 中,撤销一个已经推送到远程仓库的改动有几种不同的方法,具体取决于你是否想要完全删除改动,还是只是恢复文件的某个状态。以下是常见的几种方法: git revert 撤销特定的commit git revert 是最安全的方法,因为…...
lambda表达式底层实现
一、lambda 代码 & 反编译 原始Java代码 假设我们有以下简单的Java程序,它使用Lambda表达式来遍历并打印一个字符串列表: import java.util.Arrays; import java.util.List;public class LambdaExample {public static void main(String[] args) {…...
鸿蒙NEXT开发-组件事件监听和状态管理(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
ssm+java2026年毕设司库管理系统【源码+论文】
本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于企业理财与融资管理问题的研究,现有研究主要以大型企业ERP系统或通用财务管理软件为主,专门针对中…...
Monocle 3实战:5步搞定单细胞marker基因筛选与可视化(R语言版)
Monocle 3实战:5步搞定单细胞marker基因筛选与可视化(R语言版) 单细胞RNA测序技术正在重塑我们对复杂生物系统的理解。在这个数据爆炸的时代,如何从海量的单细胞数据中快速准确地识别关键marker基因,成为每个研究者必须…...
量子行走:从理论到Python实现——6. 量子机器学习与前沿应用
量子机器学习探索了量子计算与人工智能的交叉领域,通过利用量子叠加与纠缠特性处理经典难以应对的高维数据模式。Berkeley CS269Q课程与PennyLane教程系统阐述了从量子特征映射到实际化学模拟的完整技术栈,本章将围绕特征空间扩展、优化求解与信息安全三…...
水库调度员必看:动态规划在月度发电计划中的5个避坑指南
水库调度员实战指南:动态规划在月度发电计划中的5个关键避坑策略 在水利工程领域,水库调度是一项集科学性、技术性和艺术性于一体的复杂工作。作为水库调度员,我们每天都在与时间、水量和电力需求进行着精妙的博弈。而动态规划作为一种强大的…...
如何用ABC系统三分钟搞定复杂电路优化:顺序逻辑综合与形式验证的完整指南
如何用ABC系统三分钟搞定复杂电路优化:顺序逻辑综合与形式验证的完整指南 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc 在现代数字电路设计中,你…...
R语言新手必看:如何用pkgbuild和Sys.which检查并安装Rtools(附绑定教程)
R语言开发环境配置全指南:从Rtools安装到编译环境搭建 刚接触R语言的开发者,在尝试从源代码编译安装某些扩展包时,常常会遇到"make not found"之类的错误提示。这通常意味着系统缺少必要的编译工具链。本文将详细介绍如何在Windows…...
如何用Electron打造全平台视频播放神器:zyfun跨平台开发实战指南
如何用Electron打造全平台视频播放神器:zyfun跨平台开发实战指南 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在当今多设备、多系统的数字时代,一款真正优秀的视频播放器…...
Undecimus技术解析与实战指南:iOS 11-12.4设备越狱完全攻略
Undecimus技术解析与实战指南:iOS 11-12.4设备越狱完全攻略 【免费下载链接】Undecimus unc0ver jailbreak for iOS 11.0 - 12.4 项目地址: https://gitcode.com/gh_mirrors/un/Undecimus Undecimus作为一款针对iOS 11.0至12.4系统的开源越狱工具,…...
联想M920x黑苹果终极指南:从零构建完美macOS系统
联想M920x黑苹果终极指南:从零构建完美macOS系统 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 你是否想让联想M920x这款紧凑型主机运行macOS系统ÿ…...
一文读懂大模型,彻底告别 AI 焦虑 | 零门槛
今天,不聊复杂代码、不晒专业论文,用最直白的语言,带非技术背景的你彻底读懂大模型:核心逻辑、实用场景、产品选型,以及普通人应对AI浪潮的正确姿势。全文干货密集,建议收藏转发,读完摆脱AI焦虑…...
