如何增加Android Kitkat的ADB屏幕记录的时间限制

sil*_*war 10 android

我正在使用ADB的屏幕录制功能来录制我的应用程序的视频.它非常方便实用.我发现的唯一问题是最长时限为3分钟(180秒).

我们可以通过哪种方式或方法或方式来增加这个时间限制?

erc*_*can 12

在Windows上我的诀窍是创建一个screenrecord.bat文件并运行它.9分钟:

adb shell screenrecord --bit-rate 8000000 /sdcard/sr1.mp4
adb shell screenrecord --bit-rate 8000000 /sdcard/sr2.mp4
adb shell screenrecord --bit-rate 8000000 /sdcard/sr3.mp4
Run Code Online (Sandbox Code Playgroud)

然后,您可以将文件与任何视频编辑软件合并.

我知道这是一个蹩脚的解决方案,但adb screenrecord不应该允许更长的视频长度...


sup*_*eng 11

我遇到了同样的问题.

这是我的解决方案.简而言之,它可以通过重新编译android源来解决.需要患者.

1,按照https://source.android.com/source/initializing.html中的说明 初始化构建环境.

2,从git下载源代码(用10 M带宽大约需要1小时).

3,通过更改kMaxTimeLimitSec为7200(表示2小时)修改path_to_working_directory/frameworks/av/cmds/screenrecord/screenrecord.cpp .

4,编译android(使用Core i5-2500k和8G RAM大约需要2个小时)

5,将你的android手机中的path_to_working_directory/out/target/product/flo/system/bin/screenrecord复制到/ system/bin(请记住备份原始的screenrecord以防万一!)


小智 7

我是这样解决的。 确保在使用屏幕录像机之前将其备份到某个位置。 我知道最大时间是180秒,并且存储在32位整数中。在十六进制中,这将是 B4 00 00 00。因此,我将 screenrecorder 加载到 ghex(我的十六进制编辑器)中,并搜索 B4 00 00 00。只有几个候选者。在第六次尝试时,我找到了常量存储的位置。在我的版本中,它位于偏移量 0001B008 处。我将 B4 更改为 D4,即十进制 212,屏幕记录器运行了 3 分 32 秒。然后我将其更改为 10 02 00 00,这将是 210 十六进制,即 528 dec,它运行了 8 分 48 秒。所以我将其更改为 10 00 01 00,这将是 10010 十六进制,即 65552,并且它运行了......好吧,它仍在运行。

我不想重新编译我的操作系统,我只是想改变屏幕记录程序中的这个常量。所以我做了。您必须拥有 root 权限才能覆盖屏幕录像机,并且我必须重新安装系统文件夹,因为它被安装为只读。我使用以下命令执行此操作: mount -o rw,remount /system

如果开发人员将 screenrecorder 编写为默认 180 秒,但允许您设置您想要的任何最大超时,那就太棒了。这是一个开源项目。我可能应该弄清楚如何提交补丁。

干杯


MSh*_*fer 6

#!/bin/bash 
Run Code Online (Sandbox Code Playgroud)

3分钟后继续直播的功能

screenStream() {
while true
do
adb exec-out screenrecord --output-format=h264 --size 1024x768 - 
done
}
Run Code Online (Sandbox Code Playgroud)

唯一的文件名变量

SecondString=$(date +%s)
Run Code Online (Sandbox Code Playgroud)

显示到屏幕

screenStream | ffplay -framerate 30 -framedrop -bufsize 16M -
Run Code Online (Sandbox Code Playgroud)

保存到文件

screenStream | ffmpeg -i - -s 1024x768 -framerate 30 -bufsize 16M $SecondString.mp4
Run Code Online (Sandbox Code Playgroud)

#Ctrl+C 退出。


Moe*_* Be 5

替代解决方案:

adb shell "screenrecord --time-limit 5 /sdcard/testRun1.mp4; screenrecord --time-limit 5 /sdcard/testRun2.mp4"
Run Code Online (Sandbox Code Playgroud)

注意引号和分号。shell命令在Android设备上作为shell脚本执行。上面的命令将创建两个mp5文件,每个文件5秒,一个接一个。

在我们的Jenkins测试项目中,我们使用以下命令执行exec步骤:

adb shell "screenrecord /sdcard/test1.mp4; screenrecord /sdcard/test2.mp4; screenrecord /sdcard/test3.mp4" & 
Run Code Online (Sandbox Code Playgroud)

“&”号使adb命令成为背景,以允许其余测试脚本继续进行。上面的命令最多可以记录9分钟。