web-dev-qa-db-ja.com

Androidの画面のビデオをキャプチャする

スクリーンショットを忘れて、Androidで実行中のアプリケーションのビデオをキャプチャすることは可能ですか?根付きまたは根なし、私は気にしません、少なくとも15fpsが欲しいです。

更新:外部ハードウェアは必要ありません。意図は、完全にポータブルにすることであり、すべてのフレームはAndroid OS内でキャプチャされます。アプリのSDKの境界を越える場合は、OSレベルの変更に進んでも構いませんが、出発点が必要です。

195
Taranfx

Android 4.4(KitKat)以降のデバイスには、Androidデバイス画面を記録するためのシェルユーティリティがあります。 KitKatを実行している開発者/デバッグモードでデバイスをadbユーティリティでUSB経由で接続し、次を入力します。

adb Shell screenrecord /sdcard/movie.mp4
(Press Ctrl-C to stop)
adb pull /sdcard/movie.mp4

画面記録は最大3分間に制限されています。

リファレンス: https://developer.Android.com/studio/command-line/adb.html#screenrecord

242
Joe Fernandez

これは古い質問ですが、OPの好みには答えられていないように見えるためです。 Androidマーケットでこれを実現するアプリがあります スクリーンキャストリンク

17
Zaphoid

はい、ビデオ出力付きの電話を使用し、ビデオレコーダーを使用してストリームをキャプチャします

この記事を参照してください http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

8
Ollie C

私の提案は、SMRecorderなどのスクリーンレコーダーを使用することです。エミュレータを使用するのではなく、低速です-特にゲームやビデオが必要な場合は、AndroidがインストールされたVirtualBox VMを使用することをお勧めします。 Dalvikデバッガーをそれに接続し、そこでアプリをデバッグできます。デバッガーでアプリの速度が低下しすぎる場合は、デバッガーを切断してビデオを録画します。デバッグ用にAndroid VMをセットアップする方法を説明する多くのリンクがあります。エミュレータよりもはるかに優れていると思います。これで、アプリが加速度計を使用する場合や、PCで使用できないカメラを使用する場合に、デバイス上で画面を直接キャプチャすることはできなくなりました。そのためには、上記のAndroidマーケットアプリを使用します。

4
jdbertron

@taranfx、詳細情報なしでStackOverFlowを使用しているので、Android Developer Toolsがインストールされていると思います。その場合、エミュレータを実行してから、多くのデスクトップ画面キャプチャプログラムのいずれかを使用して、実行中のアプリケーションをキャプチャできます。 Screenflow Macではこれを行うのに最適です。 WindowsまたはNixプラットフォームを使用している場合、多くの優れたスクリーンキャプチャプログラムがあり、オンラインサービスもあることはわかっていますが、リンクも使用もしていません。エミュレータのセットアップと実行に関するリファレンスドキュメントへのリンクを次に示します。 Android SDKにはモバイルデバイスエミュレータが含まれています...

4
MWR

スクリーンキャストはtegra 2の非互換性の原因ではないと思います。すでに試しましたが、ホエイはありません!そこで、市場のZ-ScreeNRecorderを使用して、LG Optimus 2xにインストールしましたが、記録されるのは空白の画面のみで、5分間試しました。そこに5分かかります。 6MBのサイズの空白のスクリーンファイル...

3
Nenad

Android 4.3には、表面から記録するために使用できる新しいMediaCodec APIがあります。参照: http://developer.Android.com/about/versions/Android-4.3.html (「Surfaceからのビデオエンコーディング」セクションまでスクロールします)

2
AOSP_junkie

Android Lollipop(5)では、 新しい機能が追加されました これにより、画面キャプチャが可能になります これについてはここで説明します

ここに例があります

このようにstartActivityForResultを呼び出します

startActivityForResult(mProjectionManager.getScreenCaptureIntent(), PERMISSION_CODE);

次に、結果をキャプチャします

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode != PERMISSION_CODE) {
        Log.e(TAG, "Unknown request code: " + requestCode);
        return;
    }
    if (resultCode != RESULT_OK) {
        Toast.makeText(this,
                "User denied screen sharing permission", Toast.LENGTH_SHORT).show();
        return;
    }
    mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
    mVirtualDisplay = createVirtualDisplay();
}
1
rogermushroom

