問題タブ [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 に答える
556 参照

ios - AVAssetWriterInputPixelBufferAdaptor から作成された背景が透明なビデオは、黒の背景になります

0.01 秒ごとにレンダリング コンテキストで画面イメージをキャプチャしてビデオを作成しています。背景が透明なキャプチャ画像。しかし、AVAssetWritter、AVAssetWriterInputPixelBufferAdaptor を使用してこれらの画像でビデオを作成すると、透明な背景が黒色に変わります。

私は次のコードを使用しています:-

canvasAssetWriter = [[AVAssetWriter alloc] initWithURL:[self tempFileURL:@"output.mp4"] fileType:AVFileTypeQuickTimeMovie エラー:&error];

CVPixelBufferRef pixelBuffer = NULL; CGImageRef cgImage = CGImageCreateCopy([capturedImage CGImage]);

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

ios - AVAssetWriter 使用時の不明な基になる OSStatus エラー -16364

アプリの 1 つのビデオ エクスポート機能を構築しています。本質的に、このビデオは、異なる (短い) 期間持続する 6 つの異なる画像のうちの 1 つのシリーズです。

さまざまな期間の 283 枚の画像を含むものをエクスポートすると、エクスポートは正常に機能しますが、803 枚のうちの 1 つをエクスポートしようとすると、恐ろしい「操作を完了できませんでした」というエラーが表示されます (別名「何が爆発したのかわかりません。 AVFoundation のエラー報告はひどいものです」)。

my を使用して 754 番目のフレーム (常に 754 番目のフレーム) を追加しようとするとAVAssetWriterInputPixelBufferAdaptorappendPixelBuffer:withPresentationTime:が返さNOれ、AVAssetWriterのステータスが失敗し、そのエラーは次のようになります。

私の人生では、その根本的なエラー ( OSStatus-16364) が何であるかを理解することはできません。www.osstatus.comは見当もつかないし、macerrorそのようなものは存在しないと言っているし、SDK ヘッダーを検索するためのこのPython スクリプトは何も見つけられない. また、いくつかの OSStatus エラーのような 4 文字のコードでもありません (これをチェックするのに失敗した場合を除きます)。

私が見つけた「操作を完了できません」というエラーの一般的な原因をすべて除外しました。ファイルシステムのアクセス許可や上書きとは関係ありません。 の 2 つの呼び出しがappendPixelBuffer同じプレゼンテーション時間を持つことはありません。

これはメモリの問題ではなく (ビデオのエクスポート中、メモリ使用量は 165MB で一定です)、CPU は 3% 近くにとどまります。

重要な場合は、毎回 sCVPixelBufferから新しい画像を作成するのではなく、6 つの画像に対して同じ 6 s を何度も再利用します。UIImageこれはパフォーマンスに役立つようで、毎回新しいものに変更しても何も変わらないように見えますが (代わりにフレーム 753 で失敗することを除いて)、誰にもわかりません。

誰かがこれが何であるか考えていますか?

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

ios - CVPixelBuffer 内のピクセルを適切に処理する方法は?

簡単な質問は次のとおりです。 のピクセル値に対処する式は何CVPixelBufferですか?

a をフラットなバイト配列に変換しようとしているのですCVPixelBufferが、いくつかの奇妙な点に気付きました:CVPixelBufferは a から取得されますCMSampleBuffer。幅と高さは852x640ピクセルです。合計ピクセルでは、ピクセルあたりのバイトを考慮するとバイト545280が必要になります。21811204

最初の奇妙なことは、同じ行ごとにバイトCVPixelBufferが返されることです。これは、ピクセルに十分なスペースです。これらの追加のピクセルはどこから来るのでしょうか? 最終イメージの 1 行がピクセル幅だけで、実際には の行にピクセルがある場合、どのバイトをコピーする必要があるかをどのように知ることができますか? または、未使用のバイトはどれですか? ところで、それらは未使用ですか?345686412852864CVPixelBuffer

もう 1 つのことは、報告されるデータ サイズCVPixelBuffers(2211848バイト数) です。ここで、34561 行あたりのバイト数に行数を掛けると、バイト数640になり2211840ます。8繰り返しになりますが、追加のバイトが残っています。それらの8バイトの問題は何ですか?未使用ですか?彼らは最後にいますか?

その問題に光を当てるアドバイスは大歓迎です、ありがとう.

0 投票する
3 に答える
3705 参照

ios - iOS でピクセル バッファの一部を白いピクセルに置き換える

iPhone カメラを使用してライブ ビデオをキャプチャし、オブジェクト認識を行うネットワークにピクセル バッファを供給しています。AVCaptureSession 関連するコードは次のとおりです(これはかなり標準的なため、設定などのコードは投稿しません。)

次に、ネットワークはsourceStartAddrwidthheightsourceRowBytes&doReverseChannelsを入力として受け取ります。

私の質問は次のとおりです。画像データの一部をすべて白い「ピクセル」で置き換えまたは削除する最も簡単で効率的な方法は何ですか? ピクセル バッファ データの一部を直接上書きすることは可能ですか。

私はこのピクセル バッファがどのように機能するかについて非常に初歩的なことしか理解していないので、ここで非常に基本的なことが抜けていたら申し訳ありません。私が Stackoverflow で見つけた私のものに最も関連する質問は、ビデオ フレームにテキストを追加するためにaが使用されるthis oneでした。EAGLContextこれは、単一の画像に対してのみこの置換を必要とする私の目的では実際に機能しますが、この手順をすべてのビデオ フレームに適用するとパフォーマンスが低下すると思います。別の方法があるかどうかを確認したいと思います。ここで何か助けていただければ幸いです。

0 投票する
3 に答える
2963 参照

ios - ピクセルデータで CVPixelBuffer を作成しますが、最終的な画像は歪んでいます

OpenGLES メソッド (glReadPixels) またはその他の方法でピクセルを取得し、ビデオ録画用に CVPixelBuffer (CGImage の有無にかかわらず) を作成しますが、最終的な画像は歪んでいます。これは、iPhone 5c、5s、および 6 でテストしたときに iPhone6 で発生します。

次のようになります。

ここに画像の説明を入力

コードは次のとおりです。

0 投票する
3 に答える
9107 参照

ios - CVPixelBufferCreate で CVPixelBufferRef を複製/コピーする

CVPixelBufferRefコピーの値を使用して元のピクセル バッファーをビット単位で操作できるようにするには、a のコピーを作成する必要があります。CVPixelBufferCreate、または でこれを達成できないようですCVPixelBufferCreateWithBytes

この質問によると、memcpy() でも実行できる可能性があります。ただし、これがどのように達成されるかについての説明はありません。また、どの Core Video ライブラリ呼び出しが必要になるかについても説明されていません。