尝试在youtube-ios-player-helper上设置播放速度,但没有任何反应

时间:2018-02-12 14:27:02

标签: ios youtube youtube-api

我正在构建一个使用youtube-ios-player-helper库来播放YouTube视频的iOS应用。我正在尝试设置播放速度,但没有任何反应:

class PlayerViewController: UIViewController {

    private let player = YTPlayerView()

    override func viewDidLoad() {
        super.viewDidLoad()

        player.delegate = self
        view.addSubview(player)
        setupPlayerConstraints()

        player.load(withVideoId: "123456")
        // Tried here, but nothing change: 
        print("Available playback rates: \(String(describing: player.availablePlaybackRates()))")
        player.setPlaybackRate(2.0)
    }

}

extension PlayerViewController: YTPlayerViewDelegate {

    func playerViewDidBecomeReady(_ playerView: YTPlayerView) {
        player.playVideo()
    }

    func playerView(_ playerView: YTPlayerView, didChangeTo state: YTPlayerState) {
        switch (state) {
        case.playing:
            // Tried here, but again, nothing change:
            print("Available playback rates: \(String(describing: player.availablePlaybackRates()))")
            player.setPlaybackRate(2.0)
        default:
            break;
        }
    }

}

如上面的代码所示,我已尝试在加载视频后设置播放速度,以及播放器将其状态更改为playing时。在任何时候都没有改变速度。

此外,player.availablePlaybackRates在两种情况下均返回nil(这很奇怪,因为当我使用YouTube应用观看同一视频时,我可以更改播放速度。)

我知道设置播放速度is a suggestion to the player,但在官方YouTube应用中,更改速度适用于我正在我的应用上观看的同一视频。

这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。但是我这样解决了,而且效果很好。迅速4

  1. private-> public

    private func stringFromEvaluingJavaScript(jsToExecute: String) -> String{
        Guard let result = self.webView.stringByEvaluingJavaScript (from jsToExecute) else{
        return ""
        }
    return result
    }
    
  2. 直接执行

    playerView.stringFromEvaluingJavaScript(jsToExecute): "player.setPlaybackRate(1.5);")