4

私は多くの同様の質問を見てきましたが、100%の答えを出す人は誰もいません:

  1. Camera.PreviewCallbackは、すべてのデバイスで必要なフレームレートを保証するものではありません
  2. MediaRecorderは、一部のデバイスでオーディオ/ビデオをバッファリングする場合があります(ファイル/ローカルソケットに書き込まれる前)
  3. ネイティブC/C ++ APIは公開されておらず、誰もがそれを使用することを強くお勧めしません。

Skypeはどのようにそれを行いますか?Androidでライブビデオフレームにアクセスする正しい方法は何ですか?

4

1 に答える 1

2

3.0 より前の Android バージョンでは、プレビュー コールバックが唯一のオプションです。はるかに効率的なsetPreviewCallbackWithBufferメソッドを使用してください。

Honeycomb 以降では、setPreviewTextureを介して GPU パスを使用することもできます。これにより、プレビュー ストリームが直接 GPU テクスチャに取り込まれます。これは、一部のアプリケーションにより適しています。

内部 C/C++ API を使用してもパフォーマンスが大幅に向上することはありません。また、将来のリリースで変更されることが保証されているため、使用することはお勧めしません。

サポートされているフレーム レートのリストから、プレビュー フレーム レートをできるだけ高く設定していることを確認してください。

安定した高いフレーム レートが必要な場合は、新しいデバイスで記録のヒントを true に設定して試すこともできます。

残念ながら、これらの方法のどちらも安定した出力フレーム レートを提供することは保証されていません。これは、シーンの条件とデバイスの自動露出アルゴリズムの詳細に大きく依存します。これは、将来的に改善されることを願っています。

ただし、上記の 2 つのオプションのいずれかが Skype などが使用するものではない場合、私は非常に驚かれることでしょう。

于 2013-01-18T18:33:01.260 に答える