当前位置: 首页 > 编程日记 > 正文

【FFmpeg】FFmpeg编解码H264产生马赛克、伪影的解决方法

1、问题描述

   使用FFmpeg编码H264,再解码显示时,产生马赛克:有时是在画面静止时,静止时间越长,马赛克、伪影越多;有时是在画面切入切出时;有时是在网络带宽不够时

2、原因分析

2.1 丢帧

   网络状况差的情况下(带宽不足),容易丢帧,在视频画面播放过程中,若I帧丢失了,则后面的P帧也就随着解不出来,就会出现视频画面黑屏的现象;若P帧丢失了,则视频画面会出现花屏、马赛克等现象。
如果不想看到马赛克,需要等待下一个I帧或者通知发送端重发IDR帧。
关于I帧、P帧、IDR帧等概念参见下面的博客:
I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

2.2 量化噪声

   量化噪声:也叫压缩伪影:详见博客:量化参数QP与量化噪声(压缩伪影)
网络状况好的情况下(带宽足够),编码的图像质量差,尤其是静止画面,伪影逐渐变多。这种情况下,一个可能的原因是量化参数QP导致,诱因是非固定码率模式下,码率降低。
   实际上现有的码率控制算法主要是通过调整离散余弦变换的量化参数大小输出目标码 率。实际上,量化参数(QP)反映了空间细节压缩情况,如 QP 小,大部分的细节都会被保留&#

相关文章:

LINUX内核升级

内核版本是2.6.18,新的内核是2.6.26。 1.下载新内核,下载网站www.kernel.org 2.copy内核到/usr/local/src下 3.解压内核 解压内核命令 tar -xjvf linux-2.6.26.tar.bz2 4.清理以前编译所生成的文件 命令为 make distclean,如果以前没有编…

我在美团的这两年,想和你分享

作者 | 石晓文来源 | 小小挖掘机(ID:wAIsjwj)012017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实…

【Qt】QtCreator updatePchInfo:switching to none

1、Pch名词解释 Pch(PreCompiled Headers)预编译头文件。 使用方法: CONFIG+=precompile_header PRECOMPILED_HEADER=XXX.h 2、updatePchInfo:switching to none 和QtCreator代码格式化Beautifier插件配置了clang code model有关系。 猜测:clang分析预编译头文件相关,…

学习框架、库的经验

熟悉基础语法把框架的功能过一遍,看看有哪些功能从文档的demo入口去学习上手会更快在你的开发目录要有一个专门写demo的页面,用以调试页面,试验新功能如果框架或者库提供有demo则更好,可以从中得到很多有用的东西

开源应用程序结构

2019独角兽企业重金招聘Python工程师标准>>> 给有兴趣的同学介绍的。这里面介绍了很多著名的开源软件的架构,相信读后会有所收获。 地址:http://www.aosabook.org/en/index.html 转载于:https://my.oschina.net/qinlinwang/blog/71649

免费GPU哪家强?谷歌Kaggle vs. Colab

作者 | Jeff Hale译者 | Monanfei责编 | 夕颜出品 | AI科技大本营(id:rgznai100)谷歌有两个平台提供免费的云端GPU:Colab和Kaggle, 如果你想深入学习人工智能和深度学习技术,那么这两款GPU将带给你很棒学习…

【SVN】svn“E155017工作副本的参考文件损坏、E200014文件校验和不匹配”的解决方法

1、问题描述 在执行svn提交时报错 svn: E155017: 工作副本的参考文件损坏 svn: E200014: ‘test.cpp’ 的文件校验和不匹配: 期望:xxxx 实际:xxxx 2、解决方法 2.1 拷贝 最好将提交的项目拷贝一份; 2.2 删除 使用svn rm --k…

QT程序启动加载流程简介

1. QT应用程序启动加载流程简介1.1 QWS与QPA启动客户端程序区别1.1.1 QWS(Qt Window System)介绍QWS(Qt Windows System)是QT自行开发的窗口系统,体系结构类似X Windows的C/S结构。QWS Server在物理设备上显示,QWS Client实现界面,两者…

QQ2012 Under Ubuntu

下载地址: QQ2012 Under Ubuntu转载于:https://www.cnblogs.com/ismdeep/archive/2012/08/09/2630067.html

25亿布局大湾区,创新工场的AI下一站

2019年6月5日,创新工场大湾区总部正式开业启动,集“产业投资AI 研究院商业赋能落地”三个功能为一体。当天创新工场还首次分享人工智能工程院成立两年来的成绩单,创新奇智的大湾区布局,并发布大湾区人才战略。创新工场也正式宣布第…

【TX2】TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口

1、简述 TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口。 2、设备树 设备树中关于串口部分的描述 2.1 基础配置 注意:在这里状态都配置成禁止&#xff…

unix的发展

转载http://blog.51cto.com/1193432/1671058转载于:https://www.cnblogs.com/vwei/p/9588823.html

让你的输入框使用Google云语音输入技术

2019独角兽企业重金招聘Python工程师标准>>> 只需一行代码,你的网站上面输入框(input),直接可以在谷歌浏览器(chrome)上面使用Google的云语音输入技术。 在你的输入框input的HTML属性里面&#…

速度超Mask RCNN四倍,仅在单个GPU训练的实时实例分割算法 | 技术头条

