Scrcpy学习总结

昨天跟室友闲聊,聊到scrcpy这个录屏应用,还可以录制摄像头捕捉到的环境里的声音,感觉可以满足我的需求。

一、安装

scrcpy依托于ADB,因此需要先安装ADB,这个我已经安装过了,在上一篇博客里有讲,这里附上链接:ADB学习记录

我的电脑是Ubuntu20.08 LTS,一开始我使用命令行语句来安装scrcpy:

sudo apt update
sudo apt install scrcpy

但是安装的版本比较低,scrcpy 1.25,只有scrcpy 2.0及以上才可以录制音频,因此卸载当前版本的scrcpy:

# 卸载
sudo apt remove --auto-remove scrcpy

# 删除配置文件和可能残留的相关文件
sudo apt purge scrcpy

然后又使用snap下载,很可惜版本还是过低,使用的命令行语句如下:

# 安装
snap install scrcpy

# 卸载
sudo snap remove scrcpy

最终是从github上下载的最新版本,github网址如下:

https://github.com/Genymobile/scrcpy/releases

目前官方最新版本是2.6.1

安装之前需要先安装依赖的软件包,我没有找到哪里有讲scrcpy2.6.1依赖的包,找了之前的一个版本的依赖包的清单,但是也没有出现问题。

sudo apt install ffmpeg libsdl2-2.0-0 adb wget gcc git pkg-config meson ninja-build libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev

下载tar.gz文件或zip文件之后解压,里面有一个install_release.sh脚本,但是这个脚本里面有一些内容需要修改,具体来说就是PREBUILT_SERVER_URL和PREBUILT_SERVER_SHA256两项,首先把PREBUILT_SERVER_URL链接里的版本号2.6改成2.6.1,注意有两处版本号需要修改,然后复制下载的SHA256SUMS.txt文件里的scrcpy-server-v2.6.1的信息替换PREBUILT_SERVER_SHA256后面的一串字符:

修改过的如下:

不修改的会报错:srccpy:[server] ERROR: The server version (2.6) does not match the client (2.6.1)。

之后就可以运行./install_release.sh进行安装,安装完成之后Ubuntu的应用中会多两个图标,分别是scrcpy和scrcpy(console),打开前者可以在电脑上对手机进行投屏,打开后者除了投屏还会出现一个终端显示运行的信息。

二、运行

首先还是要把手机调到开发者模式,然后打开USB调试,在“设置-系统与更新-开发人员选项-选择USB配置”中选择MTP(多媒体传输),因为想要测试录制视频+录制音频,从图标打开只能投屏,因此选择从终端打开scrcpy,输入命令:scrcpy --record output.mp4 --audio-source=mic,但很可惜,又出现了问题:

[server] WARN: Audio disabled: it is not supported before Android 11

由于我的手机正好是Android 10,所以我最终也没有测试成能否录制音频,但是录制视频的我测试了,在终端使用语句scrcpy --record output.mp4就可以在投屏的同时进行录制,视频保存在执行该命令的当前文件夹。

退出的话可以直接点投屏的那个“X”,理论上也可以用ctrl+c,但是我只能用第一种方法,第二种不起作用。

三、存在问题

我有四台测试手机,两台HarmonySO 4.0.0,两台MagicOS 8.0,昨天测试ADB发现只有MagicOS 8.0的能连接到电脑进行投屏,今天测试scrcpy只有一台HarmonyOS 4.0.0可以投屏,其他的手机都是闪退,录屏的话还会报错:

WARN: [FFmpeg] track 1: codec frame size is not set
ERROR: [FFmpeg] opus in MP4 support is experimental, add '-strict -2' if you want to use it.
ERROR: Failed to write header to output.mp4

看看后面应该怎样解决。

-------------------------------------------------------------------------------------------------------------------------------

2024年9月4日补充

解决了录制视频和录制摄像头音频的问题,以及多设备同步录制问题。

并且今天测试了新手机,是一台vivo手机,更接近原生安卓机,因此可以使用scrcpy,并且是Android 14,可以测试录制音频功能。

一、录制视频问题

