iphone - MOV 以编程方式将 iPhone 转换为 Mp4 视频

标签 iphone ios video-processing

我正在为 iPhone 中的 Play Station 3 开发媒体服务器。

我开始知道 PS3 不支持 .MOV 文件,所以我必须将它转换成 Mp4 或其他 PS3 支持的转码。

这就是我所做的,但是如果我设置的文件类型与其源文件不同,它会崩溃。

AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:videoURL options:nil];

NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];

if ([compatiblePresets containsObject:AVAssetExportPresetLowQuality])
{
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetLowQuality];

    exportSession.outputURL = [NSURL fileURLWithPath:videoPath];

    exportSession.outputFileType = AVFileTypeMPEG4;

    CMTime start = CMTimeMakeWithSeconds(1.0, 600);

    CMTime duration = CMTimeMakeWithSeconds(3.0, 600);

    CMTimeRange range = CMTimeRangeMake(start, duration);

    exportSession.timeRange = range;

    [exportSession exportAsynchronouslyWithCompletionHandler:^{

        switch ([exportSession status]) {

            case AVAssetExportSessionStatusFailed:
                NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]);

                break;

            case AVAssetExportSessionStatusCancelled:

                NSLog(@"Export canceled");

                break;

            default:

                break;
        }

        [exportSession release];
    }];
}

如果我在这里设置 AVFileTypeMPEG4 然后它崩溃,说“无效的文件类型”。所以我必须将它设置为 AVFileTypeQuickTimeMovie 并提供 MOV 文件。

在 iOS 中是否可以通过 AVAssetExportSession 将视频从 MOV 转换为 Mp4 ......或者没有任何第三方库?

最佳答案

presetName 使用“AVAssetExportPresetPassthrough”代替“AVAssetExportPresetLowQuality”

 AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetPassthrough];

关于iphone - MOV 以编程方式将 iPhone 转换为 Mp4 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474517/

相关文章:

iphone - iPhone EDGE/3G网络端口范围?有人知道吗

ios - 调查猴iOS SDK

ios - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '-[UIImage length]: unrecognized selector sent to instance

iphone - IOS - 如果文件太大而无法将其全部加载到内存中,我如何使用 AES 解密大文件?

objective-c - 在 iPhone 上使用 NSMethodSignature(具有 Obj-C 2.0 属性)

iphone - 重新排列数组中的值

ios - 是否有用于检查 iphone 中是否安装了 eSIM 的 API?

ffmpeg - 如何在ffmpeg中添加 'drawtext'覆盖?

python - Tensorflow 的对象检测 API 的输出是什么?

c# - c# 中的运动检测和对象提取?