8

私は Android SDK のクラスMediaRecorderを見ていて、Surface から作成されたビデオを記録するために使用できるかどうか疑問に思っていました。例: 表面 (ビデオ ゲーム?) に表示するものをファイルに記録したい。タイトルで言ったように、カメラから何かを記録するつもりはありません。

ほとんどのクラスをオーバーライドすることで可能だと思いますが、いくつかのアイデアが非常に欲しいです...さらに、Camera クラスが MediaRecorder でどのように使用されているのか、Surface から何を取得して置き換える必要があるのか​​ わかりませんそれ。

ご関心をお寄せいただきありがとうございます!

PS: MediaRecorder を使用して手がかりを得るためのネイティブ コードを見ています

4

5 に答える 5

4

Android 4.3 (API 18) には、まさにあなたが望むことを行ういくつかの新機能が追加されています。MediaCodec具体的には、Surface からデータを提供する機能と、エンコードされたビデオを ( MediaMuxerを介して) .mp4 ファイルとして保存する機能です。

プレイ中にゲームを記録するブレイクアウト ゲームのパッチなど、いくつかのサンプル コードをここで入手できます。

于 2013-07-24T23:26:47.397 に答える
1

残念ながら、これは Java 層では不可能です。カメラとメディア レコーダー間のすべての通信はネイティブ コード レイヤーで行われ、カメラ以外のデータをそのパイプラインに挿入する方法はありません。

Android 4.1 では、デバイスのビデオ エンコーダーへのアクセスを可能にするMedia Codec APIが追加されましたが、結果のエンコードされたストリームを取得して標準のビデオ ファイルとして保存するための使いやすい方法はありません。それを行うライブラリを見つけるか、自分で作成する必要があります。

于 2012-12-05T04:19:07.863 に答える
1

NDK (C/C++、JNI など) と Android (パーミッションなど) に慣れている限り、AOSP Frameworks/av/media の別のフォルダーからラビット ホールをトレースすることをお勧めします。

非常に深くなり、ルート化されていないデバイスでどこまで行けるかわかりません。

于 2013-01-02T20:43:09.173 に答える