11.屏幕录制与内容创作
屏幕录制是 scrcpy 最常用的功能之一。无论是制作教程视频、记录游戏过程,还是保存应用演示,scrcpy 都能提供高质量的录制能力。更重要的是,这些录制功能与实时镜像完全集成,可以在操作设备的同时生成干净的视频文件,而不会像屏幕录制软件那样受到系统负载和画面延迟的影响。
scrcpy 的录制机制设计得很巧妙。它直接从设备捕获编码后的音视频流,时间戳在设备端生成,网络延迟不会影响最终文件的同步质量。这意味着即使无线连接出现波动,录制的文件依然完美同步。这种架构让 scrcpy 成为内容创作的利器。
录制格式与参数设置
scrcpy 支持多种容器格式,选择哪种格式取决于具体需求。默认情况下,程序会根据文件扩展名自动判断格式,但也可以手动指定。
容器格式选择
最常用的格式是 MP4 和 Matroska(MKV)。MP4 兼容性最好,几乎所有设备和平台都能播放;MKV 则更灵活,支持更多编码组合和元数据。对于纯音频录制,可以选择 OPUS、FLAC 或 WAV 格式。
# 录制为 MP4 格式
scrcpy --record=demo.mp4
# 录制为 MKV 格式
scrcpy --record=tutorial.mkv
# 手动指定格式,忽略文件扩展名
scrcpy --record=output --record-format=mkv
第一行命令会生成标准的 MP4 文件,适合直接上传到视频平台。第二行的 MKV 格式在需要后期处理时更有优势,比如分离音视频轨道或添加字幕。第三行展示了如何强制使用特定格式,这在自动化脚本中很有用,可以避免因文件名不规范导致的问题。
音视频编码基础
录制时,视频流通常使用 H.264 编码,音频流使用 AAC 或 OPUS。这些编码在压缩率和质量之间取得了良好平衡。需要注意的是,编码工作由设备端的硬件完成,scrcpy 只负责接收和封装数据流。
# 查看设备支持的编码器
scrcpy --list-encoders
这个命令会列出设备上所有可用的视频和音频编码器。不同设备的编码器性能差异很大,比如高通平台通常使用 OMX.qcom 系列编码器,而联发科平台使用 OMX.MTK 系列。了解这些信息有助于在出现问题时快速定位原因。
纯录制模式
有时候我们只需要录制,不需要实时预览。纯录制模式可以节省系统资源,特别适合长时间录制或服务器环境。
# 只录制,不显示窗口
scrcpy --no-playback --no-window --record=session.mp4
执行这条命令后,scrcpy 会在后台运行,直到按下 Ctrl+C 停止。没有窗口意味着更低的 CPU 和内存占用,对于需要录制数小时场景测试或自动化脚本记录非常实用。如果想同时禁用控制功能,可以加上 --no-control 参数,这样设备端不会响应任何输入,避免误操作。
音视频分离录制技术
内容创作中,经常需要单独处理视频或音频轨道。scrcpy 提供了灵活的分离录制选项。
仅录制视频
当不需要设备音频时,可以关闭音频录制,减小文件体积。
scrcpy --no-audio --record=video-only.mp4
这在录制应用演示或游戏画面时很常见。很多创作者喜欢后期配音,或者从其他来源添加背景音乐和解说。关闭音频录制可以避免录制到系统通知声或其他干扰音。
仅录制音频
scrcpy 也能作为高质量的音频录制工具。这在录制播客、音乐或应用音效时特别有用。
# 录制 OPUS 格式音频
scrcpy --no-video --record=audio.opus
# 录制 AAC 格式音频
scrcpy --no-video --audio-codec=aac --record=audio.aac
# 录制无损 FLAC 格式
scrcpy --no-video --audio-codec=flac --record=audio.flac
# 录制未压缩 WAV 格式
scrcpy --no-video --audio-codec=raw --record=audio.wav
OPUS 格式适合语音内容,文件小且质量高;AAC 是通用选择,兼容性最好;FLAC 提供无损压缩,适合音乐录制;WAV 完全未压缩,质量最高但文件巨大。根据内容类型选择合适的格式能显著提升工作效率。
音视频独立控制
更精细的控制是分别设置播放和录制行为。比如可以实时观看视频但不听设备音频,同时录制完整的音视频文件。
# 录制音视频,但只播放视频(不播放音频)
scrcpy --record=file.mkv --no-audio-playback
这个组合在录制游戏解说时很实用。创作者可以听到游戏音效,但不想让这些声音干扰麦克风录制的解说。通过 --no-audio-playback 禁用本地播放,同时 --record 确保游戏音频被完整保存到文件中,后期再与解说音轨混合。
录制时长与自动分割
长时间录制需要考虑文件管理和存储空间。scrcpy 提供了时间限制功能,但自动分割需要结合外部工具实现。
时间限制
--time-limit 参数可以精确控制录制时长,到时间后自动停止。
# 录制 20 秒后自动停止
scrcpy --record=demo.mkv --time-limit=20
时间单位是秒,支持小数表示更精确的时长。这个参数不仅适用于录制,也适用于普通镜像。在自动化测试中,可以用它确保每个测试用例的录制时长一致,避免生成过大的文件。
# 录制 5 分钟(300 秒)
scrcpy --record=long-session.mp4 --time-limit=300
# 录制 1.5 分钟
scrcpy --record=short-demo.mp4 --time-limit=90
第一行命令适合录制完整的应用演示,第二行适合制作短视频片段。结合脚本使用,可以批量生成不同长度的演示视频。
自动分割策略
虽然 scrcpy 没有内置的自动分割功能,但可以通过脚本实现。思路是启动多个 scrcpy 实例,每个实例录制固定时长。
#!/bin/bash
# 分段录制脚本示例
SEGMENT_DURATION=300 # 每段 5 分钟
TOTAL_SEGMENTS=12 # 总共录制 1 小时
for i in $(seq 1 $TOTAL_SEGMENTS); do
echo "录制第 $i 段..."
scrcpy --record=segment_$(printf "%03d" $i).mp4 --time-limit=$SEGMENT_DURATION
sleep 2 # 短暂停顿,避免文件冲突
done
这个脚本会生成 12 个 MP4 文件,每个 5 分钟,文件名按序号排列。后期可以用 FFmpeg 合并这些文件。分段录制的好处是即使某个段出现问题,也不会丢失全部内容,而且便于并行处理。
对于直播场景,可以设置更短的分段,比如每 10 分钟一个文件,这样上传和转码可以并行进行,减少整体延迟。
画面旋转与方向控制
移动设备的方向变化是内容创作中的常见挑战。scrcpy 提供了多层级的方向控制,理解这些差异对获得理想的录制效果至关重要。
录制方向与显示方向的区别
scrcpy 有三个方向相关的参数,作用在不同阶段:
--capture-orientation:控制设备端捕获视频的方向,影响录制文件--orientation:客户端显示方向,不影响录制--record-orientation:专门控制录制文件的方向
# 捕获时旋转 90 度,录制文件会包含这个旋转
scrcpy --capture-orientation=90 --record=portrait-game.mp4
# 只旋转显示,不旋转录制内容
scrcpy --orientation=90 --record=landscape.mp4
第一行命令适合录制竖屏游戏,即使设备物理上是横屏,也能生成竖屏视频文件。第二行命令在录制横屏内容时,本地显示器竖着看更方便,但文件保持横屏,便于后期编辑。
方向锁定
物理设备旋转会改变捕获方向,这在手持录制时很烦人。使用 @ 前缀可以锁定方向。
# 锁定为初始方向
scrcpy --capture-orientation=@ --record=stable.mp4
# 锁定为 90 度顺时针
scrcpy --capture-orientation=@90 --record=fixed-orientation.mp4
锁定后,无论设备如何旋转,录制的视频方向保持不变。这在录制需要频繁转动设备的 AR 应用或运动类游戏时特别重要。没有锁定的话,视频会不断旋转,后期几乎无法使用。
方向值详解
方向参数支持多种值:
# 基础旋转
scrcpy --capture-orientation=0 # 不旋转
scrcpy --capture-orientation=90 # 顺时针 90 度
scrcpy --capture-orientation=180 # 180 度
scrcpy --capture-orientation=270 # 顺时针 270 度
# 水平翻转组合
scrcpy --capture-orientation=flip0 # 水平翻转
scrcpy --capture-orientation=flip90 # 水平翻转 + 90 度
scrcpy --capture-orientation=flip180 # 水平翻转 + 180 度
scrcpy --capture-orientation=flip270 # 水平翻转 + 270 度
翻转功能在录制前置摄像头内容时很有用,可以纠正镜像效果。但需要注意,MP4 和 MKV 格式在录制时不支持翻转,只有纯旋转有效。如果确实需要翻转效果,可以在后期用 FFmpeg 处理。
自定义角度旋转
除了 90 度的倍数旋转,scrcpy 还支持任意角度旋转,这在创意内容中很有用。
# 旋转 23 度
scrcpy --angle=23 --record=tilted.mp4
这种旋转以画面中心为轴,适合制作特殊的视觉效果。比如录制时钟应用时,可以旋转角度让指针垂直,创造独特的视觉呈现。这个变换在捕获方向之后应用,所以可以与 --capture-orientation 组合使用。
内容创作工作流构建
掌握了基础录制技术后,下一步是构建高效的工作流。好的工作流能显著提升内容生产效率。
场景一:应用教程录制
录制应用教程需要清晰的画面和稳定的帧率。推荐配置:
scrcpy --max-size=1280 --max-fps=30 --video-bit-rate=4M --record=tutorial.mp4
这个配置将分辨率限制在 1280 像素宽,保证文字清晰的同时文件不会太大。30fps 足够流畅,4Mbps 码率在质量和体积间取得平衡。录制完成后,可以直接导入视频编辑软件添加配音和标注。
如果教程很长,建议分段录制。每段聚焦一个功能点,文件名包含序号和主题,比如 01_installation.mp4、02_basic_usage.mp4。这样即使某段需要重录,也不会影响其他部分。
场景二:游戏高光时刻录制
游戏录制需要高帧率和低延迟,同时要避免录制到不必要的音频。
scrcpy --max-fps=60 --video-bit-rate=8M --no-audio-playback --record=gameplay.mkv
60fps 能捕捉快速动作,8Mbps 码率保证画面质量。--no-audio-playback 避免游戏声音干扰实时解说,但音频仍然会被录制到文件中。MKV 格式便于后期分离音轨,添加背景音乐和解说。
对于竞技类游戏,可以进一步降低分辨率换取更高帧率:
scrcpy --max-size=720 --max-fps=90 --video-bit-rate=6M --record=competitive.mp4
720p 分辨率在大多数屏幕上足够清晰,90fps 能捕捉每一个操作细节。这种配置生成的文件较小,便于快速剪辑和上传。
场景三:自动化测试录制
在 CI/CD 环境中录制测试结果,需要无人值守和可靠的退出机制。
#!/bin/bash
# CI 录制脚本
set -e
OUTPUT_DIR="test-recordings/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUTPUT_DIR"
# 录制 5 分钟测试
timeout 300 scrcpy --no-playback --no-window --record="$OUTPUT_DIR/smoke-test.mp4" || true
# 检查文件是否生成
if [ -f "$OUTPUT_DIR/smoke-test.mp4" ]; then
echo "录制成功: $OUTPUT_DIR/smoke-test.mp4"
else
echo "录制失败"
exit 1
fi
这个脚本使用 timeout 命令确保即使测试卡住也能退出。--no-playback 和 --no-window 模式节省资源,适合在服务器或 Docker 容器中运行。录制文件按时间戳组织,便于追溯。
场景四:多设备对比录制
评测类内容经常需要同时展示多个设备。虽然 scrcpy 不支持多设备同步录制,但可以通过脚本协调。
#!/bin/bash
# 多设备录制脚本
DEVICES=$(adb devices | grep -v "List" | grep "device" | cut -f1)
if [ -z "$DEVICES" ]; then
echo "未找到设备"
exit 1
fi
RECORDING_ID=$(date +%Y%m%d_%H%M%S)
mkdir -p "multi-device/$RECORDING_ID"
for DEVICE in $DEVICES; do
echo "启动设备 $DEVICE 录制..."
scrcpy -s $DEVICE --record="multi-device/$RECORDING_ID/device_${DEVICE}.mp4" \
--no-playback --no-window --time-limit=60 &
done
wait
echo "所有设备录制完成"
这个脚本会同时启动所有连接设备的录制,每个设备生成独立文件。后期可以用视频编辑软件并排展示。--time-limit 确保所有设备录制时长一致,便于对齐。
场景五:音频专注录制
录制播客或音乐应用时,视频不重要,音频质量是关键。
scrcpy --no-video --audio-codec=flac --record=podcast.flac --time-limit=3600
这个配置录制一小时无损音频,适合后期精细编辑。FLAC 格式保留了全部音频细节,文件大小又比 WAV 小很多。如果设备支持,也可以尝试 OPUS 编码,它在低码率下表现优异。
后期处理建议
录制只是第一步,高效的后期处理同样重要。scrcpy 生成的文件可以直接用 FFmpeg 处理:
# 提取音频轨道
ffmpeg -i input.mp4 -vn -acodec copy audio.m4a
# 裁剪视频(从第 10 秒开始,持续 30 秒)
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
# 添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
这些命令不重新编码,处理速度极快。提取音频轨道方便单独编辑;裁剪功能快速截取精彩片段;添加水印保护版权。建议创建 Makefile 或脚本自动化这些操作。
性能优化技巧
内容创作往往要处理大量素材,性能优化能节省大量时间。
# 使用硬件加速编码(如果支持)
scrcpy --video-codec=h265 --video-bit-rate=4M --record=efficient.mp4
H.265 编码效率比 H.264 高 50%,意味着相同质量下文件小一半。但编码耗时可能略长,且兼容性稍差。对于需要快速上传的内容,H.264 仍是首选。
对于长时间录制,监控文件大小很有必要:
# 每 60 秒检查一次文件大小
watch -n 60 'ls -lh *.mp4'
这个命令会定期显示 MP4 文件大小,帮助判断存储空间是否充足。结合 --time-limit 使用,可以避免磁盘写满导致录制失败。
工作流自动化
最终目标是让录制成为工作流的无缝部分。可以创建配置文件管理不同场景的参数:
# tutorial.conf
max-size=1280
max-fps=30
video-bit-rate=4M
record-format=mp4
# gameplay.conf
max-fps=60
video-bit-rate=8M
record-format=mkv
然后使用脚本加载配置:
#!/bin/bash
# 加载配置并录制
if [ -z "$1" ]; then
echo "用法: $0 <场景名称>"
exit 1
fi
CONFIG_FILE="$1.conf"
if [ ! -f "$CONFIG_FILE" ]; then
echo "配置文件不存在: $CONFIG_FILE"
exit 1
fi
# 读取配置并构建命令
CMD="scrcpy"
while IFS='=' read -r key value; do
CMD="$CMD --$key=$value"
done < "$CONFIG_FILE"
CMD="$CMD --record=$1_$(date +%Y%m%d_%H%M%S).mp4"
echo "执行: $CMD"
eval $CMD
这个脚本根据场景名称加载配置,自动生成带时间戳的文件名。创作者只需记住场景名称,无需关心复杂参数。
屏幕录制是内容创作的基石。scrcpy 提供的灵活参数和高质量输出,让它成为专业创作者的得力工具。从简单的演示录制到复杂的自动化工作流,理解这些技术细节能显著提升生产效率。下一章将探讨虚拟显示技术,这将为多任务处理和隔离测试环境打开新的可能性。