4

画像の配列からビデオを作成しています。私の仕事の目的は、圧縮なしで .mov ビデオを作成することです。開発者ライブラリでキー「AVVideoCompressionPropertiesKey」が存在することを確認しましたが、このキーで圧縮なしを指定する方法がわかりません。

私を手伝ってくれますか?

ここに私のサンプルコードがあります:

NSDictionary *videoCleanApertureSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [NSNumber numberWithInt:320], AVVideoCleanApertureWidthKey,
                                            [NSNumber numberWithInt:480], AVVideoCleanApertureHeightKey,
                                            [NSNumber numberWithInt:10], AVVideoCleanApertureHorizontalOffsetKey,
                                            [NSNumber numberWithInt:10], AVVideoCleanApertureVerticalOffsetKey,
                                            nil];

NSDictionary *codecSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                               [NSNumber numberWithInt:960000], AVVideoAverageBitRateKey,
                               [NSNumber numberWithInt:1],AVVideoMaxKeyFrameIntervalKey,
                               videoCleanApertureSettings, AVVideoCleanApertureKey,
                               nil];


NSDictionary *videoOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:AVVideoCodecH264, AVVideoCodecKey,codecSettings,AVVideoCompressionPropertiesKey, [NSNumber numberWithInt:size.width], AVVideoWidthKey,
                                     [NSNumber numberWithInt:size.height], AVVideoHeightKey, nil];

self.videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoOutputSettings];
4

3 に答える 3

4

AVVideoQualityKey値をNSNumber1.0に設定してAVVideoCodecJPEGを使用してみてください。もう1つの方法は、H264を指定し、ビットレートを非常に高い値に設定し、キーフレーム間隔を1(つまりすべてのキーフレーム)に指定することです。

于 2012-07-03T23:51:58.203 に答える
3

そのキーは圧縮を無効にするためのものではなく、jpg や h264 .Ie などの特定のコーデックに特定の圧縮値を指定することです。

    [videoSettings addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                                 AVVideoCodecH264, AVVideoCodecKey,
                                                 nil]];

        NSMutableDictionary* videoCompressionSettings = [NSMutableDictionary dictionary];

        if ([[Preferences instance] recordingH264Keyframes] > 0) {
            [videoCompressionSettings addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                                     [NSNumber numberWithInt:[[Preferences instance] recordingH264Keyframes]], AVVideoMaxKeyFrameIntervalKey,
                                                     nil]];
        }

        if ([[Preferences instance] recordingH264Bitrate] > 0) {
            [videoCompressionSettings addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                                     [NSNumber numberWithInt:[[Preferences instance] recordingH264Bitrate]*1000], AVVideoAverageBitRateKey,
                                                     nil]];
        }

        if ([videoCompressionSettings count]) {
            [videoSettings addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:videoCompressionSettings,AVVideoCompressionPropertiesKey,nil]];
        }
于 2012-09-26T15:14:54.697 に答える
0

ProRes4444 ビデオ コーデックは、Apple が非圧縮コーデックに最も近いものです。このコーデックは、iOS ではビデオ コンテンツの書き込みには使用できません。OS X のみです。

iOS では、ビデオ コンテンツを非圧縮でエクスポートすることはできません。

于 2015-08-01T13:37:14.277 に答える