一个可自定义录屏时长的屏幕录制bat脚本

!我的adb目录是C:\Users\Mark\adb,默认存储位置是桌面,请根据各位自己的情况进行修改。

实际上这个工作用脚本来做的话也不是很自由……蛮讲吧

本来是尝试着用来怼QQ的闪照功能的,但是完败……不管怎么说也蛮发上来好了

上一篇里面讲了在电脑上用脚本截屏(事实上像豌豆荚啊腾讯管家啊搜狗手机助手啊什么的应该都是用的这种方法,然后就无限占用adb端口,流氓流氓真流氓),这一篇弄一个高级一点的,电脑录制手机屏幕。

类似的,ADB也提供了一个screenrecord功能。不过这个功能限制挺多:屏幕录制过程中旋转屏幕会造成旋转过程中画面剧烈抖动,系统禁止截图的场合录制屏幕功能会录制到黑屏(这让我如何愉快的截闪照= =)之类。录制屏幕的基础命令是这样的:

adb shell screenrecord /sdcard/screenrecord.mp4

这个命令会让系统(4.4+)录制默认时长,也就是三分钟(反正我是没试过那么久……据说录制完成的视频只有179s,那么少掉的1s去哪了呢)的视频并保存为/sdcard/screenrecord.mp4。虽然也可以随时用Ctrl+C终止,但是毕竟还是逼格不够方便性不足。

于是我们就可以用到--time-limit这个参数了。它的作用就是字面意思,限制视频录制的时长。比如说

adb shell screenrecord  --time-limit 1 /sdcard/screenrecord.mp4

就是录制一个长度为1s的屏幕录像并保存到上面那个目录。同样的我们也可以用一个脚本来实现。

cd C:\Users\mark\adb
adb shell screenrecord /sdcard/screenrecord.mp4
adb pull /sdcard/screenrecord.mp4 C:\Users\mark\Desktop\screenrecord.mp4
adb shell rm /sdcard/screenrecord.mp4

但是实际上上面这个脚本毫无存在意义,不信你试试。

因此,我们需要一个能够根据用户输入的时长来录制视频的bat。这就需要扯到批处理文件里的set

set一般会和好基友/p连用,构成“暂停执行并等待用户键入并按下回车之后才继续执行”的效果。

set /p sec=就是基本的格式了:让用户输入一个变量,此变量用sec作为变量值。之后需要调用的话,就使用%sec%调用就行了。

因此我们可以得到一个优化后的脚本:

set /p sec= 输入需要录制的视频时长
echo 开始录制视频,时长为%sec%s...完成后保存至桌面
cd C:\Users\mark\adb
adb shell screenrecord --time-limit %sec% /sdcard/screenrecord.mp4
adb pull /sdcard/screenrecord.mp4 C:\Users\mark\Desktop\screenrecord.mp4
adb shell rm /sdcard/screenrecord.mp4

然而实际操作以后,我们会发现为什么屏幕最上面赫然出现了一行set /p=……逼死强迫症系列嘛这是……

echo_not_disabled

这个倒也好办,我们只要使用@echo off把第一行的命令回显(Echo)关掉就行了。

终极版:

@echo off
set /p sec= 输入需要录制的视频时长:
echo 开始录制视频,时长为%sec%s...完成后保存至桌面
cd C:\Users\mark\adb
adb shell screenrecord --time-limit %sec% /sdcard/screenrecord.mp4
adb pull /sdcard/screenrecord.mp4 C:\Users\mark\Desktop\screenrecord.mp4
adb shell rm /sdcard/screenrecord.mp4

嗨呀,完美。输入时长,按下回车,视频就自己跑到电脑桌面上去了。


题外话:screenrecord中的–rotate参数

一般情况下录制的视频是跟随系统方向的,但是总有那么些颈椎病患者迫切地想让他们的颈椎得到锻炼,于是就有了实验性的–rotate这个参数。(正经脸

adb shell screenrecord  --rotate /sdcard/screenrecord.mp4

理论上–rotate是在录制视频时把录制方向旋转90°(就连help也这么说),但是我实际操作以后,却得到了以下画面:

screenrecord-rotate

嗯,很好,这很颈椎病。

发表评论

有什么想法说出来听听?