0

これは基本的な playMe 関数の呼び出しAVPlayerで、AppleTV で Swift 経由で MP3、MP4、または Wav を再生します。これを と組み合わせるにはどうすればよいですAVPlayerViewControllerか - つまり、playMe("video", "mp4") を 内で再生するにはどうすればよいAVPlayerViewControllerですか?GUI で Main.storyboard と AVPlayerViewController を接続するために必要な手順は何ですか?そしてSwiftコードで?

func playMe(inputfile: String, inputtype: String) {
    let path = NSBundle.mainBundle().pathForResource(inputfile, ofType:inputtype)!
    let videoURL = NSURL(fileURLWithPath: path)
    let player = AVPlayer(URL: videoURL)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = self.view.bounds
    self.view.layer.addSublayer(playerLayer)
    player.play()
}
4

1 に答える 1

1

これを行う 1 つの方法は、 をサブクラス化することですAVPlayerViewControllerAVPlayerViewControllerという名前のAVPlayerプロパティがありますplayer。AVPlayerViewController のサブクラスは次のようになります。

import UIKit
import AVKit

class MyPlayerViewController: AVPlayerViewController {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        let path = NSBundle.mainBundle().pathForResource("myVideo", ofType:"mov")!
        let videoURL = NSURL(fileURLWithPath: path)
        player = AVPlayer(URL: videoURL)
    }

}

この実装は、デフォルトの再生コントロールを表示し、Siri リモートでそのまま使用できます。

prepareForSegue を使用してボタンを押してこれを行うコードを次に示します。

import UIKit
import AVFoundation
import AVKit
let playerViewControllerSegue = "play";
class MyViewController: UIViewController {    
    @IBAction func playMovie(sender: UIButton) {
        self.performSegueWithIdentifier(playerViewControllerSegue, sender: self);
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == playerViewControllerSegue){
            let path = NSBundle.mainBundle().pathForResource("7second", ofType:"mp4")!
            let videoURL = NSURL(fileURLWithPath: path)
            let player = AVPlayer(URL: videoURL)
            let playerViewController = segue.destinationViewController as! AVPlayerViewController
            playerViewController.player = player
            playerViewController.player?.play()
        }
    }

}
于 2016-01-12T18:34:11.240 に答える