前回の記事で説明したように、私は無人機のモバイルアプリを使ってリアルタイムで無人機のカメラビューを視覚化しています相対的なSDKを備えたDJI Phantom 3 Professionalで)、ARパートのWikitudeフレームワークを使用しています。 Alex's responseのおかげで、Wikitude Input Pluginをdji's Video Stream Decodingと組み合わせて実装しました。DJIカメラからNV21データを取得する方法Phantom 3プロフェッショナル無人機
私は今いくつか問題があります。まず、「DJIのビデオストリームデコード」デモでは、ビデオフレームの解析にFFmpegを、ハードウェアデコードにMediaCodecを使用しています。したがって、ビデオフレームを解析し、DJIカメラからの生のビデオストリームデータをデコードし、YUVデータを出力するのに役立ちます。 Wikitude Input Pluginにはカスタムカメラを提供するためにNV21規格に準拠するように設定されたYUV 420フォーマットが必要なので、私は「dji sdkから生のビデオデータを取得してWikitude SDKに渡す」ことをお勧めしました。それにMediaCodecのYUVデータ出力を渡します。
この点について、私はMediaCodecの出力からバイトバッファを取得しようとしました(これはコールバックを呼び出して外部リスナーに渡す効果を持つconfigure()メソッドにSurfaceパラメータをnullに設定することで可能です)、私は可視化の色についていくつかの問題があります。エンコードされたビデオの色が正しくないため(青と赤が反転しているように見えますが、カメラが動くとノイズが多くなります) codec.releaseOutputBuffer(outIndex、true)命令の後にMediaCodecがフレームをレンダリングしてビデオストリームを正しく表示しますが、ビデオストリームをWikitude Pluginに渡す必要がありますので、サーフェスをnullに設定する必要があります)。
私は別のMediaFormat.KEY_COLOR_FORMATを設定しようとしましたが、どれも正しく動作しませんでした。この点をどうすれば解決できますか?