| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/bin/bash
- # Mac 屏幕录制推流到 Cloudflare Stream
- # 使用方法: ./scripts/stream-screen.sh
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- CONFIG_FILE="$SCRIPT_DIR/../config/stream.env"
- # 检查配置文件
- if [ ! -f "$CONFIG_FILE" ]; then
- echo "错误: 配置文件不存在"
- echo "请复制 config/stream.env.example 为 config/stream.env 并填写配置"
- exit 1
- fi
- # 加载配置
- source "$CONFIG_FILE"
- # 屏幕录制参数
- SCREEN_DEVICE="${SCREEN_DEVICE:-1}" # 屏幕设备号(通常是1)
- AUDIO_DEVICE="${AUDIO_DEVICE:-0}"
- FPS="${FPS:-30}"
- BITRATE="${BITRATE:-3000k}"
- # 检查必要配置
- if [ -z "$RTMP_URL" ] || [ -z "$STREAM_KEY" ]; then
- echo "错误: 请在 config/stream.env 中配置 RTMP_URL 和 STREAM_KEY"
- exit 1
- fi
- # 检查 ffmpeg
- if ! command -v ffmpeg &> /dev/null; then
- echo "错误: ffmpeg 未安装"
- echo "请运行: brew install ffmpeg"
- exit 1
- fi
- echo "======================================"
- echo " Cloudflare Stream 屏幕推流"
- echo "======================================"
- echo ""
- echo "配置信息:"
- echo " 屏幕设备: $SCREEN_DEVICE"
- echo " 音频设备: $AUDIO_DEVICE"
- echo " 帧率: $FPS fps"
- echo " 码率: $BITRATE"
- echo ""
- echo "按 Ctrl+C 停止推流"
- echo "======================================"
- echo ""
- # 开始屏幕推流
- ffmpeg -f avfoundation \
- -framerate "$FPS" \
- -capture_cursor 1 \
- -i "$SCREEN_DEVICE:$AUDIO_DEVICE" \
- -c:v libx264 \
- -preset veryfast \
- -maxrate "$BITRATE" \
- -bufsize 6000k \
- -pix_fmt yuv420p \
- -g 60 \
- -c:a aac \
- -b:a 128k \
- -ar 44100 \
- -f flv \
- "${RTMP_URL}/${STREAM_KEY}"
|