之前在录制mp4文件时会报错,因此改为录制mkv文件,这样可以成功录制,后面加上--audio-source=mic即选择手机的摄像头作为音频来源。

# 单个设备
scrcpy -r recording1.mkv --audio-source=mic

#多个设备
scrcpy --serial XXXE3B00T000350 --record recording1.mkv --audio-source=mic

二、 多设备同步录制问题

写了一个脚本,视频文件命名规则为时间+设备名。

#!/bin/bash

# 定义设备代号和序列号的映射
declare -A devices
devices=(
    [1]="xxxVB22327006944"
    [2]="XXXE3B00T000350"
    # [3]="设备序列号3"
    # [4]="设备序列号4"
)

# 定义视频保存的目录
recordings_dir="/home/amax/Documents/File/LG-record-videos/videos"

# 创建视频保存目录如果不存在
mkdir -p "$recordings_dir"

# 获取当前时间作为文件名的一部分
current_time=$(date +"%Y%m%d_%H%M%S")

# 函数:停止所有录制进程
stop_recordings() {
    echo "停止所有录制..."
    pkill -f scrcpy
}

# 捕捉 SIGINT 信号(Ctrl + C)
trap stop_recordings SIGINT

# 遍历设备代号和序列号,为每个设备启动一个 scrcpy 录制进程
for device_code in "${!devices[@]}"; do
    serial_number="${devices[$device_code]}"
    recording_path="$recordings_dir/${current_time}_${device_code}.mkv"
    
    # 启动 scrcpy 并录制视频
    echo "开始录制设备 $device_code 到 $recording_path"
    scrcpy --serial "$serial_number" --record "$recording_path" --audio-source=mic &
done

echo "所有设备已开始录制。按 Ctrl + C 结束录制。"
# 等待所有后台进程结束
wait

因为我是在windows系统上写的脚本,一开始是txt格式的文件,然后发送到Ubuntu上面,因此文件存在换行符不匹配问题,要先进行转换。

转换文件行结束符
dos2unix  scrcpy-record-video-script.sh

赋予文件执行权限
chmod +x scrcpy-record-video-script.sh

执行脚本
./scrcpy-record-video-script.sh

两个手机可以同时进行录制。但是依然存在ctrl+c不起作用的问题,只能手动关闭。

主要参考:如何在 Debian 12 / Ubuntu 22.04 中安装 Scrcpy(2.3 更新)

Scrcpy - 开源免费在电脑显示手机画面并控制安卓手机工具 (投屏/录屏/免Root)

https://github.com/Genymobile/scrcpy/blob/master/doc/recording.md

scrcpy是一个开源的安卓设备显示和控制项目,而易语言是一种基于中文的编程语言。这两者分别代表了不同的技术和应用方向。 首先,scrcpy是一个非常强大的工具,它允许用户通过USB连接将安卓设备的屏幕投射到计算机上,并可以在计算机上实时控制设备操作。这对于开发人员、测试人员和设备管理者来说是非常实用的工具。使用scrcpy,用户可以在计算机屏幕上更好地查看和控制设备操作,实现更高效的工作流程。 另一方面,易语言是一种使用中文编写程序的编程语言。它减少了学习编程的语言障碍,使得中文母语的人能够更轻松地理解和应用各种编程概念。易语言在中国有着广泛的用户群体,尤其是初学者,他们可以通过易语言更快地入门编程。 虽然scrcpy和易语言是两个不同的技术领域,但它们都在不同的方面对用户提供了便利。scrcpy提供了更好的设备管理和操作功能,易语言降低了学习编程的门槛。通过结合使用scrcpy和易语言,用户可以更轻松地进行安卓设备管理和应用开发。例如,用户可以使用scrcpy将安卓设备的屏幕投射到计算机上,并使用易语言编写自动化脚本来模拟设备操作,提高工作效率。 综上所述,scrcpy和易语言分别代表了安卓设备管理和编程技术的不同方面。通过结合使用,用户可以更好地管理和控制安卓设备,同时降低学习编程的难度。这使得scrcpy和易语言成为了在不同领域应用技术的有力工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值