タグ付けされた質問 「avplayer」

7
このブロックで自己を強くキャプチャすると、保持サイクルにつながる可能性があります
xcodeでこの警告を回避するにはどうすればよいですか。これがコードスニペットです。 [player(AVPlayer object) addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(0.1, 100) queue:nil usingBlock:^(CMTime time) { current+=1; if(current==60) { min+=(current/60); current = 0; } [timerDisp(UILabel) setText:[NSString stringWithFormat:@"%02d:%02d",min,current]];///warning occurs in this line }];

17
AVFoundation AVPlayerでビデオをループしますか?
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には重大な制限があるため、ここでは使用していません。複数のビデオストリームを一度に再生したい。

9
Swiftでローカルビデオを再生する方法
mp4現在のXcode6 Betaプロジェクトに追加した短いビデオファイルがあります。 アプリで動画を再生したい。 何時間も検索しても、リモートで役立つ情報は見つかりません。Swiftでこれを達成する方法はありますか、またはObjective-Cを使用する必要がありますか?正しい方向に向けることができますか?これを考えているのは私だけではありません。

6
iOS AVPlayerの開始遅延を減らす方法
以下の質問については注意してください:すべてのアセットはデバイス上でローカルです-ネットワークストリーミングは行われていません。ビデオにはオーディオトラックが含まれています。 問題のビデオクリップを開始するために最小限の遅延でビデオファイルを再生する必要があるiOSアプリケーションに取り組んでいます。残念ながら、実際に起動する必要があるまで、次の特定のビデオクリップはわかりません。具体的には、1つのビデオクリップが再生されると、次の(おおまかに)10個のビデオクリップのセットが何であるかがわかりますが、次のクリップを「すぐに」再生する時が来るまで、正確にはわかりません。 実際の開始遅延を確認するために行ったのはaddBoundaryTimeObserverForTimes、ビデオプレーヤーを呼び出し、1ミリ秒の時間間隔でビデオが実際に再生を開始した時刻を確認することです。そのタイムスタンプの差を最初の再生を開始するアセットを示すコード。 これまで見てきたことから、AVAsset読み込みの組み合わせを使用し、AVPlayerItem準備ができたらそこからを作成し、AVPlayerStatusReadyToPlayplayを呼び出す前に待機すると、開始に1〜3秒かかることがわかりました。クリップ。 呼び出し元:私は以来、私はほぼ同じだと思うものに切り替えた[AVPlayerItem playerItemWithURL:]と待っているAVPlayerItemStatusReadyToPlayプレーします。ほぼ同じパフォーマンス。 私が観察していることの1つは、最初のAVPlayerアイテムのロードが他のアイテムよりも遅いことです。1つのアイデアは、最初のビデオを再生しようとする前に、短い/空のアセットでAVPlayerを事前に飛行させることは、一般的な慣習になるかもしれないようです。[ AVAudioPlayerの最初のサウンド再生時のスロースタート 私はビデオの開始時間をできる限り短くし、実験するためのアイデアをいくつか持っていることを望みますが、役立つ可能性がある人からのガイダンスをお願いします。 更新:実装後のアイデア7では、スイッチング時間が約500 msになります。これは改善ですが、これをさらに速くした方がいいでしょう。 アイデア1:N個のAVプレーヤーを使用する(機能しない) 〜10個のAVPPlayerオブジェクトを使用し、すべての〜10個のクリップを開始および一時停止します。本当に必要なものを確認したら、切り替えて正しいの一時停止を解除AVPlayerし、次のサイクルのために最初からやり直します。 私はこれがうまくいくとは思いません。私が読んだのはAVPlayer's、iOSでアクティブにできる制限はおよそ4 であるためです。ここでStackOverflowについてこれについて質問している人がいて、4 AVPlayerの制限について知りました:fast-switching-between-videos-using-avfoundation アイデア2:AVQueuePlayerを使用する(機能しません) 10をにAVPlayerItems押し込むと、AVQueuePlayerシームレスに開始するためにそれらすべてがプリロードされるとは思いません。 AVQueuePlayerはキューであり、キュー内の次のビデオをすぐに再生できるようにするだけだと思います。10本の動画のうちどれを再生したいかは、その動画を開始する時までわかりません。ios-avplayer-video-preloading アイデア3:ロード、再生、AVPlayerItemsバックグラウンドでの保持(まだ100%確実ではありませんが、見栄えはよくありません) 各ビデオクリップの最初の1秒をバックグラウンドでロードして再生し(ビデオとオーディオの出力を抑制)、それぞれへの参照を保持し、AVPlayerItem再生する必要があるアイテムがわかっている場合にメリットがあるかどうかを確認しています実際にそれを入れ替え、バックグラウンドのAVPlayerをアクティブなAVPlayerと入れ替えます。すすぎと繰り返し。 理論的には、最近再生AVPlayer/AVPlayerItemされたは、その後の再生を高速化する準備されたリソースをまだ保持している可能性があります。これまでのところ、これによるメリットはありませんがAVPlayerLayer、背景の設定が正しくない可能性があります。これが私が見たものから本当に良くなるとは思えません。 アイデア4:別のファイル形式を使用する-おそらく読み込みが高速な形式ですか 現在、.m4v(video-MPEG4)H.264形式を使用しています。H.264には多くの異なるコーデックオプションがあるため、一部のオプションは他のオプションよりも高速にシークできます。ファイルサイズを小さくする高度な設定を使用すると、シーク時間が長くなることがわかりましたが、逆のオプションは見つかりませんでした。 アイデア5:ロスレスビデオ形式+ AVQueuePlayerの組み合わせ 読み込みが高速でファイルサイズが異常なビデオ形式がある場合、1つのアイデアは、各ビデオクリップの最初の10秒を、膨らんでいるが読み込みは高速であるが、戻ってくるバージョンで事前準備することです。 H.264でエンコードされたアセットを使用します。AVQueuePlayerを使用し、最初の10秒を非圧縮ファイル形式で追加します。その後に、準備/プリロード時間が最大10秒になるH.264の形式を追加します。だから私は両方の世界の「最高」を手に入れます:速い開始時間だけでなく、よりコンパクトなフォーマットからも恩恵を受けます。 アイデア6:非標準のAVPlayerを使用する/自分で作成する/他の人を使用する 私のニーズを考えると、AVPlayerを使用できない可能性がありますが、AVAssetReaderを使用して、最初の数秒をデコードし(未加工ファイルをディスクに書き込む可能性があります)、再生に関しては、未加工形式を使用して再生する必要があります速く戻る。私には巨大なプロジェクトのように思われますが、私が単純な方法でそれをやってみると、それは不明確です/うまく機能することすらありません。デコードおよび非圧縮の各ビデオフレームは2.25 MBです。単純に言えば、ビデオの最大30 fpsを使用すると、最大60 MB / sのディスクからの読み取り要件が発生します。これはおそらく不可能です/プッシュすることです。明らかに、ある程度の画像圧縮(おそらく、PVRTCを介したネイティブのopenGL / es圧縮形式)を行う必要がありますが、それはちょっとおかしいです。多分そこに私が使用できるライブラリがありますか? アイデア7:すべてを1つの映画アセットに結合し、seekToTime 上記のいくつかよりも簡単なアイデアの1つは、すべてを1つのムービーに結合し、seekToTimeを使用することです。問題は、あちこち飛び回っているということです。本質的に映画へのランダムアクセス。これは実際にはうまくいくと思います:avplayer-movie-playing-lag-in-ios5 どのアプローチが最善だと思いますか?これまでのところ、私はラグを減らすという点でそれほど進歩していません。
115 ios  delay  avplayer 


1
AVPlayerとMPMoviePlayerControllerの違い[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する ビデオを再生する必要があるiPhoneアプリケーションを開発しています。これまでに、これを実現するためのAPIが少なくとも2つあることを学びました。AVPlayerとMPMoviePlayerController。 主な違いは何ですか?

5
AVPlayerデリゲートはありませんか?曲の再生がいつ終了したかを追跡する方法は?Objective CiPhoneの開発
周りを見回しましたが、のデリゲートプロトコルが見つかりませんAVPlayer class。何が得られますか? 私はそのサブクラス、を使用して、それぞれがURLからロードされたのAVQueuePlayer配列を再生AVPlayerItemsしています。曲の再生が終了したときにメソッドを呼び出す方法はありますか?特にキューの最後に? それが不可能な場合は、バッファリング後に曲の再生が開始されたときにメソッドを呼び出す方法はありますか?そこに読み込みアイコンを取得しようとしていますが、[audioPlayer play]アクションの後であっても、音楽が実際に始まる前にアイコンがオフになります。

1
HLSビデオ使用時のAVPlayerViewControllerとAVPlayerを備えたiOS 13でのみビデオ再生の問題
動画を再生するアプリがあります。iOS 11、12、およびiOS 13と互換性があります。iOS11および12では、どちらか、AVPlayerViewControllerまたはを使用しても、ビデオ再生は正常に機能しますAVPlayerLayer。 しかし、iOS 13では、iOSを更新したときにかなりの数のユーザーに対して突然ビデオが読み込まれなかった(またはオーディオのみが読み込まれる、または最初のフレームのみが読み込まれる)というレポートが届き始めました。私はそれを複製するのに本当に苦労しましたが、一部はネットワークの接続不良が原因で発生したと述べ、ネットワークリンクコンディショナーでそれを再現することができたと確信しています。 これは特にHLSビデオに影響します(たとえば、Redditが使用するファンシーライブストリーム互換のもの)。MP4でも問題なく動作します。失敗したURLの例を次に示します。https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8 これをトリガーするネットワークリンクコンディショナープロファイルは次のとおりです。https://i.imgur.com/XWsKUeM.jpg これをトリガーするサンプルプロジェクトは、AVPlayerViewControllerとAVPlayerの両方を示しています(ダウンロードがヒットし、Googleは奇妙です):https ://drive.google.com/file/d/1RS5DvUypdOLFCYJe1Pt2Ig0fQljZDLs2/view AVPlayerViewControllerでそれを披露するサンプルコードを次に示します。 let assetURL = URL(string: "https://v.redd.it/gl3chx2kd4v31/HLSPlaylist.m3u8")! // The following MP4 URL *does* work, for instance // let assetURL = URL(string: "https://giant.gfycat.com/DependentFreshKissingbug.mp4")! let player = AVPlayer(url: assetURL) let playerViewController = AVPlayerViewController() playerViewController.player = player self.present(playerViewController, animated: true) { playerViewController.player!.play() } iOS 12デバイスでまったく同じコードを試すと、完全に機能します。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.