Видео, воспроизводимое с помощью AVPlayer, имеет серое направление вверх и стороны на iPhone 6S Plus

Это, по-видимому, ошибка устройства на уровне iPhone 6S Plus.

Шаги:

1px серые линии появятся вверху и бокам.

Кто-нибудь знает, как это сделать?

Я попытался поместить непрозрачный вид, который затеняет верх, но строка все равно будет отображаться ВЫШЕ непрозрачный вид!

Ответ 1

Установка свойства AVPlayerLayer shouldRasterize в значение true приводит к исчезновению границ.

Ответ 2

Мое предложение состояло бы в том, что, поскольку ваш прецедент - анимированный цикл, чтобы вырезать AVPlayer и использовать UIImageView.

UIImage имеет animatedImage(with:duration:), где вы можете ввести массив изображений и оживить их, как вам нравится.

Я думаю, это решит вашу проблему. По моему опыту, AVPlayer был немного неуклюжим с iOS 10. Я думаю, что, поскольку вы видите только эту проблему на 6s + и 7s +, это доказательство того, что у нее есть некоторые проблемы.

Если вы абсолютно уверены в том, чтобы разобраться с AVPlayer, сначала отправьте отчет об ошибке Apple. Тогда, возможно, попробуйте добавить UIImageView за вашим AVPlayer, у которого изображение установлено на пустой кадр из вашего видео. Это своего рода хакерское решение, но это может сработать. Кроме того, проверьте этот столбец. Это может пролить свет на проблемы, которые возникают с AVPlayer.

Удачи.

Ответ 3

Я попробовал ответ Nate4436271, и это сработало для меня, я имею в виду, имело ту же проблему и избавилось от серых линий, но установив для свойства shouldRasterize значение true, мое видео потеряло качество изображения. Итак, я установил videoGravity моего playerLayer в AVLayerVideoGravityResizeAspectFill, и я избавился от строк, сохраняя при этом качество изображения:)

Вот что я сделал:

playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

AspectFill был в моих потребностях и решил проблему. Возможно, вы захотите оценить, подходят ли другие варианты для того, что вам нужно, например AspectFit или Resize.

Надеюсь, что это поможет:)