使用 Avplayer ios 10* 的屏幕截图图像是黑色图像

Posted

技术标签:

【中文标题】使用 Avplayer ios 10* 的屏幕截图图像是黑色图像【英文标题】:screenShot image with Avplayer ios 10* is Black image 【发布时间】:2019-05-21 09:54:23 【问题描述】:
extension UIView 
    func capture() -> UIImage? 
        var image: UIImage?

        if #available(ios 10.0, *) 
            let format = UIGraphicsImageRendererFormat()
            format.opaque = isOpaque
            let renderer = UIGraphicsImageRenderer(size: frame.size, format: format)
            image = renderer.image  context in
                drawHierarchy(in: frame, afterScreenUpdates: true)
            
         else 
            UIGraphicsBeginImageContextWithOptions(frame.size, isOpaque, UIScreen.main.scale)
            drawHierarchy(in: frame, afterScreenUpdates: true)
            image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
        

        return image
    

【问题讨论】:

您想用播放器从 avplayer 或全屏屏幕截图中捕获图像? 我想从视图层 avplayer 捕获图像 这对我有用,参考...github.com/acotilla91/ACThumbnailGenerator-Swift 哇,太棒了!!... 谢谢支持 【参考方案1】:
public extension AVAsset 
    func takeScreenshot(at: Double,completion: @escaping (UIImage?) -> Void) 
            DispatchQueue.global().async 
                let imageGenerator = AVAssetImageGenerator(asset: self)
                let time = CMTime(seconds: at, preferredTimescale: 600)
                let times = [NSValue(time: time)]
                imageGenerator.generateCGImagesAsynchronously(forTimes: times, completionHandler:  _, image, _, _, _ in
                    if let image = image 
                        completion(UIImage(cgImage: image))
                     else 
                        completion(nil)
                    
                )
            
        

【讨论】:

以上是关于使用 Avplayer ios 10* 的屏幕截图图像是黑色图像的主要内容,如果未能解决你的问题,请参考以下文章

iOS AVPlayer:屏幕锁定时暂停视频

第七次重新进入屏幕后,AVPlayer 未准备好显示

iOS 7 上的 MPNowPlayingInfoCenter AVPlayer

如何防止在android和ios中选择屏幕中的屏幕截图反应本机

在高分辨率 iOS 设备上拍摄时,屏幕截图太大

当我的应用在IOS中处于活动状态时如何阻止屏幕截图[关闭]