作者 | Daniel Bolya Chong Zhou Fanyi Xiao Yong Jae Lee译者 | 刘畅责编 | Jane出品 | AI科技大本营(id:rgznai100)【导读】在论文《YOLACT:Real-time Instance Segmentation》中,作者提出了一种简洁的实时实例分割全…

JSP内置对象基础知识小结

JSP提供9大内置内象:一、request内象:封装了由客户端生成的HTTP请求的所有细节,主要包括了http头信息,系统信息,请求方式,请求参数等。1、获取访问请求参数:request.getParameter("arg&quo…

一个正执行的程序如何启动另一新程序并关闭现执行程序

最简单的方法有两个函数即可实现: //启动新程序WinExec("存放另一新程序的路径", SW_SHOW);//关闭现执行软件 ExitThread(0); 若在win ce 下,用WinExec这个函数就不对了,那时就应该用ShellExecuteEx了。 SHELLEXECUTEINFO ShExecIn…

【android】java.lang.NoClassDefFoundError或classnotfount等异常错误

在android上开发,当导入一个外部的包,可能会出现这类错误,我已经两次碰到了,一次是用科大讯飞的android开发包,另一次是用Jsoup包(html 解析)。 解决方案: 先去掉加入的外部包 不要把…

Java面试题(一)部分题目

博主马上要面对几家公司的面试,故自己准备了点面试题,仅供参考! 1,线程的创建的方式:答:1,继承Thread(注意,此类其实也是实现了Runnable接口的),2,实现Runnable接口2,1. …

在win ce中如何使正在运行的软件自动升级更新

创建两个独立的程序A和B:A是现正在运行的程序,B是用于辅助新版本的A覆盖旧版A 在客户端先运行A,使A提供从服务器端下载新版A放于一临时文件夹中,并运行B,关闭A; 运行的B用于执行:用新版A覆盖旧…

刘铁岩:AI打通关键环节,加快物流行业数字化转型

导语:近日,在微软亚洲研究院创新论坛上,微软亚洲研究院副院长刘铁岩分享了关于“AI物流”行业的实践经验。以下为其发言内容。 随着时代的发展,人工智能成为了决定性的技术,我们所谈的企业数字化转型也正在从“互联网”…

Unity的三种Interceptor

Unity默认提供了三种拦截器:TransparentProxyInterceptor、InterfaceInterceptor、VirtualMethodInterceptor。 TransparentProxyInterceptor:代理实现基于.NET Remoting技术,它可拦截对象的所有函数。缺点是被拦截类型必须派生于MarshalByRe…

Python编写循环的两个建议 | 鹅厂实战

作者 | piglei(腾讯高级工程师)转载自腾讯技术工程知乎专栏循环是一种常用的程序控制结构。我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环”,则是实现让…

作为JavaScript开发人员,这些必备的VS Code插件你都用过吗

本文翻译自:https://www.sitepoint.com/vs-code-extensions-java-developers/转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。如今,Visual Studio Code无疑是最流行的轻量级…

matlab常遇小问题汇总

1、如何注释掉多行: 同时注释掉多行,有2种方法可行: (1)、选中所有要注释的行,按快捷键"Ctrl R" 或者 选择工具菜单"Text --> Comment"; 如果释放所有要注释的行,则按快捷键"Ctrl T&qu…

《几何与代数导引》习题1.35.4

求直线之间的距离$l_1:\frac{x1}{-1}\frac{y-1}{3}\frac{z5}{2}$.$l_2:\frac{x}{3}\frac{y-6}{-9}\frac{z5}{-6}$.解:点$q(-1,1,-5)$在直线$l_1$上,点$p(0,6,-5)$在直线$l_2$上.$\vec{pq}(-1,-5,0)$.直线$l_1$的方向向量为$(-1,3,2)$,直线$l_2$的方向向量…

深度学习难,这本书让你轻松学深度学习

深度学习在短短几年之内便让世界大吃一惊。它非常有力地推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等多个领域的快速发展。随着这些领域的不断进步,人们现在可以制造自动驾驶的汽车,基于短信、邮件甚至电话的自动回复系统&#…

matlab中用于小数取整的函数的用法

matlab中小数取整的函数大约有四个:floor、ceil、round、fix 若 A [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55, 1.9, 2.0]; floor:朝负无穷方向靠近最近的整数; floor(A) ans -2 -2 -2 -2 -2 1 1 1 1 …

SQLServer之删除约束

使用SSMS数据库管理工具删除约束 1、连接数据库,选择数据表-》展开键或者约束-》选择要删除的约束-》右键点击-》选择删除。 2、在删除对象弹出框中-》点击确定。 3、刷新表-》展开键或者约束-》查看结果。 使用T-SQL脚本删除约束 语法: --声明数据库使用…

新建silverlight项目提示未将对象设置到实例解决方案

1.打开 visual studio 命令提示 输入一下命令 2.devenv /resetskippkgs 这条命令会启动visual stuio 关闭visual studio然后输入下面的命令3.devenv /setup

毕业十年后,我忍不住出了一份程序员的高考试卷

作者 | 程序员小吴转载自公众号五分钟学算法(ID: CXYxiaowu)一、选择题(共计 50 分)1、在下列四种排序算法,只有( )是一种不稳定排序A、冒泡排序B、选择排序C、插入排序D、归并排序2、一个数组&…