2015-04-15 2 views
0

Я храню видеофайлы на веб-сервере, которые берутся с помощью видеомагнитофона iOS в UIImagePickerController. Перед отправкой видео на сервер преобразовать его из MOV в MP4 с помощью следующего кода:Преобразование файла MOV в MP4 превращает видео вверх дном

AVAsset *avAsset = [AVAsset assetWithURL:info[UIImagePickerControllerMediaURL]]; 
     AVAssetExportSession *exporter = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetPassthrough]; 
     exporter.outputFileType = AVFileTypeMPEG4; 
     exporter.shouldOptimizeForNetworkUse = YES; 
     exporter.outputURL = [NSURL fileURLWithPath:[self getVideoPath]]; 
     [exporter exportAsynchronouslyWithCompletionHandler:^{ 
      switch (exporter.status) 
      { 
       case AVAssetExportSessionStatusFailed: 
        NSLog(@"Video conversion Failed: %@",exporter.error); 
        break; 
       case AVAssetExportSessionStatusCancelled: 
        NSLog(@"video conversion canceled"); 
        break; 
       case AVAssetExportSessionStatusExporting: 
        NSLog(@"video conversion exporting"); 
        break; 
       case AVAssetExportSessionStatusWaiting: 
        NSLog(@"video conversion is waiting"); 
        break; 
       case AVAssetExportSessionStatusUnknown: 
        NSLog(@"video converstion status unknown"); 
        break; 
       case AVAssetExportSessionStatusCompleted: 
        self.outputFileURL = exporter.outputURL; 
        break; 
      } 
     }]; 

Я проверил с утверждением переключателя выше, что преобразование ударом AVAssetExportSessionStatusCompleted состояния. Однако, когда я смотрю видео на серверной стороне, он перевернут вверх ногами. Это происходит независимо от iPad/iPhone или независимо от того, было ли видео сделано в ландшафтном или портретном режимах. Когда я загружаю файл с веб-сервера в приложение, он работает правильно и с правильной ориентацией, поэтому это происходит только вне iOS. Следует отметить, что если я не скрываю файл, но вместо этого оставляю его как файл MOV, он поддерживает правильную ориентацию вне приложения, но, конечно, ему нужно использовать Quicktime для его просмотра.

Почему этот процесс преобразования приводит к тому, что видео перевернуто вверх дном и как я могу это исправить?

ответ

0

Экспортер просто не уважает преобразование. Поверните его.

how to export video asset via AVAssetExportSession in portrait mode

Это также может помочь.

http://www.padamthapa.com/video-rotation-issue-merge/

+0

Спасибо за ссылки. Одна вещь, которая меня путает, - это окончательный файл. Вы должны экспортировать видео дважды, один раз перед преобразованием, а затем снова? Я могу применить преобразование к видео, но если я использую экспорт для доступа к файлу, возникает одна и та же проблема. Кажется, вы применяете tranform после использования сессии экспорта, но как вы можете вернуть эти изменения обратно к видео без использования экспортера? – C6Silver

Смежные вопросы