問題タブ [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.
macos - NSAttributedString を CVPixelBufferRef に描画する最速の方法は何ですか?
NSAttributedString:drawAtPoint
RGBA32経由でテキストを取得するための最もパフォーマンスの高い手段は何CVPixelBufferRef
ですか?
自分の目的を明確にするために...
映画の再生中にCVPixelBufferRef
@60fps のオブジェクトが渡されます。CVDisplayLink
これらはCMSampleBuffers
出力用にラップされています。Apple の「AVGreenScreenPlayer」サンプル コードを作業のベースとして使用しています。
文字列をNSAttributedString
表すオブジェクトがあります (例: @"ABC")。これを小さな背景 (おそらく) に描画し、この結果の背景付きテキストCVPixelBufferRef
を、再生中のビデオの隅に描画します。
を使用するとCIFilter
最もパフォーマンスが高くなる可能性がありますが、ビデオ + オーバーレイの結果を含むビデオ フレームにCVPixelBuffer
またはとしてアクセスする必要がありますvImageBuffer
。
MacOSX 10.10.3 の場合。- オブジェクティブ C.
ios - VTCompressionSessionEncodeFrame エラー コード -12902
CVImageBufferRef を受け取り、処理のために VTCompressionSession に渡す関数があります。
VTCompressionSession が開始され、VTCompressionSessionCreate への呼び出しが成功しました。
写真ライブラリからビデオ URL を取得し、次を使用して処理しています。
ブロックは基本的に呼び出すだけです
ステータスは -12902 です。このサイトでステータスに関する情報を調べましたが、他に関連する情報は見つかりませんでした。サイトによると、エラーはkVTParameterErr
.
VTCompressionOutputCallback が呼び出されていません。
このエラーコードを説明できる人はいますか?
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ピクセルバッファを提供するサンプルコードを次に示します
ios - iOS カメラからの参照 CVPixelBuffer の制限
iOSカメラからのフレーム(CVPixelBuffer)を保持するために使用するアプリがあります。デリゲート メソッドを使用します
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer (CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
。
iOS の最近の更新以降、以前のフレームが解放されない場合、デリゲート メソッドを介してフレームが到着することはなくなりました。今CVPixelBufferUnlockBaseAddress
、CVPixelBufferRelease
新しいフレームが来る前に、保存されたフレームで呼び出される必要があります。
それはなぜですか?ハードウェアの最適化があったと思いますが、詳細は見つかりませんでした。
swift2 - iOS CVPixelBufferCreate リークするメモリを迅速に 2
画像をビデオに変換しようとしていますが、正しい方法は AVAssetWriterInputPixelBufferAdaptor で AVAssetWriter を使用しているようで、うまく機能しますが、メモリ リークが発生します。
CGImage を CVPixelBuffer に変換するときは、CVPixelBufferCreate を呼び出しますが、メモリが解放されることはありません。
そして、これが CGImageToPixelBuffer を呼び出すコードです
CVPixelBufferRelease は Swift 2 では使用できません
CVPixelBufferCreate は Swift 2 でアンマネージ ポインターを返さないため、この人のコードは使用できません
unsafepointer で destroy と dealloc を手動で呼び出してみましたが、役に立ちませんでした。
呼び出されるたびにメモリ使用量が増加し、十分に呼び出されるとデバイスがクラッシュします
ヘルプやアドバイスをいただければ幸いです。
swift - Swift で CVPixelBuffer 属性辞書を作成する方法
Objective-Cで CVPixelBuffer 属性を作成するには、次のようにします。
そして、CVPixelBufferCreate
method でパラメーターとして渡し(__bridge CFDictionaryRef) attributes
ます。
Swiftでは、次のように辞書を作成しようとしています。
しかし、私は CFString が Hashable ではないことを発見しています。これを機能させることができませんでした。
これがSwiftでどのように機能するかの例を誰かが提供できますか?
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 チャネルを扱うループ ロジックに常に入ることを確認しました。
私は何を間違っていますか?