3

ウェブカメラから録画しています。カメラは PhotoBooth で見栄えがします。ただし、プログラムで QTCaptureView を使用してプレビューしたり、ファイルに記録したりすると、非常に遅くなります。その理由は、QuickTime が 1600x1200 の最大解像度を提供しているためです。QTCaptureView とファイルへの記録の両方に、より適切なサイズを強制するにはどうすればよいですか?

4

3 に答える 3

7

here で説明されているように、QTCaptureSession からの出力内のピクセル バッファー属性を設定して、キャプチャされるビデオの解像度を変更できます。例えば:

[[[myCaptureSession outputs] objectAtIndex:0] setPixelBufferAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                                [NSNumber numberWithInt:480], kCVPixelBufferHeightKey,
                                                                [NSNumber numberWithInt:640], kCVPixelBufferWidthKey, nil]];

キャプチャ セッションの最初の出力のビデオ解像度を 640x480 に設定します。これにより、カメラ設定自体も調整され、そのサイズの画像フレームが返されるようになります (カメラ ハードウェアでサポートされている場合)。

h.264 の代わりにベース MPEG4 エンコーディングを使用して、リアルタイムのビデオ録画を行うこともできます。これは、次のようなコードを使用して設定できます。

NSArray *outputConnections = [mCaptureMovieFileOutput connections];
QTCaptureConnection *connection;
for (connection in outputConnections)
{
    if ([[connection mediaType] isEqualToString:QTMediaTypeVideo])
            [mCaptureMovieFileOutput setCompressionOptions:[QTCompressionOptions compressionOptionsWithIdentifier:@"QTCompressionOptionsSD480SizeMPEG4Video"] forConnection:connection];
}

h.264 エンコーディング、特に Quicktime の実装では、ベースの MPEG4 よりもはるかに多くの CPU パワーを使用してエンコードします。

于 2009-04-29T18:21:41.073 に答える
3

上記の解決策(setPixelBufferAttributes :)はプレビューサイズを正しく設定しますが、ムービーの記録が開始されると、(ほぼ)圧縮オプションを設定した場合、プレビュー画像は元の値(MBPでは1280 x 1024)に戻ります。 。

それが映画の録画中だけだった場合、それは1つのことですが、録画が完了すると、setPixelBufferAttributesをそれ以上呼び出しても効果はありません。

したがって、実際に圧縮されたムービーを記録する予定がない限り、プレビュー画像のサイズを変更できます。

これは10.5.8/9L30、GeForce8600Mを搭載したMBPにあります。上記のように、圧縮なしまたはQTCompressionOptionsSD240SizeH264Videoブレークを除くすべての圧縮オプション。

rdar:// 7447812

于 2009-12-06T18:09:28.753 に答える
0

トピックに関する詳細情報を追加するには:

キャプチャ側で定義を直接指定することはできません。むしろ、これは定義を定義するキャプチャ セッションの出力です。例えば

  • QtCaptureDecompressedVideoOutput にキャプチャする場合は、このオブジェクトの定義を指定する必要があります。
于 2011-05-13T21:42:57.703 に答える