1
A
回答
2
您可以使用AVPlayerItemVideoOutput
(感謝objc.io)實時訪問遠程資產的幀。
p.s.總是檢查您的遠程資產沒有被App Transport Security阻止。
p.p.s AVAssetReader
對遠程資產的支持is complicated。
import UIKit
import AVFoundation
class ViewController: UIViewController {
let player = AVPlayer(url: URL(string: "http://0.s3.envato.com/h264-video-previews/80fad324-9db4-11e3-bf3d-0050569255a8/490527.mp4")!)
let videoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
override func viewDidLoad() {
super.viewDidLoad()
player.currentItem!.add(videoOutput)
player.play()
let displayLink = CADisplayLink(target: self, selector: #selector(displayLinkDidRefresh(link:)))
displayLink.add(to: RunLoop.main, forMode: RunLoopMode.commonModes)
}
func displayLinkDidRefresh(link: CADisplayLink) {
let itemTime = videoOutput.itemTime(forHostTime: CACurrentMediaTime())
if videoOutput.hasNewPixelBuffer(forItemTime: itemTime) {
if let pixelBuffer = videoOutput.copyPixelBuffer(forItemTime: itemTime, itemTimeForDisplay: nil) {
print("pixelBuffer \(pixelBuffer)") // yay, pixel buffer
let image = CIImage(cvImageBuffer: pixelBuffer) // or maybe CIImage?
print("CIImage \(image)")
}
}
}
}
相關問題
- 1. 處理視頻幀
- 2. iOS - 視頻幀處理優化
- 3. Android處理視頻,YCrCb幀到視頻
- 4. 通過幀處理的Android視頻幀的同時錄製
- 5. iPhone上的實時視頻處理
- 6. 跳過幀,而視頻處理在iOS上
- 7. Python中的視頻幀多處理
- 8. 實時處理射頻流
- 9. 從實時視頻流獲取幀
- 10. iOS - OpenCV視頻處理優化
- 11. 使用AVFoundation處理視頻時故意跳過幀
- 12. 在用戶提示符處逐幀處理視頻
- 13. 實時處理Android相機幀
- 14. MATLAB - 視頻處理
- 15. C++視頻處理
- 16. 及時切片視頻幀
- 17. iOS將視頻幀提取爲圖像
- 18. iOS從視頻中提取所有幀
- 19. 實時處理web音頻api
- 20. 在Android中的實時音頻處理
- 21. Android中的實時音頻處理
- 22. 在Python中的實時音頻處理
- 23. 無輸出實時音頻處理
- 24. 上傳視頻時無法處理視頻錯誤通知
- 25. 丟幀視頻
- 26. 如何處理不同的線程的視頻幀(C#)
- 27. 使用JavaCV的併發視頻幀處理
- 28. 通過代理實時視頻流
- 29. 視頻幀逐幀查找
- 30. Android中的視頻處理
處理完圖像後,如何播放然後播放? – user2232305
您可以像在objc.io文章中一樣將「CIImage」繪製到「GLKView」中:https://github.com/objcio/core-image-video/blob/master/CoreImageVideo/CoreImageView.swift –
是否可以從'draw'函數手動調用'displayLinkDidRefresh'?我用'CADisplayLink'工作,但是如果我手動調用它'itemTime'總是返回0,即使'CACurrentMediaTime'提前... – endavid