9

के साथ AVMutableComposition के शीर्ष पर CALAYer को सही ढंग से निर्यात करने के लिए कैसे करें मुझे पता है कि इस प्रश्न से पहले पूछा गया था (उदाहरण के लिए here और here) लेकिन मैं यह नहीं समझ सकता कि मैं क्या गलत कर रहा हूं।AVAssetExportSession

मेरे पास AVMutableComposition है जिसका उपयोग मैं कुछ वीडियो क्लिप को CALayer एस के साथ जोड़ता हूं जो उनके शीर्ष पर एनिमेट करते हैं।

सब कुछ ठीक काम करता है जब मैं अपना AVMutableComposition लेता हूं और इसे के अंदर प्लेबैक के लिए AVSynchronizedLayer के साथ जोड़ता हूं। वीडियो सही ढंग से बाहर आता है और सबकुछ उस स्थान पर स्थित है जहां इसे करना चाहिए।

मेरे समस्या यह है कि हर CALayer है जब मैं क्योंकि मेरी निर्यात फिल्म में इस बात मैं AVSynchronizedLayer के बजाय AVVideoCompositionCoreAnimationTool और एक AVAssetExportSession (कि क्या प्रलेखन कहते हैं हम निर्यात के लिए इस्तेमाल करना चाहिए है), लेकिन कुछ गलत हो जाता उपयोग करने की कोशिश का निर्यात करने की कोशिश की है यह समन्वय प्रणाली उलट है।

पागल तो अगर प्लेबैक के दौरान 0,0 बिंदु ऊपरी बाएं भाग स्क्रीन के कोने में है जब मैं फिल्म 0,0 बिंदु नीचे बाईं ओर कोने में है निर्यात इसलिए मेरी एनीमेशन जाना ।

मैं इस बारे में किसी भी संभावित लेख पढ़ सकते हैं और मैं भी एप्पल से AVVideoEdit नमूना डाउनलोड किया लेकिन मैं सिर्फ नहीं देख सकते हैं कि क्या हो रहा है ...

+0

यदि आपको कभी भी कोई जवाब मिलता है तो मुझे रूचि है। – aLevelOfIndirection

+0

मुझे इसके लिए कोई अच्छा जवाब नहीं मिला। मैंने जो निर्यात किया था, वह निर्यात से ठीक पहले था, जिसने एक कस्टम फ़ंक्शन के लिए एनीमेशन धारण किया था, जो मैंने लिखा था कि सभी sublayers को फिर से चलाता है और निर्देशांक बदलता है ... यह एक हैक और बदसूरत समाधान है, लेकिन यह चाल है मुझे। –

+0

क्या आप कुछ कोड प्रदान कर सकते हैं? मैं वही सामान करने की कोशिश कर रहा हूं और इसे पूरा नहीं कर सकता :( –

उत्तर

15

किसी को जो मैं मैंने किया था के रूप में एक ही समस्या है के लिए अंत में एक जवाब मिला। प्रत्येक CALayer की एक संपत्ति है जिसे geometryFlipped कहा जाता है, जिसे आपको निर्यात करने से ठीक पहले YES पर सेट करने की आवश्यकता है और सबकुछ ठीक होगा। अधिक जानकारी here

+0

यह आवश्यक क्यों है? –

0
Methods that fixing frames and points 
- (CGRect) fixRect:(CGRect)rect inRect:(CGRect)container 
{ 
    CGRect frame = rect; 
    frame.origin.y = container.size.height - frame.origin.y - frame.size.height; 
    return frame; 
} 
- (CGPoint) fixPoint:(CGPoint)point fromPoint:(CGSize)containerSize 
{ 
    CGPoint frame = point; 
    frame.y = containerSize.height - frame.y; 
    return frame; 
}