3

誰でもこの問題で私を助けることができますか? 次の出力設定で AVAssetWriter を使用してビデオをエンコードできます。

NSDictionary *videoCompressionSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                          AVVideoCodecH264, AVVideoCodecKey,
                                          [NSNumber numberWithInteger:dimensions.width], AVVideoWidthKey,
                                          [NSNumber numberWithInteger:dimensions.height], AVVideoHeightKey,
                                          [NSDictionary dictionaryWithObjectsAndKeys:
                                           [NSNumber numberWithInteger:bitsPerSecond], AVVideoAverageBitRateKey,
                                           [NSNumber numberWithInteger:30],AVVideoMaxKeyFrameIntervalKey,
                                           nil], AVVideoCompressionPropertiesKey,   
                                          nil];

ただし、プロファイルを指定してエンコードしようとすると、 AVVideoProfileLevelH264Baseline30 出力設定は次のようになります

NSDictionary *videoCompressionSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                          AVVideoCodecH264, AVVideoCodecKey,
                                          [NSNumber numberWithInteger:dimensions.width], AVVideoWidthKey,
                                          [NSNumber numberWithInteger:dimensions.height], AVVideoHeightKey,
                                          [NSDictionary dictionaryWithObjectsAndKeys:
                                           [NSNumber numberWithInteger:bitsPerSecond], AVVideoAverageBitRateKey,
                                           [NSNumber numberWithInteger:30],AVVideoMaxKeyFrameIntervalKey,
                                           AVVideoProfileLevelH264Baseline30,AVVideoProfileLevelKey,
                                           nil], AVVideoCompressionPropertiesKey,   
                                          nil];

これらの設定でビデオ録画が失敗します。

ここで私の問題はどこにありますか?このようにアセットライターを初期化しました

_assetWriter = [[AVAssetWriter alloc] initWithURL:_movieURL fileType:AVFileTypeMPEG4 error:&error];
4

1 に答える 1

1

私もこれで失敗したことがあります。私にとって、問題は OS X 10.7 (Lion) のみで、これは単に AVVideoProfileLevelKey をサポートしていません... H.264 でエンコードすることはできますが、そのパラメーターを省略するだけで、OS がプロファイルの選択を処理します。使用する。OS X 10.8/10.9、または iOS 4 以降でこれが失敗する場合は、別の問題が発生しています。

于 2013-10-06T18:31:14.420 に答える