2011-12-29 42 views
2

調用其他方法我正在使用以下代碼將.mp4.caf合併爲.mov。 (注:我知道如何播放視頻,所以不要給該代碼)iPhone:如何從[_assetExport exportAsynchronouslyWithCompletionHandler:^(void){}

AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition 
                     presetName:AVAssetExportPresetPassthrough]; //AVAssetExportPresetPassthrough 

NSString* videoName = @"export.mov"; 

NSString *exportPath = [document stringByAppendingPathComponent:videoName]; 
NSURL *exportUrl = [NSURL fileURLWithPath:exportPath]; 
NSLog(@"Export : %@",exportUrl); 

if ([[NSFileManager defaultManager] fileExistsAtPath:exportPath]) 
{ 
    [[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil]; 
} 

_assetExport.outputFileType = AVFileTypeQuickTimeMovie;//@"com.apple.quicktime-movie"; 
NSLog(@"file type %@",_assetExport.outputFileType); 
_assetExport.outputURL = exportUrl; 
_assetExport.shouldOptimizeForNetworkUse = YES; 

[_assetExport exportAsynchronouslyWithCompletionHandler: 
^(void) { 
    switch (_assetExport.status) 
    { 
     case AVAssetExportSessionStatusCompleted: 
      // export complete 

      NSLog(@"Export Complete"); 
     ------>>> // From Here I want play movie using MPMoviePlayerController.<<<--------- 


      break; 
     case AVAssetExportSessionStatusFailed: 
      NSLog(@"Export Failed"); 
      NSLog(@"ExportSessionError: %@", [_assetExport.error localizedDescription]); 

      //    export error (see exportSession.error) 
      break; 
     case AVAssetExportSessionStatusCancelled: 
      NSLog(@"Export Failed"); 
      NSLog(@"ExportSessionError: %@", [_assetExport.error localizedDescription]); 

      //    export cancelled 
      break; 

    } 


}  

]; 

因此,對於視頻播放我叫其他方法[self playVideo]但它不是在玩。

我試圖用這種方法b'coz [_assetExport exportAsynchronouslyWithCompletionHandler: ^(void) { }將使用其他線程來導出視頻。

如果我嘗試在上面的代碼後撥打[self playVideo]。它不會獲得視頻b'coz視頻仍然在上述方法下創建。

我也嘗試通知AVAssetExportSessionStatusCompleted但它沒有播放視頻。

所以我的問題是如何從該方法播放視頻?或者如何將控制切換到主線程,以便我可以成功播放視頻?

+0

嘗試改變AVAssetExportPresetPassthrough到AVAssetExportPresetMediumQuality – Splendid 2011-12-29 10:41:16

+0

我不要求視頻質量。 – Devang 2011-12-29 11:41:21

+0

您是否在導出後獲得視頻?把它保存到NSDocumentdirector中。 – Splendid 2011-12-29 13:35:41

回答

6

這樣的:

[self performSelectorOnMainThread:@selector(playVideo) withObject:nil waitUntilDone:NO]; 
+0

你剛剛救了我幾個小時的挫折,謝謝! – kevlar 2012-03-29 23:13:44

相關問題