3

ピクセルの色を変更して、Android フォンで録画したビデオを処理したいと考えています。必要な処理を実行する方法はわかっていますが、すべてをまとめる最善の方法はわかりません。

これまでのところ、私にできることは次のとおりです。

  • YCrCb (YUV) としてビデオから 1 つのフレームを取得します。
  • YCrCb のバイトを好きなように変更する
  • YCrCb を RGB 配列に変換します
  • RGB 配列をビットマップに変換する

すべてをまとめて、Android で再生できるビデオとして保存するにはどうすればよいですか? YCrCb 情報から直接アクセスできますか? それとも、最初に RGB またはその他の形式に変換する必要がありますか?

これをリアルタイムで行う必要はありません。目的は、ビデオを録画して保存し、それを処理して、処理されたビデオを保存することです。ただし、速度は念頭に置いています。プロセスを高速化するために使用できるライブラリはありますか? Android が OpenGL の使用を提供していることは知っており、ffmpeg について読んだことがありますが、最適な方法がわかりません。

誰かが私を正しい方向に向けることができれば、私はそれを感謝します! =D

ありがとう!!=D

4

1 に答える 1

2

カメラから取得するフレームは圧縮されていません。圧縮されていないフレームは大きすぎてプレーヤーがリアルタイムで読み取ったり表示したりできないため、通常、これはビデオの保存方法ではありません。代わりに、フレームがはるかに小さくなり、再生中の I/O 負荷が小さくなるように、yuv または rgb フレームをエンコードする必要があります。

CPU でのデコードも法外にコストがかかるため、使用するエンコード形式は、デバイスがハードウェアでデコードできるものでなければなりません。最近は、動画はH.264、音声はAAC、MP4コンテナを使えば大丈夫です。残念ながら、アプリに H.264/AAC エンコーダー (オープン ソースのエンコーダーも含む) を組み込み、それから収益を得ようと計画している場合、MPEG LAから訪問を受ける可能性があります。 264 および AAC にはライセンスが必要です。カメラアプリで録画に使用されているような、既にライセンスが付与され、デバイスにインストールされているコーデックを使用する場合、これは回避されると思います。Android プラットフォームでカメラ コーデックにアクセスできるかどうかはわかりません。

ライブラリに関しては、ffmpeg プロジェクトの libavcodec と libavformat が最も完成度が高いと思います。これらのライブラリを使用すると、ライセンスの問題が影響しないと仮定して、H.264/AAC/MP4 ファイルをエンコードできます。

于 2011-12-01T04:08:39.813 に答える