首页 文章

捕获Android屏幕的视频

提问于
浏览
193

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

更新:我不需要任何外部硬件 . 目的是使其完全可移植,并在Android OS中捕获每一帧 . 如果它跨越app sdk的边界,我愿意去操作系统级修改,但我需要一个起点 .

17 回答

  • 3

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

  • 0

    Android 4.3有一个新的MediaCodec API,可用于从表面进行记录 . 请参阅:http://developer.android.com/about/versions/android-4.3.html(向下滚动到"Video encoding from a Surface"部分)

  • 1

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

  • 1

    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

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

  • 0

    是的,使用带有视频输出的手机,并使用录像机捕获视频流

    看到这篇文章http://graphics-geek.blogspot.com/2011/02/recording-animations-via-hdmi.html

  • 17

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

  • 4

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

  • 2

    AirPlay镜像和屏幕录制现在在CyanogenMod中使用Mirror APK(Beta) .

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

    对于三星手机,还有其他设置('cam_mode'黑客):

    CamcorderProfile.QUALITY_HIGH resolution produces green flickering video

    更有用的链接:

    How can I capture a video recording on Android?

  • 1

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

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

    Edit

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

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

  • 8

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

  • 241

    如果你想记录用户导航以便测试用户界面和其他东西,我建议你使用TestFairy

    它允许你发送通过电子邮件向一些测试用户添加apk,并查看应用中所有会话的视频,甚至是应用崩溃和设备统计信息 .

  • 4

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

    这是旧的,但ASC怎么样?

  • 1

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

  • 1

    我没有使用过该应用程序,但我已经看到Rec.被引用作为这样做的一种方式,但你需要root手机 .

相关问题