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


195

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

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


ここで何が言われているのか完全にわかります。エミュレータには、現在の画面をビデオファイルにリダイレクトする機能も必要なようです。ゲームやアプリの有益なビデオを作成できるように、このような機能が気に入っています。
Robert Massaioli、2011年

1
あなたはこれに対する解決策を得ましたか?もしそうなら私たちと共有してください。私もandroid画面のビデオをキャプチャする必要があります。
ディーパ

@deepa nopeこれを行う良い方法はありません。
Taranfx

このプロジェクトを確認してください:sourceforge.net/projects/ashot
Nirmal Patel、

ハードウェアの画面バッファーから読み取ることはできますか?
mP。

回答:


243

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

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


screenrecordのような応答を与えています:adbが古いのは見つかりませんなぜですか?
毒:

1
Android SDKが古くなっているようです。Android SDK Managerを開き、最新のSDKツールをダウンロードします。
ジョーフェルナンデス

1
残念ながらこれで音声が出ません。しかし、それでも素晴らしい。
マーティンカポディッチ2014年

1
追加するだけで、このページには、スタンドアロンadb +スクリプト「ScreenRecord.bat」を含むパッケージがあり、ダブルクリックしてAndroid画面ビデオの記録を開始できます。skipser.com/p/2/p/record-
arunskrish 2014

1
「警告:リンカー:libsac3d.soにテキストの再配置があります」というエラーが表示されます。これはメモリの浪費であり、セキュリティ上のリスクです。修正してください。エラー:コーデックを構成できません(err = -2147483648)警告:1080x1920で失敗し、720x1280で再試行します
Pete_ch

17

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


29
それはルートが必要であることを言及する価値がある、ところで。
themightyjon

HTC Oneでは機能しません。私のGalaxy S IIでも問題なく動作しました。
MiloDC 2013年

1
これはルートを必要としません。これまでのところ有望であるようです... droid-at-screen.ribomation.com/installation
Fraggle

droid-at-screenはビデオを実行しません、@ Fraggle。スクリーンショットだけ。連続キャプチャは可能ですが、約1fpsです。
Michael Petrotta 2013年

現在、私はこのsourceforge.net/projects/ashotを使用してMacで画面を表示し、標準ツール(SnapPro X)を使用して画面のその部分からムービーをキャプチャしています。ashotのフレームレートはわかりませんが、1 fpsより高いと思います。
Fraggle 2013年

8

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

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


それが私ができることでしたが、私の要件はアンドロイド内ですべてを行うことです。外出先でも機能させることが目的です。
Taranfx

1
あなたは運が悪いと思います-多くのビデオエンコーディングをオンザフライでモバイルデバイスで処理するための要件は、ほとんどの物理的に可能な機能の範囲外です。Android(AFAIK)には、ストリームにアクセスするためのインターフェイスがありません、そしてそれがあったとしても、アプリがユーザーをスパイする可能性があるので、それは潜在的に巨大なセキュリティホールです。
Ollie C

4

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


2
ごめんなさい?Macやエミュレータではなく、Androidでのビデオキャプチャを要求しました。
Taranfx

2
MWRは、エミュレーターを介したAndroid画面のキャプチャーを提案しています
Ollie C

3
すべてのapsがエミュレータで実行できるわけではありません。
RajV 2013年

4

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


良い測定のために:spkaa.com/...
ルーベンL.

3

スクリーンキャストはtegra 2の非互換性の原因ではないと思います。すでに試しましたが、ホエーはありません。だから私は市場からZ-ScreeNRecorderを使ってみました、それを私のLG Optimus 2xにインストールしましたが、それはレコードの空白の画面だけで、5 分間試しました。そして、5分です。6mbサイズの空白の画面ファイルの... tegra2チップセットと互換性のあるソフトウェアの平和をリリースするまで、試しても意味がありません!



1

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


1
画面のviceoを静かにキャプチャするために、Androidでプログラムを使用してどのように実行できるかについて、研究内容を共有してください。
Ajay S

@硫黄画面のビデオを文法的に記録する方法についての研究を共有できますか?ありがとうございました。
Srini Kandula 14


1

ビデオカメラアプリケーションを開発する場合、ビデオキャプチャに使用する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;
    }

サムスンの携帯電話には追加の設定があります( 'cam_mode'ハック):

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

より役立つリンク:

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


1

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

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

編集する

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

これを行うにはFFMPEGが最適です。しかし、一度試してみましたが、それは非常に長い手順です。最初に、cygwinとネイティブC ++ライブラリおよび多くのものをダウンロードして接続する必要があります。その後、FFMPEG(C ++に組み込まれています)で作業できます。


私はあなたが時間を置いて、または間隔を空けずに画像を撮ることから提案したのと同じことをしました、私はスクロールをしているスクロールビューを持っていますそして別のスレッドで私は画面領域をキャプチャしていますが、同じキャプチャが6-7の画像に戻ります別の異なるエリアがキャプチャされます。画像の完全なシーケンスが必要です。
Farrakh Javed 2014

1

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


両方のリンクが
停止してい

@rahulserver、私Androidはプログラムの名前で使用したため、Googleはそれらをブロックしました。間もなく私はAndroid言葉なしでそれらを再び出版します。
Nolesh 2014年

ご返信いただきありがとうございます。私は必死に困っています。公開したら、plsはここに通知します。
rahulserver 2014年

@rahulserver、私はそれらを再度公開し、リンクを修正しました。
Nolesh 2014年

1

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

これにより、APKを一部のテストユーザーに電子メールで送信し、アプリ内のすべてのセッション、さらにはアプリのクラッシュやデバイスの統計を含む動画を見ることができます。


1

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();
}

0

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


Tegra搭載デバイスとの互換性がないためですか?..ええ..私はAsusトランスを手に入れました:C
Richard Cotrina '28

PC / Macで「アクティベータ」を実行する必要がありますが、署名されておらず、何が行われるか、また「アクティベーション」を手動で行う方法は説明されていません。セキュリティリスクと脅威のベクトルのように聞こえます。
クロエ

0

あなたがPC上にある場合、あなたは実行することができます私の電話のエクスプローラを、PC上でMyPhoneExplorerクライアントを、電話で継続的に更新するには、画面キャプチャを設定し、使用ウィンクを自分の携帯電話のエクスプローラウィンドウの上に画面のカスタム矩形領域をキャプチャしますあなた自身の捕獲率で。次に、ウィンクでFLVに変換してから、WinFFで FlashビデオからMPGに変換します。


ここで「PC」とは、ある種のMicrosoft Windowsを意味することを付け加えておきます。
rwst 2013年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.