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