2012-01-24 5 views
5

को पुनः लोड करना मेरे पास एक AVMutableComposition है जिसे मैंने एवीप्लेयर से जोड़ा है। ऐसा लगता है कि अगर मैं इस रचना में ट्रैक जोड़ता हूं तो AVPlayer अतिरिक्त ट्रैक नहीं चलाता है जब तक कि मैं प्लेयर पर फिर से संरचना सेट नहीं करता। अभी मैं वर्तमान आइटम को उसी संरचना के साथ बदलकर कर रहा हूं जो पहले से सेट है। उसके बाद यह नए पटरियों को उठाता है।AVMutableComposition

मैं यह समझने में सक्षम नहीं हूं कि यह करने का सही तरीका है, तो ऐसा लगता है कि ऐसा करने में थोड़ा अजीब लगता है।

कोई भी विचार?

धन्यवाद

+0

लेकिन आप नहीं दिख रहा है कि यह अजीब बात है ?! यदि आप एक ट्रैक हटा रहे हैं, तो आपको प्लेयर के आइटम को प्रतिस्थापित करने की आवश्यकता नहीं है, और यह ट्रैक बिना किसी और प्रतिस्थापन के खेलना बंद कर देता है !!! – AMTourky

उत्तर

5

मूल रूप से हालांकि यह अस्थायी संरचना है, सेब अपरिवर्तनीय संरचना बना सकते हैं और प्लेबैक प्रयोजनों के लिए AVPlayerItem बनाने के लिए सलाह देते हैं। यह थोड़ा परेशान है लेकिन आप इसके चारों ओर जा सकते हैं। जब आप वीडियो को रीफ्रेश करना चाहते हैं तो बस समय का नमूना लें, एक और AVPlayerItem बनाएं और इसे सही समय पर लोड करें।

यहाँ सेब के AVMutableComposition प्रलेखन से स्निपेट

AVMutableComposition AVComposition की एक परिवर्तनशील उपवर्ग आप का उपयोग जब आप मौजूदा परिसंपत्तियों से एक नया संयोजन बनाने के लिए चाहते हैं। आप ट्रैक जोड़ और निकाल सकते हैं, और आप समय श्रेणियां जोड़, निकाल और स्केल कर सकते हैं।

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

उत्तर के लिए धन्यवाद, यह मूल रूप से मैं अब क्या कर रहा हूं, लेकिन यह सत्यापित करता है कि ऐसा करने का तरीका है। –

संबंधित मुद्दे