我正在使用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 秒,但允许您设置您想要的任何最大超时,那就太棒了。这是一个开源项目。我可能应该弄清楚如何提交补丁。
干杯
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
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 退出。
替代解决方案:
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分钟。