Remote Manager をご覧ください。しかし、私には、大画面のデバイスでは正しく動作しないようです。ただし、前に DEMO を試すことができます。

1
Nolesh

デバイスがルート化されている場合、携帯電話またはタブレットから直接スクリーンビデオを録画することができます。 SCR Screen Recorder アプリで作業しています。私の知る限り、これはTegraデバイス(Nexus 7を含む)およびAndroid 4.2をサポートする唯一のアプリです。現時点では、アプリはデバイスに応じて9〜18 fpsを記録しますが、改善に取り組んでいます。 SCR Screen Recorderはまだベータテスト段階にあるため、お気軽にテストしてフィードバックをお寄せください。

1
Iwo Banas

私はそれを実装しませんでしたが、それでも私はあなたにこれをするためのアイデアを与えています。

まず、コードを取得して Androidデバイスのスクリーンショット を取得します。そして、一定時間後に画像を作成するために同じ関数を呼び出します。追加してから、作成するコードを見つけます videos from frames/images

編集

このリンク も参照し、画面のサイズに応じて変更します。主なことは、作業をいくつかの小さなタスクに分割し、必要に応じて結合することです。

FFMPEG がこれを行う最良の方法です。しかし、一度試してみましたが、非常に長い手順です。最初にcygwinおよびNative C++ライブラリと多くのものをダウンロードして接続する必要があり、次にFFMPEG(C++で構築されています)で作業できます。

1
Xar E Ahmer

UIなどをテストできるようにユーザーナビゲーションを記録する場合は、 TestFairy を使用することをお勧めします

これを使用すると、一部のテストユーザーにapkを電子メールで送信し、アプリのすべてのセッションとアプリのクラッシュやデバイスの統計情報を含むビデオを見ることができます。

1
red_alert

ビデオカメラアプリケーションを開発する場合、ビデオキャプチャに使用するAPIを知っておくと便利です。

http://developer.Android.com/training/camera/videobasics.html

(上記のリンクは、実際の録画が行われる方法ではなく、インテント送信を介してビデオ録画が行われる方法を示しています)

https://www.linux.com/learn/tutorials/729988-Android-app-development-how-to-capture-video

また、「screenrecord」adbアプリケーションを自分で作成する場合:

https://Android.googlesource.com/platform/frameworks/av/+/Android-cts-4.4_r1/cmds/screenrecord/screenrecord.cpp

キーの記録アクションはここで行われます:

static status_t recordScreen(const char* fileName) {
    status_t err;

<...>

    // Configure, but do not start, muxer.
    sp<MediaMuxer> muxer = new MediaMuxer(fileName,
            MediaMuxer::OUTPUT_FORMAT_MPEG_4);
    if (gRotate) {
        muxer->setOrientationHint(90);
    }

    // Main encoder loop.
    err = runEncoder(encoder, muxer);
    if (err != NO_ERROR) {
        encoder->release();
        encoder.clear();

        return err;
    }

Samsung電話の場合、追加の設定(「cam_mode」ハック)があります。

CamcorderProfile.QUALITY_HIGH解像度は緑色のちらつきビデオを生成します

より便利なリンク:

Androidでビデオ録画をキャプチャするにはどうすればよいですか?

1
Peter Teoh

AirPlayミラーリングと画面記録は、ミラーAPK(ベータ)で CyanogenMod になりました。

1
Oli

私はアプリを使用していませんが、これを行う方法として Rec。 が参照されていますが、電話のルートが必要です。

0
Rich Elswick

PCを使用している場合は、PCで My Phone Explorer を実行し、電話で MyPhoneExplorer Client を実行し、画面キャプチャを継続的に更新するように設定し、使用できます- Wink My Phone Explorerウィンドウで独自のキャプチャレートで画面のカスタム長方形領域をキャプチャします。次に、WinkでFLVに変換してから、 WinFF を使用してFlashビデオからMPGに変換します。

0
Chloe

これは古いですが、 ASC についてはどうですか?

0
Richard Cotrina