使用AVPlayer播放的视频在iPhone 6S Plus上有灰色线到顶部和侧面

时间:2016-05-17 03:07:19

标签: ios avplayer

这似乎只是 iPhone 6S Plus 的设备特定错误。

步骤:

  1. 下载AVPlayer demo sample code
  2. 调整AVPlayerDemoPlaybackView.xib,以便MPlayback View周围有边距
  3. 使内容视图颜色为白色
  4. 顶部和侧面会出现1px灰线。

    任何人都知道如何解决这个问题?

    我试图设置一个遮挡顶部的不透明视图,但该线仍将显示在不透明视图之上!

6 个答案:

答案 0 :(得分:12)

AVPlayerLayer的{​​{3}}属性设置为true会使边框消失。

答案 1 :(得分:2)

我的建议是,因为你的用例是一个动画循环来放弃AVPlayer并使用UIImageView。

UIImageanimatedImage(with:duration:),您可以在其中输入图像数组并根据需要设置它们的动画。

我认为这可以解决您的问题。根据我的经验,AVPlayer在iOS 10中有点不稳定。我认为,因为你只是在6s +和7s +上看到这个问题就证明它有一些问题。

如果您绝对致力于找出AVPlayer,请先向Apple提交错误报告。然后尝试在AVPlayer后面添加一个UIImageView,将图像设置为视频中的空白帧。这是一种hacky解决方案,但它可能会起作用。另外,查看this堆栈溢出帖子。它可能会解释您使用AVPlayer时遇到的问题。

祝你好运。

答案 2 :(得分:1)

我尝试了Nate4436271的答案,它对我有用,我的意思是,有同样的问题并摆脱了灰线,但将shouldRasterize属性设置为true,使我的视频失去了图像质量。所以,我将playerLayer的videoGravity设置为AVLayerVideoGravityResizeAspectFill并且我摆脱了线条,同时保持了图像质量:)

这是我做的:

playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

AspectFill符合我的需求并解决了这个问题。您可能希望评估其他选项是否更适合您的需求,例如AspectFit或Resize。

希望这会有所帮助:)

答案 3 :(得分:1)

不仅shouldRasterize,还需要设置rasterizationScale

playerLayer.shouldRasterize = true
playerLayer.rasterizationScale = UIScreen.main.scale

答案 4 :(得分:0)

这是我的看法:对我而言,最简单的解决方法是将1px / 2px的高视图放置在视频层的顶部,并为其提供所需的颜色-这样,您可以“隐藏只需在上面放一些东西就可以看到灰色边框。不用说这是超级hacky,但是它可以工作。您可能需要根据videoGravity属性对实际位置进行一些计算。

答案 5 :(得分:-1)

顶部的灰线不过是导航栏。您可以将其隐藏在控制器的viewdidload中。一切准备就绪。