【问题标题】:Capture android screen and create video programmatically捕获 android 屏幕并以编程方式创建视频
【发布时间】:2012-11-05 14:59:28
【问题描述】:

在 Android/Java 中,是否有任何代码示例可以以编程方式以每秒良好的帧数捕获计算机的屏幕截图并创建视频?

我想要一个教程或完整的源代码来做到这一点。我希望程序在设备被“root”的情况下都能正常工作。

Play 商店中有一个名为Screencast Video Recorder 的应用程序可以执行此操作。但是你需要ROOT设备才能工作,所以我知道它可以做到。

在非 root 设备上捕获 android 屏幕截图和以编程方式创建视频的最佳方法是什么?

【问题讨论】:

  • 如果没有 root 访问权限,您就无法做到这一点,您知道吗?
  • @auselen 是的,我知道,但是如何通过 root 访问以编程方式进行操作,谢谢

标签: java android screenshot video-capture


【解决方案1】:

有一个名为 Telecine 的开源应用程序允许您录制屏幕 - 代码可以在 https://github.com/JakeWharton/Telecine 找到。所有功劳归功于杰克·沃顿。

如果您需要示例,可以在 Commonsware 的 github 页面上找到一个示例 - Mark Murphy 提供了一个示例应用程序,用于使用 MediaProjection API 进行屏幕捕获和屏幕录制。

【讨论】:

    【解决方案2】:

    从市场上试用这个应用程序

    https://play.google.com/store/apps/details?id=com.ms.screencastfree

    ** 尚不适用于 Galaxy Nexus 或 Tegra 2/3 **

    编辑 28/11/2014

    Lollipop 已发布并提供新的屏幕录制 API

    http://developer.android.com/about/versions/android-5.0.html#UI

    截屏和分享

    Android 5.0 允许您添加屏幕捕获和屏幕共享 使用新的 android.media.projection API 为您的应用提供功能。 此功能很有用,例如,如果您想启用 视频会议应用中的屏幕共享。

    新的 createVirtualDisplay() 方法允许您的应用捕获 将主屏幕(默认显示)的内容放入 Surface 对象,然后您的应用可以通过网络发送该对象。仅限 API 允许捕获非安全的屏幕内容,而不是系统音频。到 开始屏幕捕获,您的应用必须首先请求用户的 通过使用 Intent 启动屏幕捕获对话框来获得许可 通过createScreenCaptureIntent()方法获取。

    有关如何使用新 API 的示例,请参阅 MediaProjectionDemo 示例项目中的类。

    【讨论】:

    • 我很清楚,已经从那个不错的应用程序中获得了付费,我想通过 java 代码以编程方式完成它,谢谢
    【解决方案3】:

    从 Android 4.4 开始,可以通过 adb 访问屏幕录制功能。

    http://developer.android.com/tools/help/adb.html#screenrecord

    screenrecord 命令是一个 shell 实用程序,用于记录运行 Android 4.4(API 级别 19)及更高版本的设备的显示。该实用程序将屏幕活动记录到 MPEG-4 文件中,然后您可以下载该文件并将其用作视频演示的一部分。对于想要在不使用单独的录制设备的情况下制作宣传或培训视频的开发人员来说,此实用程序非常有用。

    【讨论】:

      【解决方案4】:

      检查以下链接 https://code.google.com/p/java-remote-control/

      在这个项目中,所有者创建了一个 java 遥控器,即他已经从远程计算机捕获图像并传输到服务器并将其转换为不同格式的电影,您需要了解他所做的一切并实现相同的您的所有需求。您可以通过以下 URL 使用 SVN 客户端访问完整的源代码

      http://java-remote-control.googlecode.com/svn/trunk/

      你也可以在java中寻找提供createScreenCapture方法的Remote类

      【讨论】:

        【解决方案5】:

        您可以在 adb 运行时使用 DDMS 捕获屏幕,并且对帧缓冲区具有权限:

        点击此链接了解更多详情:

        http://thetechjournal.com/electronics/android/how-to-capture-screenshots-and-record-video-on-android-device.xhtml

        查看此链接可能会对您的需求有所了解:

        http://answers.oreilly.com/topic/951-how-to-capture-video-of-the-screen-on-android/

        http://www.mightypocket.com/2010/09/installing-android-screenshots-screen-capture-screen-cast-for-windows/

        并检查这个项目:

        http://sourceforge.net/projects/ashot/

        希望对您有所帮助。

        【讨论】:

        • @androidqq6 对你有帮助吗?实际上我找不到完整的视频屏幕截图的 Java 源代码,但我认为上面的链接暂时可以替代它。
        • 到目前为止,经过大量搜索,我无法比您给出的更好,但我真的想在 java 类中做到这一点,谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-17
        相关资源
        最近更新 更多