2017-10-13 6 views
0

J'utilise une caméra pour enregistrer des vidéos et les enregistrer dans mon dossier de documents. Le problème auquel je suis confronté est que les vidéos que j'ai obtenues de l'appareil photo sont des fichiers .avi et doivent être convertis en .mp4 (ou tout autre format autorisé).Impossible de convertir .avi en .mp4 dans iOS objectif-c

J'utilise le code ci-dessous:
SOURCE: iOS Convert AVI to MP4 Format programatically

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyVideo.mp4"]; 
NSURL *outputURL = [NSURL fileURLWithPath:filePath]; 

[self convertVideoToLowQuailtyWithInputURL:localUrl outputURL:outputURL handler:^(AVAssetExportSession *exportSession) 
{ 
    if (exportSession.status == AVAssetExportSessionStatusCompleted) { 
     // Video conversation completed 
    }   
}]; 

- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL outputURL:(NSURL*)outputURL handler:(void (^)(AVAssetExportSession*))handler { 
    [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil]; 
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough]; 
    exportSession.outputURL = outputURL; 
    exportSession.outputFileType = AVFileTypeMPEG4; 
    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) { 
     handler(exportSession); 
    }]; 
} 

l'état exportSession échoue toujours. Mais quand j'essaye de convertir un .mov en .mp4 fonctionne. Comment puis-je ne pas convertir les fichiers .avi en fichiers .mp4?

+0

Quel est le codec vidéo dans la vidéo AVI? Utilisez un outil comme ** MediaInfo ** (vérifiez en mode 'text') si vous ne connaissez pas les détails AVI. –

+0

Toutes les informations MediaInfo me donne est: 275 kb/s, 640x480 (4: 3), à 10.000 FPS, AVS (Baseline @ L3) (1 cadre Ref) @ VC.One – Milander

+0

_ "** AVS ** (Baseline @ L3) "_ ?? Est-ce une faute de frappe? Si en fait vous vouliez dire ** AVC ** alors vous avez un codec vidéo compatible pour le conteneur MP4 ... Y a-t-il aussi du son avec codec correct (AAC ou MP3)? Quand vous dites _ "le statut de session d'exportation échoue toujours" _ aucun autre message d'erreur utile? Si le problème n'est pas le codec vidéo, n'est pas le codec audio, alors le problème doit être le fichier AVI lui-même. La marque de l'appareil photo pourrait également faire quelques bizarreries AVI personnalisées étranges. –

Répondre

0

Essayez d'imprimer le message d'erreur:

switch ([exportSession status]) { 
     case AVAssetExportSessionStatusFailed: 
      NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]); 
      break; 
     case AVAssetExportSessionStatusCancelled: 
      NSLog(@"Export canceled"); 
      break; 
      case AVAssetExportSessionStatusCompleted: 
      NSLog(@"Successfully"); 
      break; 
     default: 
      break; 
     } 

    }]; 
} 
+0

Oui, vous avez raison, c'est ma première réponse, j'ai changé le format – CharmingQin

+0

le problème est que la description localisée n'est pas vraiment utile. La sortie est 'Échec de l'exportation: l'opération n'a pas pu aboutir'. – Milander

+0

@Milander thx pour vos conseils – CharmingQin