【问题标题】:how to capture the keydown event of the AVPlayer?如何捕获 AVPlayer 的 keydown 事件?
【发布时间】:2020-06-13 04:03:22
【问题描述】:

我正在使用macOS下的AVkit编写视频播放器,AVPlayer可以响应键盘事件,例如空格键向下暂停/播放视频,左箭头键向下移动视频。 我想捕获keydown事件,以便对AVPlayer做更多的控制,怎么做?
以下是我的示例代码:

import SwiftUI
import AVKit
import AVFoundation

public class VideoItem: ObservableObject {
    @Published var player: AVPlayer = AVPlayer()
    @Published var playerItem: AVPlayerItem?

    func open(_ url: URL) {
        let asset = AVAsset(url: url)

        let playerItem = AVPlayerItem(asset: asset)
        self.playerItem = playerItem

        player.replaceCurrentItem(with: playerItem)


    }
}

public struct PlayerView: NSViewRepresentable {
    @Binding var player: AVPlayer

    var titles:[Title] = []
    public init(player:Binding<AVPlayer>,currentSeconds:Binding<Double>,subtitleFile:Binding<String>,currentTitle:Binding<Title?>)
    {
        self._player = player


    }

    public func updateNSView(_ NSView: NSView, context: NSViewRepresentableContext<PlayerView>) {
        guard let view = NSView as? AVPlayerView else {
            debugPrint("unexpected view")
            return
        }
      //  status = player.timeControlStatus.rawValue

        view.player = player


    }

    public func makeNSView(context: Context) -> NSView {
        let av = AVPlayerView(frame: .zero)

        return av
    }


}

【问题讨论】:

    标签: swift macos avkit


    【解决方案1】:

    我有一个解决方案,要捕获 keydown 事件,我们可以从 AVPlayerView 创建一个子类并覆盖它的 keydown 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多