任意のサイズで動画を再生する
iosで動画の再生を行う方法は2種類用意されています。
1つ目はAVPlayerViewController()を使って全画面で動画の再生を行ってしまう方法で、
2つ目はAVPlayerを作成して再生する方法です、こちらを使う場合ViewにAVPlayerを内包することで任意の大きさで画像を再生することができます。
動画コンテンツの読み込み
アプリ内に動画Assetsを追加した場合Copy Bundle Resourcesに追加されておらず読み込みが行えない場合があるのでurlが取得できない場合はこちらを確認してみてください。
全画面再生
import AVKit
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
//ローカルに存在する動画のURL取得
let fileName = "mov"
let fileExtension = "mp4"
guard let url = Bundle.main.url(forResource: fileName, withExtension: fileExtension) else {
print("Url is nil")
return
}
let videoPlayer = AVPlayer(url: url)
let playerController = AVPlayerViewController()
playerController.player = videoPlayer
self.present(playerController, animated: true, completion: {
videoPlayer.play()
})
}
}
指定サイズでの再生
PlayerViewは公式サイト似合ったやつをそのまま持ってきました。
AVPlayerLayer – AVFoundation | Apple Developer Documentation
import AVKit
class PlayerView: UIView {
// The player assigned to this view, if any.
var player: AVPlayer? {
get { return playerLayer.player }
set { playerLayer.player = newValue }
}
// The layer used by the player.
var playerLayer: AVPlayerLayer {
return layer as! AVPlayerLayer
}
// Set the class of the layer for this view.
override static var layerClass: AnyClass {
return AVPlayerLayer.self
}
}
class ViewController: UIViewController {
@IBOutlet weak var playerView: PlayerView!
var player = AVPlayer()
override func viewDidLoad() {
super.viewDidLoad()
//ローカルに存在する動画のURL取得
let fileName = "mov"
let fileExtension = "mp4"
guard let url = Bundle.main.url(forResource: fileName, withExtension: fileExtension) else {
print("Url is nil")
return
}
let item = AVPlayerItem(url: url)
player = AVPlayer(playerItem: item)
playerView.player = player
player.play()
}
}