【问题标题】:Converting MOV file to MP4 turns video upside down将 MOV 文件转换为 MP4 会使视频上下颠倒
【发布时间】:2015-04-15 16:39:05
【问题描述】:

我将视频文件存储在 Web 服务器上,这些文件是使用 UIImagePickerController 中的股票 iOS 录像机拍摄的。在将视频发送到服务器之前,我使用以下代码将其从 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;
            }
        }];

我已经用上面的 switch 语句验证了转换达到了AVAssetExportSessionStatusCompleted 状态。但是,当我查看服务器端的视频时,它是颠倒的。无论是 iPad/iPhone 还是视频是以横向或纵向模式拍摄的,都会发生这种情况。当我将文件从网络服务器下载到应用程序中时,它确实可以正确播放并且方向正确,因此这只发生在 iOS 之外。值得注意的是,如果我不隐藏文件而是将其保留为 MOV 文件,它会在应用程序外部保持正确的方向,但当然它必须使用 Quicktime 来查看它。

为什么这个转换过程会导致视频倒置,我该如何解决这个问题?

【问题讨论】:

    标签: ios objective-c xcode avassetexportsession


    【解决方案1】:

    【讨论】:

    • 感谢您的链接。让我感到困惑的一件事是最终文件。您是否应该将视频导出两次,一次是在转换之前,一次是在转换之后?我可以将转换应用于视频,但如果我使用导出来获取文件,则会发生同样的问题。您似乎在使用导出会话后应用了转换,但是如何在不使用导出器的情况下将这些更改保存回视频?
    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 2013-03-09
    • 2017-09-26
    • 2012-01-18
    • 2021-12-02
    • 2012-08-15
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多