播放视频时有残影、水纹的原因

简介: 播放视频时有残影、水纹的原因

关键字:播放 残影

简介:播放有残影、水纹,是因为某些帧没有参与解码。


专门截图,可以看看是怎样的:https://blog.csdn.net/quantum7/article/details/89297300


以前做视频的时候,因为软解性能差,对于1080P无能为力,于是想到了硬解。找到了硬解资料调通,测试播放时发现,开始几秒还好,过一会就有类似水纹的残影。反复检查、修改代码,找不到原因,也无法解决此问题,只好放弃。


近来做新的视频播放功能,突然发现平常播放(调用了硬解)正常的功能,也有了残影水纹。开始以为是代码问题,反复检查、回滚,没有解决;后来以为是发送方问题,又一番折腾,还是没有解决。经过一个星期的反复折腾,找不到原因,只能放弃。


之后发现播放时帧率,低于发送方的帧率。于是又检查代码,原来有人根据自己理解,随意加了一个帧率控制代码(实际上对于发送、接收来说,帧都不是均匀到达的)。去掉这部分代码后,帧率正常了,残影也很神奇的没有了。


于是就明白了,残影水纹产生的原因是:编码方编码(软编、硬编)产生的帧,解码方(使用硬解,软解一般无此问题)只解码了一部分。出现这种情况,有几种可能:


编码了,发送时做了控制,过滤了一些。


网络太差,接收方丢弃了不完整的帧。这只会偶尔发生。各位在看网络视频时,也会发现这种情况。


硬件解码时播放时做了控制,放弃了一些帧。


考虑到实际情况,帧率控制应该在发送方处理,而且要在编码之前。


目录
相关文章
|
API 图形学
Unity设置播放模式下始终先执行指定的场景
通过我们使用Unity开发游戏,是在PC/Mac上。而一个游戏通常也会有很多的场景,比如A、B、C、D三个场景,正常流程下的执行顺序是 A –> B –> C –> D。在具体一点,比如 A —— 启动场景、B —— 资源加载场景、C —— 登录场景、D —— 战斗场景。
1608 0
|
3天前
|
XML Android开发 数据格式
使用默认闪电浏览器 全屏播放视频时有黑边
使用默认闪电浏览器 全屏播放视频时有黑边
16 5
|
4天前
|
JavaScript
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
uniapp计算视频学习进程,并且下次回来继续播放(不能快进)
84 0
|
4天前
|
计算机视觉 Python
OpenCV实现视频的暂停播放和继续播放功能实战(附Python源码)
OpenCV实现视频的暂停播放和继续播放功能实战(附Python源码)
120 0
|
10月前
|
存储 移动开发 小程序
小程序:播放视频
小程序:播放视频
286 0
播放视频时有残影、水纹的原因
播放视频时有残影、水纹的原因
140 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
509 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
1430 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(一)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
719 0
【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )(二)
|
Android开发 内存技术
【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )(二)
【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )(二)
302 0