2

QTKitのMyRecorderサンプルを使用しました。すべてを記録しますが、カメラがPALであり、PALとNTSCのH264エンコーディングの解像度が異なるという問題があります。PALは724x568で、NTSCは724x480です。

H264HighにQTプロファイルを選択すると、デフォルトでは724x480 NTSC解像度の出力ファイルしか使用できませんが、カメラは724x568であるため、最終出力には移動するオブジェクトの間に不要な水平線がたくさんあります。

問題は解像度設定だけですが、QTKitは非常に厳密にコーディングされているため、エンコーダーパラメーターを変更する設定はありません。

ただし、アップルは以前のシーケンスグラバーアプローチの代わりにQTKitのみを使用することを推奨していますが、大規模な顧客ベースにはPALカメラのみがあり、PAL解像度を有効にするためのソリューションが必要です。誰かが私たちを導くことができますか?

4

1 に答える 1

2

現在のところ、QTKitを使用してこれを行う簡単な方法ではないようです。

QTKitのみを使用すると、いくつかのオプションがあります。

  1. できることは、を使用してカメラからQuicktimeムービーにデータをストリーミングQTCompressionOptionsLosslessAnimationVideoし、QTMovieクラスを使用してファイルを必要な解像度でH.264に変換することです。このオプションは多くのディスクスペースを消費しますが、かなり単純です。

  2. の代わりにQTCaptureDecompressedVideoOutputを使用し、 outputVideoFrame:withSampleBuffer:fromConnection:QTCaptureMovieFileOutputの呼び出しを取得したら、ビデオフレームをスレッドセーフキューにバッファリングします。次に、セカンダリスレッドで、このキューからプルし、PAL解像度でH.264エンコーディング用に設定したQTMovieにフレームを追加します。

アプローチ2を使用すると、ディスクスペースを節約できますが、少し手間がかかります。スレッドの問題について心配する必要がありますが、QTCaptureMovieFileOutputクラスで利用できるオプションが増えるまでは、最善の方法です。

于 2009-04-23T18:00:20.443 に答える