Ios AVPlayer空白视频:播放声音但不播放视频
有同样的问题,但解决方案不起作用Ios AVPlayer空白视频:播放声音但不播放视频,ios,video,avplayer,avplayerlayer,Ios,Video,Avplayer,Avplayerlayer,有同样的问题,但解决方案不起作用 AVPlayer有时播放空白视频:有声音但没有视频 当播放空白视频时,我们打印播放器的帧和状态。帧为非零且设置正确。状态也是readyToPlay。play函数也在主线程上调用 换句话说,播放器层的框架是有效的,播放器也准备好了。然而没有视频出现,即使声音出现了 这似乎是一个时机问题。如果我们在播放视频前等待5-10秒,视频每次都可以正常工作 此问题出现在iOS 10上,而不是iOS 8或9上 苹果论坛上显示,这可能是一个与 AVVideoComposition
AVPlayer
有时播放空白视频:有声音但没有视频
当播放空白视频时,我们打印播放器的帧和状态。帧为非零且设置正确。状态也是readyToPlay
。play
函数也在主线程上调用
换句话说,播放器层的框架是有效的,播放器也准备好了。然而没有视频出现,即使声音出现了
这似乎是一个时机问题。如果我们在播放视频前等待5-10秒,视频每次都可以正常工作
此问题出现在iOS 10上,而不是iOS 8或9上
苹果论坛上显示,这可能是一个与
AVVideoCompositionCoreAnimationTool
,我们也使用它
有什么解决办法吗
这种情况在iPhone7设备上比在iPhone5S设备上更常见
代码:
fileprivate func播放视频(\videoURL:String,prompt:String){
//展示
playerView.ishiden=false
//在播放器中使用新视频
playerItem=AVPlayerItem(url:url(fileURLWithPath:videoURL))
打印(“状态:\(player.STATUS==AVPlayerStatus.readyToPlay)。帧:\(playerLayer.FRAME)。主线程:\(THREAD.isMainThread)”)
player.replaceCurrentItem(带:playerItem)
//开始播放视频
player.seek(至:kCMTimeZero)
player.actionAtItemEnd=.none
player.play()
}
我认为您需要使用AVPlayerController或AVPlayerLayer
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
//set player layer frame and attach it to our view
playerLayer.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:playerLayer];
//play the video
[player play];
发件人:
AVPlayer和AVPlayerItem是非可视对象,意味着它们的
own无法在屏幕上显示资产的视频。你有两个
您可以使用的主要方法在屏幕上显示视频内容
屏幕:
AVKit:展示视频内容的最佳方式是使用
iOS和tvOS或
macOS中的AVPlayerView类。这些课程提供视频内容,
以及播放控件和其他媒体功能,为您提供
全功能播放体验
AVPlayerLayer:如果您正在为您的玩家构建自定义界面,
使用AVFoundation提供的核心动画CALayer子类
叫做AVPlayerLayer。播放器层可以设置为视图的背景
图层或可直接添加到图层层次。不像
AVPlayerView和AVPlayerViewController,一个玩家层没有
显示任何播放控件,但仅显示视觉内容
在屏幕上。由您自行构建播放传输控件以
通过媒体播放、暂停和搜索
如果有人遇到这个问题,这个问题似乎与iOS错误有关。此问题不会出现在iOS 8/9设备上,只会出现在新的iOS 10设备上。从iOS 10.2开始,这个问题就消失了
不幸的是,仍然没有针对10.0.x或10.1.x的编程解决方案。您能在这里显示代码吗?以及屏幕上显示的播放器大小screen@Horst当然是最新的问题。谢谢你能在github上创建一个重现问题的项目吗?@RhythmicFistman会尝试,但该项目很复杂,因此需要一段时间来简化它,以便易于调试。还看到了您对ios 10上avplayer问题相关问题的回答。这可能是一个ios 10错误,因为代码在ios 9和ios 8上运行,但不再有这些设备需要测试。我有一个我认为类似的问题。除了等待5-10秒之外,还有其他工作吗?是的,对不起,省略了我们为playerlayer设置帧的代码。该帧在代码中的其他位置正确设置,并由视频播放时的帧进行验证。这似乎是一个时机问题。如果我们在播放视频之前等待5-10秒,视频每次都可以正常工作。正如预期的那样,问题又出现在iOS 12和iOS 13上。
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
//set player layer frame and attach it to our view
playerLayer.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:playerLayer];
//play the video
[player play];