joe*_*onm 2 iphone macos core-media avcapturedevice swift
我已经实现了下面链接的帖子中的代码。但是,由于 AVCaptureDevice.devices() 现已弃用,因此它不会更新。
除非打开 Quicktime,否则 AVCaptureDevice.devices() 不会列出 iOS 设备
有人有这个的最新实施吗?
谢谢你!
好的,在结合了其他一些 Stack Overflow 答案后,我能够让它与 AVCaptureDevice.DiscoverySession 的最新实现一起使用。
诀窍是在启用屏幕捕获设备后调用 DiscoverSession 来获取设备。然后添加观察者来寻找新连接的设备,它就会显示出来。
前面的答案都使用了旧的 AVCaptureDevice.devices() 方法。我下面的示例使用更新的方法。
import Cocoa
import Foundation
import AVKit
import CoreMediaIO
class PlayerNSView: NSView{
private let playerLayer = AVPlayerLayer()
private let nc = NotificationCenter.default
override init(frame:CGRect){
super.init(frame: frame)
let urlVideo = URL(string: "https://www.radiantmediaplayer.com/media/bbb-360p.mp4")!
let player = AVPlayer(url: urlVideo)
//player.play()
playerLayer.player = player
if layer == nil{
layer = CALayer()
}
layer?.addSublayer(playerLayer)
self.enableDalDevices()
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.externalUnknown], mediaType: nil, position: .unspecified)
nc.addObserver(self, selector: #selector(newDevice), name: NSNotification.Name.AVCaptureDeviceWasConnected, object: nil)
}
@objc func newDevice() {
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.externalUnknown], mediaType: nil, position: .unspecified)
print("Devices: \(discoverySession.devices)")
}
public func enableDalDevices() {
var property = CMIOObjectPropertyAddress(mSelector: CMIOObjectPropertySelector(kCMIOHardwarePropertyAllowScreenCaptureDevices), mScope: CMIOObjectPropertyScope(kCMIOObjectPropertyScopeGlobal), mElement: CMIOObjectPropertyElement(kCMIOObjectPropertyElementMaster))
var allow : UInt32 = 1
let sizeOfAllow = MemoryLayout.size(ofValue: allow)
CMIOObjectSetPropertyData(CMIOObjectID(kCMIOObjectSystemObject), &property, 0, nil, UInt32(sizeOfAllow), &allow)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layout() {
super.layout()
playerLayer.backgroundColor = .black
playerLayer.frame = bounds
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |