gpt4 book ai didi

ios - 使用 iOS 设备从 HLS 视频流中截取屏幕截图

转载 作者:行者123 更新时间:2023-11-29 12:41:00 30 4
gpt4 key购买 nike

我正在开发一个播放 HLS 视频并将其呈现在 UIView 中的应用程序。

在确定的时间我想保存当前显示的视频图像的图片。为此,我开始一个图像上下文图形,在上下文中绘制 UIView 层次结构,并使用 UIGraphicsGetImageFromCurrentImageContext 方法将其保存在 UIImage 中。

这在 iOS 模拟器上工作得很好,渲染的图像是完美的。但是在设备上渲染的图像是全白的。

有人知道为什么它不能在设备上运行吗?或者,是否有一种有效的方法可以在设备上截取 HLS 视频的屏幕截图?

感谢任何帮助。

最佳答案

通过将 AVPlayerItemVideoOutput 对象添加到 AVPlayerItem,我找到了一种保存 HLS 直播流屏幕截图的方法。

在初始化中:

self.output = AVPlayerItemVideoOutput(pixelBufferAttributes: 
Dictionary<String, AnyObject>())
playerItem.addOutput(output!)

保存截图:

guard let time = self.player?.currentTime() else { return }
guard let pixelBuffer = self.output?.copyPixelBufferForItemTime(time,
itemTimeForDisplay: nil) else { return }
let ciImage = CIImage(CVPixelBuffer: pixelBuffer)
let temporaryContext = CIContext(options: nil)
let rect = CGRectMake(0, 0,
CGFloat(CVPixelBufferGetWidth(pixelBuffer)),
CGFloat(CVPixelBufferGetHeight(pixelBuffer)))
let videoImage = temporaryContext.createCGImage(ciImage, fromRect: rect)
let image = UIImage(CGImage: videoImage)
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)

这似乎在模拟器中不起作用,但在设备上运行良好。代码在 Swift 2 中,但应该可以直接转换为 obj-c 或 Swift 1.x。

关于ios - 使用 iOS 设备从 HLS 视频流中截取屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933961/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com