1

私のアプリでは、AVAssetWriter、AVAssetWriterInput、AVAssetWriterInputPixelBufferAdaptorを使用して静止画像の配列からムービーファイルを作成します(これを行う方法を説明するスレッドはたくさんあります)。AVAssetWriterInputの出力設定AVVideoWidthKeyおよびAVVideoHeightKeyとして、ユーザーにビデオ解像度(1080p、720p、540p、または480p)を選択させ、これを-pixelBufferFromCGImage:メソッドにも使用します。

ビデオの作成は、iPhone 5のすべての解像度でうまく機能します。ただし、iPhone 3GSでは、480pを超えるすべての解像度でビデオ出力は得られませんが、解像度として1080pを使用する場合を除いてエラーは発生しません(この場合、-pixelBufferFromCGImage:メソッドはNULLを返します)。3Gが480pよりも高い解像度のビデオをエクスポートできない可能性があり、iPhone 4が1080pビデオをエクスポートできない可能性があることは、私には問題ありません。

しかし、私の質問は、デバイスが書き込むことができるビデオ解像度を確認し、これらの解像度のみをユーザーに提供するにはどうすればよいですか?

4

1 に答える 1

1

AVFoundationを掘り下げて、私は自分で解決策を見つけました。独自のオプションを作成するのではなく、プリセット自体を使用しない場合でも、使用したいプリセットのAVAssetExportSessionsallExportPresetsプロパティを確認する必要がありました。

これを行うには、次のコードを使用します。

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");
}
于 2012-11-19T20:49:53.473 に答える