Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何提高Android Kitkat的ADB屏幕记录时限_Android - Fatal编程技术网

如何提高Android Kitkat的ADB屏幕记录时限

如何提高Android Kitkat的ADB屏幕记录时限,android,Android,我使用ADB的屏幕录制功能录制我的应用程序的视频。这是非常方便和有用的。我发现的唯一问题是3分钟(180秒)的最大时间限制 是否有任何方法或解决办法或方法可以增加这一时限 在windows上,我的诀窍是创建一个screenrecord.bat文件并运行它。9分钟: adb shell screenrecord --bit-rate 8000000 /sdcard/sr1.mp4 adb shell screenrecord --bit-rate 8000000 /sdcard/sr2.mp4 a

我使用ADB的屏幕录制功能录制我的应用程序的视频。这是非常方便和有用的。我发现的唯一问题是3分钟(180秒)的最大时间限制


是否有任何方法或解决办法或方法可以增加这一时限

在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
然后,您可以将这些文件与任何视频编辑软件合并


我知道这是一个蹩脚的解决方案,但由于不允许更长的视频长度,adb screenrecord应该受到谴责。

我遇到了同样的问题

这是我的解决办法。简单地说,它可以通过重新编译android源代码来解决。需要病人

1,按照此处的说明初始化生成环境

2、从git下载源代码(大约1小时,10米带宽)

3、通过将
kMaxTimeLimitSec
更改为7200(表示2小时),将路径_修改为_working_目录/frameworks/av/cmds/screenrecord/screenrecord.cpp

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


5、将路径复制到android手机中的工作目录/out/target/product/flo/system/bin/screenrecord到/system/bin(请记住备份原始screenrecord以备不时之需!)

另一种解决方案:

adb shell "screenrecord --time-limit 5 /sdcard/testRun1.mp4; screenrecord --time-limit 5 /sdcard/testRun2.mp4"
注意引号和分号。shell命令作为shell脚本在Android设备上执行。上面的命令将创建两个分别为5秒的mp4文件,一个接一个

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

adb shell "screenrecord /sdcard/test1.mp4; screenrecord /sdcard/test2.mp4; screenrecord /sdcard/test3.mp4" & 

符号AND使adb命令背景化,以允许测试脚本的其余部分继续进行。上面的命令最多记录9分钟。

下面是我如何解决的在处理屏幕录制器之前,请确保将其备份到某个地方。我知道最长时间是180秒,并且存储在32位整数中。在十六进制中,这将是B4 00。所以我把screenrecorder加载到ghex(我的十六进制编辑器)中,并搜索B4 00。只有几个候选人。在第六次尝试时,我找到了常数的存储位置。在我的版本中,它位于偏移量0001B008处。我将B4改为D4,它是212位小数,屏幕记录器运行了3分32秒。然后我把它改成10 02 00 00,也就是210十六进制,也就是528十二月,它运行了8分48秒。所以我把它改成了10000100,也就是10010Hex,也就是65552,然后它运行。。。嗯,它还在运行

我不想重新编译我的操作系统,我只想在screenrecorder程序中更改这个常量。所以我做了。您必须具有root权限才能覆盖screenrecorder,并且我必须重新装载我的系统文件夹,因为它是以只读方式装载的。我使用命令完成了这一操作:mount-orw,remount/system

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

干杯

函数使流在3分钟后继续运行 唯一文件名变量 屏幕显示 保存到文件
#Ctrl+C退出。

在此将所有以前的答案收集到一个连贯的BASH脚本中。
需要ffmpeg(ffplay)()

capture screen.sh

#/bin/bash
set-e
#用法:
#bash./capture-screen.sh
#bash./capture-screen.sh-s 192.168.1.10
ADB_FLAGS=“$@”
捕获比特率=2000000
捕获高度=720
CAPTURE_WIDTH=“$(($CAPTURE_HEIGHT/9*16))”#自动计算宽度
#如果无法选择单个设备,此调用将失败
adb${adb_FLAGS}shell正常运行时间
屏幕流(){
虽然是真的;做
adb${adb_FLAGS}exec out屏幕记录--输出格式=h264--比特率${CAPTURE_BITRATE}--大小“${CAPTURE_WIDTH}x${CAPTURE_HEIGHT}”-
完成
}
screenStream | ffplay-隐藏旗帜-帧速率60-framedrop-f h264-i-

也可以作为

提供您的目标是什么?如果您只想录制应用程序的视频,那么可以使用您链接到的问题,因为该问题与
屏幕记录
无关。。通过删除最后一个问题更新了问题line@NunChai-您发送的此屏幕广播链接是否在实际设备或桌面上录制视频?因为如果这在桌面上运行,那么我已经有了录制视频的软件。我想在实际设备上录制视频,这样我可以捕获更平滑的动画效果,并可以像adb screenrecord doesIt那样捕获高质量的视频。它会将您在设备上所做的任何事情记录到您提供的计算机路径上。您好,这是我想完成的任务的变通方法,但它在mac/unix上工作,然后,您可以使用如下方式自动将这些文件缝合在一起:
mkvmerge-o sr.mp4 sr1.mp4\+sr2.mp4\+sr3.mp4
。有关更多信息,请参阅。您是否尝试将重新编译的可执行文件放在应用程序的私有目录中,而不是将其复制到/system/bin(我想这需要root权限)?它还能用吗?我还没试过。重新编译的
屏幕记录版本已经删除了一段时间。因此,我现在尝试将原始的
屏幕记录
放入/sdcard/Download,它确实正常工作。你可以试一试。这是一个了不起的解决方案!我用一个虚拟机按照你的指示编译了一个。我检查了Android 4.4.4_r1的分支(因为那是我的目标设备),做了一个
make
,然后从
/out/target/product/generic/system/bin
中提取了文件。如果你想要我版本的screenrecord(最多10天的记录-疯狂!)。如果您想要帮助自己设置和编译一个,只需ping me.BTW,您需要获得root访问权限并将其安装在
/system/bin
(将旧的一个重命名为
screenrecold#!/bin/bash 
screenStream() {
while true
do
adb exec-out screenrecord --output-format=h264 --size 1024x768 - 
done
}
SecondString=$(date +%s)
screenStream | ffplay -framerate 30 -framedrop -bufsize 16M -
screenStream | ffmpeg -i - -s 1024x768 -framerate 30 -bufsize 16M $SecondString.mp4