鸿蒙录屏脚本

334 阅读1分钟

鸿蒙录屏脚本

chmod record.sh
./record.sh
完成后 命令行按下 control + c 

image.png

#!/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