Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVPlayer空白视频:播放声音但不播放视频_Ios_Video_Avplayer_Avplayerlayer - Fatal编程技术网

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];