6

現在 onPreviewCallback を使用しているため、プレビュー中にカメラからフレームをキャプチャし、http 経由でストリーミングできます。

それは機能しますが、記録を開始するコマンドを発行すると、プレビュー コールバックがもうないようです。

では、サーフェスからサーバーにフレームを送信し、デバイスでビデオを録画できるように、プレビュー コールバックを維持するにはどうすればよいでしょうか?

4

3 に答える 3

1

次のようにメディアrecorder.start()が呼び出された後、これらのメソッドを呼び出すことができます:

camera.reconnect();
camera.setPreviewCallback();
surfaceview.getHolder().addCallback();

理由:

  1. camera.unlock() が呼び出された後、別のプロセス (ここではメディア レコーダー プロセス) がカメラを使用できます。プロセスが完了したら、カメラに再接続する必要があります。これにより、ロックが再取得され、カメラを引き続き使用できるようになります。
  2. そして、再接続後に一部の状態が変更される可能性があるため、カメラの再接続後に surfaceview フレーム データ コールバックを再登録します。

私は自分のアプリケーションであなたと同じ問題を抱えていましたが、これで修正しました。それがあなたの問題を解決できることを願っています!

于 2016-01-04T10:08:30.613 に答える
0

カメラと MediaRecorder がクラッシュせずに録画を開始および停止した後 (簡単ではありませんでした)、プレビュー コールバックの呼び出しが停止するという、あなたが説明したような問題がまだありました。

私が最終的に見つけた修正は、mediaRecorder.start() の後に setPreviewCallback への呼び出しを追加し、mediaRecorder.stop() の後に別の呼び出しを追加することでした。これが正しいかどうかはわかりませんが、テスト中の Razr MI で動作しました。

于 2013-05-28T10:26:58.477 に答える