2012-01-24 10 views
5

私はAVPlayerに関連付けられたAVMutableCompositionを持っています。 このコンポジションにトラックを追加すると、プレーヤーにコンポジションを再設定しない限り、AVPlayerは追加されたトラックを再生しないようです。今は、現在のアイテムを、すでに設定されているものと同じコンポジションに置き換えるだけで、これをやっています。その後、新しいトラックをピックアップします。AVMutableCompositionのリロード

これが正しい方法であるかどうかは分かりませんでしたが、それはどういうわけか、そのようにするのが少し奇妙なようです。

アイデア?それは可変構図だが、

おかげ

+0

いますが、それは奇妙だと表示されません!トラックを削除している場合、プレーヤーのアイテムを交換する必要はなく、このトラックはこれ以上置き換えなくても再生を停止します。 – AMTourky

答えて

5

は基本的には、リンゴが不変のコンポジションを作成し、再生のためにAVPlayerItemを作成することをお勧めします。ちょっと迷惑ですが、周りを回ることができます。時間をサンプリングするだけでビデオをリフレッシュする場合は、別のAVPlayerItemを作成し、適切なタイミングでロードしてください。

はここ

AVMutableCompositionでは、既存の資産から新しいコンポジションを作成したいときに 使用AVCompositionの可変サブクラスであるAppleのAVMutableCompositionのドキュメントからの抜粋です。 はトラックの追加と削除が可能で、時間範囲の追加、削除、および拡大縮小は です。

次のようにあなたが 再生や検査のための可変の組成物の不変のスナップショットを作成することができます

AVMutableComposition *myMutableComposition = 
    <#a mutable composition you want to inspect or play in its current state#>; 

AVComposition *immutableSnapshotOfMyComposition = [myMutableComposition copy]; 

// Create a player to inspect and play the composition. 
AVPlayerItem *playerItemForSnapshottedComposition = 
    [[AVPlayerItem alloc] initWithAsset:immutableSnapshotOfMyComposition]; 

詳しい情報:Full Document

+1

返信ありがとう、それは基本的に私が今やっていることですが、それはそれを行う方法であることを確認します。 –

関連する問題