Android屏幕录制完整的屏幕

时间:2014-05-08 17:01:12

标签: android root screen-recording

我在Android中遇到屏幕录制问题。我正在寻找一种录制屏幕的方法。我正在寻找的方法必须满足以下要求:

a)它可以有ROOT。我在这里读了很多帖子,我认为应该是 用root更容易。所以这对我来说不是限制因素。

b)它应该适用于Tegra2或Tegra3设备,例如Nexus 7.因此,帧缓冲方法不会给我预期的结果。

c)它应该能够使用服务在后台录制全屏。所以,它不应该仅限于我自己的应用程序。

d)它应该只在设备上运行。因此,不需要连接到PC。

到目前为止我尝试了什么:

1)我尝试使用Android 4.4的惊人的新屏幕记录功能。所以我从我的应用程序中获得了root权限并执行了命令。这很好用,但这个方法有两个问题:

i)我没有办法阻止当前的录音。

ii)录制时间限制为3分钟。我需要至少10分钟。

2)我实现了一种在服务运行时截取屏幕截图并将其存储在SD卡上的文件夹中的方法。这是通过使用/system/bin/screencap -p命令完成的。但是,这种方法确实很慢。它只能实现每秒制作一次屏幕截图,因此我只能得到FPS率为1.但是,我的目标是不要达到30的FPS率.6-8 FPS就足够了。此外,我没有找到将.png文件编码为视频的方法。

在APP商店,我找到了一个应用程序(SCR屏幕录像机),它能够完全按照我要求的方式完成。所以,我认为这是可能的。但是,我的应用程序应该能够执行此操作而无需其他应用程序。因此,对我来说,Intent不是一个选择。

祝你好运, 先生-蝮蛇

更新1 所以我现在能够以编程方式启动和停止Android 4.4的屏幕录制。 这里重要的是不使用标准kill命令杀死screenrecord进程。 您必须使用kill -SIGINT <pid>命令 - 否则您将获得并获得视频文件。可以通过调用ps screenrecord然后对结果字符串进行一些处理来获取屏幕记录过程的PID。现在我只需要一种以编程方式合并所有视频文件的方法。

更新2 最后,我还管理了最后一部分。首先,我使用Timer和TimerTask,它允许我每3分钟开始一个新的屏幕记录,直到用户停止。使用Update1中描述的解决方案,我将停止录制。完成完整录制后,我开始后处理步骤。在这一步中,我使用mp4parser库将视频文件合并为一个。这个问题的答案也可以在stackoverflow click上找到。

谢谢大家的回答。根据root访问和Android 4.4的要求,我现在有一个正在运行的屏幕录制。为了我的目的,这很好。但是,我认为有足够的开发人员有其他要求。如果您有进一步的想法,请随时回答这里。

0 个答案:

没有答案