【问题标题】:Video from images array on iPhone - Which resolution work and how to find outiPhone上图像阵列中的视频-哪种分辨率有效以及如何找出
【发布时间】:2012-11-07 12:39:06
【问题描述】:

在我的应用程序中,我使用 AVAssetWriter、AVAssetWriterInput 和 AVAssetWriterInputPixelBufferAdaptor 从一组静止图像创建电影文件(有很多线程描述了如何做到这一点)。 作为 AVAssetWriterInput 输出设置 AVVideoWidthKey 和 AVVideoHeightKey,我让用户选择一个视频分辨率(1080p、720p、540p 或 480p),然后我也将其用于 -pixelBufferFromCGImage: 方法。

在我的 iPhone 5 上创建视频适用于所有分辨率。但是在我的 iPhone 3GS 上,每个高于 480p 的分辨率都没有给我视频输出,但我也没有收到任何错误,除非我使用 1080p 作为分辨率(在这种情况下, -pixelBufferFromCGImage:方法返回 NULL)。我认为 3G 可能永远无法导出分辨率高于 480p 的视频,而 iPhone 4 可能无法导出 1080p 视频。

但是,我的问题是:我将如何检查设备可以写入哪些视频分辨率并仅向用户提供这些分辨率?

【问题讨论】:

    标签: iphone image video resolution iphone-3gs


    【解决方案1】:

    深入研究 AVFoundation,我自己找到了解决方案。我只需要检查 AVAssetExportSessions allExportPresets 属性以获取我想要使用的预设,即使我自己不使用预设而不是创建自己的选项。

    为此,我使用以下代码:

    if([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPreset640x480]){
        NSLog(@"480p"); 
    }
    if([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPreset960x540]){
        NSLog(@"540p");
    }
    if([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPreset1280x720]){
        NSLog(@"720p");
    }
    if([[AVAssetExportSession allExportPresets] containsObject:AVAssetExportPreset1920x1080]){
        NSLog(@"1080p");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2019-12-05
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多