[解決済み] AVFoundation AVPlayerで動画をループさせる?
2022-05-08 21:15:40
質問
AVFoundationで動画をループさせる比較的簡単な方法はありますか?
AVPlayerとAVPlayerLayerはこのように作成しました。
avPlayer = [[AVPlayer playerWithURL:videoUrl] retain];
avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain];
avPlayerLayer.frame = contentView.layer.bounds;
[contentView.layer addSublayer: avPlayerLayer];
で動画を再生しています。
[avPlayer play];
動画は正常に再生されますが、最後に止まってしまいます。 MPMoviePlayerController の場合は、その
repeatMode
プロパティに正しい値を設定してください。 AVPlayerには同様のプロパティがないようです。 また、ムービーが終了したときに教えてくれるコールバックもないようなので、最初に戻って再生することができます。
MPMoviePlayerControllerを使用しないのは、重大な制限があるからです。 複数のビデオストリームを一度に再生できるようにしたいのです。
どのように解決するのですか?
プレーヤーの終了時に通知を受け取ることができます。確認
AVPlayerItemDidPlayToEndTimeNotification
プレーヤーの設定時。
ObjC
avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:[avPlayer currentItem]];
これにより、最後にプレイヤーが一時停止するのを防ぐことができます。
を通知で表示します。
- (void)playerItemDidReachEnd:(NSNotification *)notification {
AVPlayerItem *p = [notification object];
[p seekToTime:kCMTimeZero];
}
をクリックすると、ムービーが巻き戻されます。
プレーヤーを離すときは、通知の登録を解除するのを忘れないでください。
スウィフト
avPlayer?.actionAtItemEnd = .none
NotificationCenter.default.addObserver(self,
selector: #selector(playerItemDidReachEnd(notification:)),
name: .AVPlayerItemDidPlayToEndTime,
object: avPlayer?.currentItem)
@objc func playerItemDidReachEnd(notification: Notification) {
if let playerItem = notification.object as? AVPlayerItem {
playerItem.seek(to: kCMTimeZero)
}
}
Swift 4+
@objc func playerItemDidReachEnd(notification: Notification) {
if let playerItem = notification.object as? AVPlayerItem {
playerItem.seek(to: CMTime.zero, completionHandler: nil)
}
}
関連
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] NSNotificationCenterのaddObserver in Swift