調用其他方法我正在使用以下代碼將.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
但它沒有播放視頻。
所以我的問題是如何從該方法播放視頻?或者如何將控制切換到主線程,以便我可以成功播放視頻?
嘗試改變AVAssetExportPresetPassthrough到AVAssetExportPresetMediumQuality – Splendid 2011-12-29 10:41:16
我不要求視頻質量。 – Devang 2011-12-29 11:41:21
您是否在導出後獲得視頻?把它保存到NSDocumentdirector中。 – Splendid 2011-12-29 13:35:41