2013-09-29 8 views
5

को फ्रीज करने के लिए वीडियो फ्रेम का कारण बनता है IOS7 SDK में AVMutableVideoCompositionLayerInstruction के माध्यम से कुछ वीडियो संशोधित करने के साथ काम कर रहा हूं।आईओएस 7 AVMutableVideoCompositionLayerInstruction

निम्नलिखित कोड आईओएस 6.1.3 पर काम करने के लिए प्रयुक्त होता है, लेकिन आईओएस 7 में वीडियो पहले फ्रेम पर जमे हुए है (हालांकि मैं अभी भी ऑडियो ठीक कर सकता हूं)। मैंने उन सभी वास्तविक परिवर्तनों से छुटकारा पा लिया जो मैं यह सत्यापित करने के लिए आवेदन कर रहा था कि अकेले एक वीडियो संरचना जोड़ना समस्याएं पैदा करता है।

AVURLAsset* videoAsset = [[AVURLAsset alloc] initWithURL:inputFileURL options:NULL]; 
AVAssetTrack *videoAssetTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; 

AVMutableVideoCompositionLayerInstruction *layerInstruction = 
[AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoAssetTrack]; 

AVMutableVideoComposition *mainComposition = [AVMutableVideoComposition videoComposition]; 
AVMutableVideoCompositionInstruction *mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction]; 
mainInstruction.layerInstructions = [NSArray arrayWithObject:layerInstruction]; 
mainInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, videoAsset.duration); 
mainComposition.instructions = [NSArray arrayWithObject:mainInstruction]; 
mainComposition.frameDuration = videoAsset.duration; 
mainComposition.renderSize = CGSizeMake(320, 320); 

... 
exportSession.videoComposition = mainComposition; 

मैं exportSession की videoComposition विशेषता तो वीडियो रिकॉर्ड स्थापित नहीं करते हैं ठीक है, लेकिन मैं किसी भी परिवर्तनों लागू नहीं कर सकते। किसी को पता है कि इसका कारण क्या हो सकता है?

धन्यवाद।

+0

यहां वही, इंटरनेट पर कोई मदद नहीं –

उत्तर

0

वीडियो संरचना के साथ समस्याओं को डीबग करने का एक अच्छा तरीका [AVMutableVideoComposition videoCompositionWithPropertiesOfAsset:asset] का उपयोग करना है। लौटा AVMutableVideoComposition सही ढंग से काम करना चाहिए। फिर आप अपने निर्देशों के साथ instructions सरणी की सामग्री की तुलना कर सकते हैं।

भ्रम के स्तर को बढ़ाने के लिए, asset भी AVComposition हो सकता है। मुझे लगता है कि AVFoundation टीम ने इन चीजों का नामकरण करते समय सबसे अच्छा काम नहीं किया ....

1

मैं AVMutableVideoCompositionLayerInstruction के साथ भी संघर्ष कर रहा हूं और कैलियर के साथ वीडियो मिला हूं। कुछ दिनों के बाद मुझे अलग-अलग तरीकों की कोशिश करने का एहसास हुआ कि संपत्ति का समय बहुत महत्वपूर्ण है।

loadValuesAsynchronouslyForKeys: प्रत्येक संपत्ति के समय पता लगाने के लिए उचित तरीके से संपत्ति का उपयोग है @ [@ "अवधि"]

//Asset url 
    NSURL *assetUrl = [NSURL fileURLWithPath:_firstVideoFilePath]; 

    //audio/video assets 
    AVURLAsset * videoAsset = [[AVURLAsset alloc]initWithURL:assetUrl options:nil]; 

    //var to store the duration 
    CMTime __block durationTime; 

    //And here we'll be able to proper get the asset duration 
    [videoAsset loadValuesAsynchronouslyForKeys:@[@"duration"] completionHandler: ^{ 
     Float64 durationSeconds = CMTimeGetSeconds([videoAsset duration]); 
     durationTime = [videoAsset duration]; 
     //At this point you have the proper asset duration value, you can start any video processing from here. 
    }]; 

आशा इसी मुद्दे के साथ किसी को भी करने में मदद करता ।