Swiftを使用してAVPlayerビデオの再生が終了したことを検出するにはどうすればよいですか?
動画の終わりをすばやく検出するには、動画プレーヤーを作成してから、通知を使用して動画の再生が停止したことを検出する必要があります。迅速な例を参考にしてこれを行います。
プロジェクトを作成し、拡張子が「mp4」の動画をドラッグアンドドロップし、必要に応じてリソースのコピーを選択して、プロジェクトのターゲットに追加しましょう。
次に、プログラムで最初にビデオプレーヤーを作成し、次にプロジェクトでビデオのURLを作成してから、ビデオを再生します。
var videoPlayer: AVPlayer!
ここで、viewDidAppearに次のコードを追加します。
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let filepath: String? = Bundle.main.path(forResource: "Introduction", ofType: "mp4") if let videoPath = filepath { let url = URL.init(fileURLWithPath: videoPath) videoPlayer = AVPlayer(url: url) let playerLayer = AVPlayerLayer(player: videoPlayer) playerLayer.frame = self.view.bounds self.view.layer.addSublayer(playerLayer) videoPlayer.play() } }
上記のコードは、ビデオプレーヤーを作成し、それをサブレイヤーとしてViewControllerのデフォルトビューに追加します。
次に、プレーヤーにオブザーバーを追加し、ビデオの終了を検出したときに呼び出されるオブザーバーメソッドを作成する必要があります。以下のコードブロックをviewDidAppearメソッドに追加します。
NotificationCenter.default.addObserver(self, selector: #selector(videoDidEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
次に、videoDidEndメソッドも作成する必要があります。このメソッド内では、任意のアクションを実行できます。今のところ、ビデオが終了し、通知センターがこのメソッドを呼び出すと、「ビデオ終了」と出力されます。
@objc func videoDidEnd(notification: NSNotification) { print("video ended") }
このコードを実行すると、次の結果が得られます。
ビデオの再生が停止すると、コンソールに出力が表示されます。
さて、上記のコードは私たちに必要なことを行いますが、効率的なメモリ使用のために、オブザーバーも削除する必要があります。これは、以下のコードを使用して実行できます。
deinit { NotificationCenter.default.removeObserver(self) }
-
iPhone 8 の新しいビデオ形式の使い方
最近発売された iPhone 8 と iPhone 8 Plus には、初めて搭載された優れた機能があります。最も注目すべき機能には、1080P Slo-mo ビデオで 60 フレーム/秒 (FPS) および 240 FPS の 4K ビデオを撮影できる 2 つのビデオ形式があります。 以前の iPhone モデルでは、ユーザーは FPS が低い Ultra HD モードでしか撮影できませんでした。しかし、技術の進歩によりすべてが変わり、Ultra HD でより多くのフレームをキャプチャできるようになりました。 2 つのビデオ形式は高品質のビデオをキャプチャしますが、以前の形式と比較して
-
ビデオの再生中に Microsoft Edge がクラッシュする問題を修正する方法
Microsoft によって開発された Edge は、Windows OS の既定の Web ブラウザーです。 Microsoft Edge は Internet Explorer の後継ですが、はるかに高速で、さまざまなセキュリティ機能が搭載されています。新しい更新が行われるたびに、Microsoft Edge は速度、パフォーマンス、および高度な機能が一貫して向上しています。 完璧なブラウザはありません。ではない? YouTube でビデオを再生しようとすると、Microsoft Edge が頻繁にクラッシュしますか?はい、これは面倒ですね。 この投稿では、Windows 11/