捕获Android屏幕的视频

时间:2011-03-21 18:52:39

标签: android video-capture

忘记截图,是否可以在android中捕获正在运行的应用程序的视频? 根或不根,我不在乎,我想要至少15fps。

更新:我不需要任何外部硬件。目的是使其完全可移植,并在Android OS中捕获每一帧。如果它越过了应用程序sdk的边界,我愿意进行操作系统级别的修改,但我需要一个起点。

17 个答案:

答案 0 :(得分:242)

Android 4.4(KitKat)及更高版本的设备具有用于记录Android设备屏幕的shell实用程序。通过USB将运行KitKat的开发人员/调试模式的设备与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

答案 1 :(得分:17)

我知道这是一个古老的问题但是因为对OP来说似乎没有答案。有一个应用程序可以在Android Market Screencast link

中使用它

答案 2 :(得分:8)

是的,请使用带有视频输出的手机,并使用录像机捕捉信息流

请参阅此文http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

答案 3 :(得分:4)

@taranfx,没有更多信息我假设你在StackOverFlow上安装了Android Developer Tools。如果是这样,您可以运行模拟器,然后使用众多桌面屏幕捕获程序之一来捕获正在运行的应用程序。 Mac上的Screenflow非常适合这样做。我相信如果你在Windows或Nix平台上有很多好的屏幕捕获程序,我知道也有一些在线服务,但我没有任何链接,也没有使用它们。以下是有关设置和运行模拟器的参考文档的链接。The Android SDK includes a mobile device emulator...

答案 4 :(得分:4)

我的建议也是使用屏幕录像机,例如SMRecorder。而不是使用速度慢的模拟器 - 特别是对于您想要视频的游戏和事物,我建议使用安装了Android的VirtualBox VM。您可以将Dalvik调试器连接到它并在那里调试应用程序。如果调试器使app太慢,请断开它以录制视频。有很多链接解释如何设置Android VM进行调试。我觉得它比模拟器好得多。 现在,如果您的应用程序使用加速计或PC上没有的摄像头,则不会直接在设备上捕获屏幕。为此我会使用上面提到的Android市场应用程序。

答案 5 :(得分:3)

我猜截屏不是因为tegra 2不相容,我已经尝试过,但没有乳清! 所以我尝试在市场上使用 Z-ScreeNRecorder ,将它安装在我的LG Optimus 2x上,但它只记录了空白屏幕,我试了5分钟。然后我得到5分钟。 6mb大小的空白屏幕文件...所以没有必要尝试,直到他们释放一些与tegra2芯片组兼容的软件!

答案 6 :(得分:2)

Android 4.3有一个新的MediaCodec API,可用于从曲面录制。 请参阅:http://developer.android.com/about/versions/android-4.3.html (向下滚动到“从曲面进行视频编码”部分)

答案 7 :(得分:1)

在Android Lollipop(5)中new feature has been added允许截屏which is explained here

Here is an example

像这样调用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();
}

答案 8 :(得分:1)

如果您想录制用户导航以便测试用户界面和其他内容,我建议您使用TestFairy

它允许您通过电子邮件将apk发送给某些测试用户,并查看应用中所有会话的视频,甚至是应用崩溃和设备统计信息。

答案 9 :(得分:1)

我没有实现它,但我仍然给你一个想法。

首先获取代码screenshot of Android device。并且在一段时间后调用相同的函数来创建图像。添加然后找到要创建video from frames/images的代码。

修改

另请参阅this link并根据您的屏幕尺寸对其进行修改。主要是将您的工作分成几个小任务,然后根据需要进行组合。

FFMPEG是最好的方法。但是,一旦我尝试过,但这是一个非常漫长的过程。首先,您必须下载cygwin和Native C ++库以及许多内容并连接,然后您就可以使用FFMPEG(它是用C ++构建的)。

答案 10 :(得分:1)

如果您正在开发视频摄像头应用程序,那么最好知道用于视频捕获的API:

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

(以上链接仅显示如何通过Intent提交录制视频,而不是如何进行实际录制)

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

对于三星手机,还有其他设置(&#39; cam_mode&#39; hack):

CamcorderProfile.QUALITY_HIGH resolution produces green flickering video

更有用的链接:

How can I capture a video recording on Android?

答案 11 :(得分:1)

AirPlay镜像和屏幕录制现在位于CyanogenMod,带有镜像APK(测试版)。

答案 12 :(得分:1)

看看Remote Manager。但在我看来它与大屏幕设备无法正常工作。虽然,您可以先尝试DEMO

答案 13 :(得分:1)

如果您的设备已植根,则可以直接从手机或平板电脑录制屏幕视频。我正在使用SCR Screen Recorder应用。据我所知,这是唯一支持Tegra设备(包括Nexus 7)和Android 4.2的应用程序。目前应用程序根据设备记录9-18fps,但我正在努力改进它。 SCR屏幕录像机仍处于测试阶段,因此可以随意测试并提供反馈。

答案 14 :(得分:0)

如果您在PC上,则可以在PC上运行My Phone Explorer,在手机上运行MyPhoneExplorer Client,将屏幕截图设置为连续刷新,然后使用Wink捕获屏幕上的自定义矩形区域位于My Phone Explorer窗口中,具有您自己的捕获率。然后转换为Wink中的FLV,然后使用WinFF从Flash视频转换为MPG。

答案 15 :(得分:0)

我没有使用该应用,但我看到Rec.被引用作为执行此操作的方法,但您需要root手机。

答案 16 :(得分:0)

这是旧的,但是ASC怎么办?