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

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

 

 

红朝儒生

2017-12-7

 

关键字:播放 残影

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

 

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

 

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

  

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

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

  

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

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

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

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

  

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

### 回答1: 可以使用以下代码来画水纹: import turtle t = turtle.Turtle() t.speed(0) for i in range(50): t.circle(i * 5) t.circle(-i * 5) turtle.done() ### 回答2: Python中的Turtle库可以通过简单的命令来绘制具有水纹效果的图形。下面是一个使用Turtle库绘制水纹的例子: 首先,我们需要导入Turtle库: ```python import turtle ``` 然后,我们可以创建一个画布并设置画布的背景颜色为蓝色来模拟水面: ```python screen = turtle.Screen() screen.bgcolor("blue") ``` 接下来,我们可以创建一个Turtle对象来绘制水纹。我们使用向前移动一定距离、向后移动一定距离、旋转一定角度等基本操作来实现水纹效果。我们可以使用循环语句来重复这些操作: ```python water = turtle.Turtle() for i in range(36): water.forward(100) water.backward(100) water.right(10) ``` 在这个例子中,我们使用了一个循环语句来重复36次水纹的绘制操作。每次绘制水纹时,我们向前移动一段距离、然后向后移动同样的距离,最后旋转10度。这样就可以形成水纹的效果。 最后,我们可以调用`turtle.done()`来保持图形窗口的显示,直到用户关闭窗口: ```python turtle.done() ``` 通过运行上面的代码,我们可以在图形窗口中看到一个具有水纹效果的图形。你可以根据需要调整参数来改变水纹的形状和效果。 ### 回答3: 使用Python的turtle模块可以很容易地画出水纹效果。首先,我们需要导入turtle模块: import turtle 然后,我们需要设置画布的大小和颜色: turtle.setup(width=800, height=600) turtle.bgcolor("black") 接下来,我们可以定义一个函数来画出水纹: def draw_water(): turtle.speed(0) turtle.pensize(3) colors = ["cyan", "light blue", "blue", "light blue"] for i in range(180): turtle.pencolor(colors[i % 4]) turtle.forward(i*2) turtle.right(91) turtle.hideturtle() 最后,调用这个函数就可以画出水纹了: draw_water() turtle.done() 在上述代码中,我们首先设置了画笔的速度和宽度。然后,通过一个循环来画出水纹,每次改变画笔颜色,并向前移动一定的距离,然后向右旋转91度。循环180次后,隐藏画笔,画布上就会出现一个水纹的效果。最后,调用turtle.done()来保持窗口持续显示。 希望这个回答对你有帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值