鸿蒙录屏脚本
chmod record.sh
./record.sh
完成后 命令行按下 control + c

#!/bin/bash
# author: pyy
DEFAULT_OUTPUT="screen_record_$(date +%Y%m%d_%H%M%S).mp4"
DEVICE_PATH="/data/local/tmp/hdc_record_temp.mp4"
export system_hdc="/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc"
show_help() {
echo "Usage: $0 [options]"
echo "Options:"
echo " -o <filename> 输出文件名称(默认:screen_record_20250x0x_xxxxxx.mp4)"
echo " -h 显示帮助信息"
echo ""
echo "示例:"
echo "./record.sh -o screen_record_xxx.mp4"
}
check_device() {
output=$($system_hdc shell echo "设备连接测试")
substring="Fail"
if [[ $output == *"$substring"* ]]; then
echo "错误:未检测到连接的鸿蒙设备!"
echo "请确保:"
echo "1. 设备已通过USB连接"
echo "2. 开发者模式已开启"
echo "3. hdc工具已正确配置"
exit 1
else
echo "find device "
fi
}
cleanup() {
echo "正在清理临时文件..."
$system_hdc shell aa start -b com.huawei.hmos.screenrecorder -a com.huawei.hmos.screenrecorder.ServiceExtAbility "CustomizedFileName" "$DEFAULT_OUTPUT"
uri=$($system_hdc shell mediatool query $DEFAULT_OUTPUT -u |grep "mp4" |tr -d '"')
# 使用 echo 和 grep -q 结合进行匹配
if echo "$uri" | grep -q "^file"; then
DEVICE_PATH=$($system_hdc shell mediatool recv $uri /data/local/tmp |grep "mp4")
else
DEVICE_PATH=$uri
fi
echo -e "\n✅ 录制完成!"
echo "⬇️ 正在导出视频文件..."
output=$($system_hdc file recv "$DEVICE_PATH" "$OUTPUT_FILE")
substring="Fail"
if [[ $output == *"$substring"* ]]; then
echo "错误:录屏失败!请在手机上手动停止录屏"
exit 1
fi
echo -e "✅ 文件已保存到:\n $(pwd)/$OUTPUT_FILE"
exit 0
}
# 解析参数
while getopts "o:t:r:b:h" opt; do
case $opt in
o) OUTPUT_FILE="$OPTARG";;
h) show_help; exit 0;;
*) echo "无效参数"; exit 1;;
esac
done
OUTPUT_FILE=${OUTPUT_FILE:-$DEFAULT_OUTPUT}
PARAMS=()
check_device
trap cleanup SIGINT
echo "▶️ 开始屏幕录制..."
echo " 输出文件:$OUTPUT_FILE"
# 后台执行录制命令
$system_hdc shell aa start -b com.huawei.hmos.screenrecorder -a com.huawei.hmos.screenrecorder.ServiceExtAbility --ps "CustomizedFileName" "$DEFAULT_OUTPUT"
# $system_hdc "${PARAMS[@]}" "$DEVICE_PATH" & pid=$!
# 进度显示
echo -n "🕒 录制中..."
while true; do
sleep 1
done