2011-02-06 13 views
7

मैं AVAssetWriter के साथ एकाधिक, धारावाहिक लेखन सत्र बनाने का प्रयास कर रहा हूं। एक बार मैंने सफलतापूर्वक पूरा कर लिया है (FinWriting को कॉल करने के बाद) स्थिति 2 पर सेट है (AVAssetWriterStatus पूर्ण)।AVAssetWriter एकाधिक सत्र और स्थिति संपत्ति

दूसरे सत्र बनाने के लिए कोशिश कर रहा है, मैं startWriting फोन, लेकिन मैं त्रुटि मिलती है:

[AVAssetWriter startWriting] cannot call method when status is 2 

लगता है जब तक मैं कुछ कॉन्फ़िगर मैं एक लेखन सत्र नहीं बना सकते। क्या मुझे फिर से AVAssetWriter को फिर से बनाना है? मुझे कुछ याद आना चाहिए, और दस्तावेज़ मदद नहीं कर रहे हैं।

धन्यवाद।

उत्तर

17

लेखक पूरा होने के बाद यह अब उपयोग करने योग्य नहीं है। आपको एक नया बनाना होगा। दस्तावेज़ों से:

आप केवल एक फ़ाइल को लिखने के लिए AVAssetWriter के दिए गए उदाहरण का उपयोग कर सकते हैं। यदि आप कई बार फाइलों को लिखना चाहते हैं, तो आपको हर बार AVAssetWriter का एक नया उदाहरण उपयोग करना होगा।

मेरे पास एक ऐप है जहां मैं दो AVAssetWriters का उपयोग करता हूं। मैं दो लेखकों को बनाता हूं जहां एक समय में केवल एक सक्रिय होता है। जब कुछ समय डेल्टा पहुंचाया जाता है तो मैं सक्रिय लेखक को पूरा करने और मनोरंजन के लिए एक जीसीडी कतार पर धक्का देता हूं, और सक्रिय लेखक पॉइंटर को अन्य लेखक को सेट करता हूं।

if(time > delta) 
    dispatch(^{ finish writer, create new one }) 
    active_writer = next writer 

यह कैप्चर कतार का उपयोग करते समय अच्छी तरह से काम करता है। आप लेखक की स्थिति को देखते हुए संचालन करने के लिए एक स्विच सेट कर सकते हैं।

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