問題タブ [cvpixelbuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
135 参照

macos - NSAttributedString を CVPixelBufferRef に描画する最速の方法は何ですか?

NSAttributedString:drawAtPointRGBA32経由でテキストを取得するための最もパフォーマンスの高い手段は何CVPixelBufferRefですか?

自分の目的を明確にするために...

映画の再生中にCVPixelBufferRef@60fps のオブジェクトが渡されます。CVDisplayLinkこれらはCMSampleBuffers出力用にラップされています。Apple の「AVGreenScreenPlayer」サンプル コードを作業のベースとして使用しています。

文字列をNSAttributedString表すオブジェクトがあります (例: @"ABC")。これを小さな背景 (おそらく) に描画し、この結果の背景付きテキストCVPixelBufferRefを、再生中のビデオの隅に描画します。

を使用するとCIFilter最もパフォーマンスが高くなる可能性がありますが、ビデオ + オーバーレイの結果を含むビデオ フレームにCVPixelBufferまたはとしてアクセスする必要がありますvImageBuffer

MacOSX 10.10.3 の場合。- オブジェクティブ C.

0 投票する
1 に答える
3511 参照

ios - VTCompressionSessionEncodeFrame エラー コード -12902

CVImageBufferRef を受け取り、処理のために VTCompressionSession に渡す関数があります。

VTCompressionSession が開始され、VTCompressionSessionCreate への呼び出しが成功しました。

写真ライブラリからビデオ URL を取得し、次を使用して処理しています。

ブロックは基本的に呼び出すだけです

ステータスは -12902 です。このサイトでステータスに関する情報を調べましたが、他に関連する情報は見つかりませんでした。サイトによると、エラーはkVTParameterErr.

VTCompressionOutputCallback が呼び出されていません。

このエラーコードを説明できる人はいますか?

0 投票する
4 に答える
3271 参照

ios9 - - copyPixelBufferForItemTime:itemTimeForDisplay: null 値

私が抱えている問題は、アプリが関数CVPixelBufferRefから取得しようとしたときに、iOS9 sdk でアプリをコンパイルすると、ビデオが読み込まれ、すべてのインスタンスが作成されるときに、時々 null 値を取得することです。AVPlayerItemVideoOutput- copyPixelBufferForItemTime:itemTimeForDisplay:

iOS 8 では私のアプリは正常に動作していましたが、iOS9 では問題が発生しています。iOS 8 SDK でコンパイルされた、ダウンロード可能なアプリ ストアにある私のアプリのバージョンでも、インストール時に同じ問題が発生します。 IOS9。

問題が発生して null が発生したgetCVPixelBufferRef場合、ホームボタンを押してアプリを再度開いたときにアプリがバックグラウンドになりAVPlayerItemVideoOutput、null を与えていたインスタンスがアクティブにCVPixelBufferRefなり、問題が解決されます。

これは、問題を再現するYouTubeビデオです。

https://www.youtube.com/watch?v=997zG08_DMM&feature=youtu.be

すべてのアイテムのインスタンスを作成するためのサンプル コードは次のとおりです。

nullピクセルバッファを提供するサンプルコードを次に示します

0 投票する
1 に答える
606 参照

ios - iOS カメラからの参照 CVPixelBuffer の制限

iOSカメラからのフレーム(CVPixelBuffer)を保持するために使用するアプリがあります。デリゲート メソッドを使用します -(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer (CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

iOS の最近の更新以降、以前のフレームが解放されない場合、デリゲート メソッドを介してフレームが到着することはなくなりました。今CVPixelBufferUnlockBaseAddressCVPixelBufferRelease新しいフレームが来る前に、保存されたフレームで呼び出される必要があります。

それはなぜですか?ハードウェアの最適化があったと思いますが、詳細は見つかりませんでした。

0 投票する
2 に答える
2447 参照

swift2 - iOS CVPixelBufferCreate リークするメモリを迅速に 2

画像をビデオに変換しようとしていますが、正しい方法は AVAssetWriterInputPixelBufferAdaptor で AVAssetWriter を使用しているようで、うまく機能しますが、メモリ リークが発生します。

CGImage を CVPixelBuffer に変換するときは、CVPixelBufferCreate を呼び出しますが、メモリが解放されることはありません。

そして、これが CGImageToPixelBuffer を呼び出すコードです

CVPixelBufferRelease は Swift 2 では使用できません

CVPixelBufferCreate は Swift 2 でアンマネージ ポインターを返さないため、この人のコードは使用できません

unsafepointer で destroy と dealloc を手動で呼び出してみましたが、役に立ちませんでした。

呼び出されるたびにメモリ使用量が増加し、十分に呼び出されるとデバイスがクラッシュします メモリ プロファイル

ヘルプやアドバイスをいただければ幸いです。

0 投票する
1 に答える
1099 参照

swift - Swift で CVPixelBuffer 属性辞書を作成する方法

Objective-Cで CVPixelBuffer 属性を作成するには、次のようにします。

そして、CVPixelBufferCreatemethod でパラメーターとして渡し(__bridge CFDictionaryRef) attributesます。

Swiftでは、次のように辞書を作成しようとしています。

しかし、私は CFString が Hashable ではないことを発見しています。これを機能させることができませんでした。

これがSwiftでどのように機能するかの例を誰かが提供できますか?

0 投票する
1 に答える
931 参照

ios - AVFoundation が iOS デバイスで平面ピクセル バッファを受け入れないのはなぜですか?

私はコードの問題が何であるかを理解するのに苦労しています。CVPixelBufferRefに書き込む平面を作成していAVAssetWriterます。このピクセル バッファは、他のプロセスを通じて手動で作成されます (つまり、これらのサンプルをカメラなどから取得することはありません)。iOS シミュレーターでは、サンプルの追加と有効な出力ムービーの作成に問題はありません。

ただし、デバイスでは、最初のサンプルですぐに失敗し、役に立たないエラー情報が提供されます。

AVAssetWriterError: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x12fd2c670 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-12780), NSLocalizedDescription=The operation could not be completed}

私はピクセル形式に非常に慣れていないため、何らかの方法で無効なピクセル バッファを作成したとしても驚かないでしょうが、シミュレータ (つまり、OS X) で問題なく動作するという事実は、私を混乱させます。

これが私のコードです:

successは常にNOで、アセット ライターからのエラーは上に貼り付けたものです。

AVAssetWriterInputPixelBufferAdaptor可能性のある問題としてそれを排除するためだけに使用するのではなく、手動でサンプル バッファーを作成しようとしましたが、結果は同じです。

繰り返しますが、これシミュレーターで機能するため、ピクセル バッファーに適切なデータが含まれていることがわかります。

また、ファイル先への書き込みができることを確認しました。その場所にダミーファイルを作成してみましたが、成功しました。

バッファを RGB に変換する必要はないので、避けたいと思います。まず、Y'CbCr バッファーがあり、それらを Y'CbCr をサポートする H.264 ビデオにエンコードしたいだけです。

これらのバッファを作成しているソースには、次のように記載されています。

The image is currently always 3-channel YCbCr, with 4:2:0 chroma.

8 ビット YUV チャネルを扱うループ ロジックに常に入ることを確認しました。

私は何を間違っていますか?