stream-screen.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. # Mac 屏幕录制推流到 Cloudflare Stream
  3. # 使用方法: ./scripts/stream-screen.sh
  4. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  5. CONFIG_FILE="$SCRIPT_DIR/../config/stream.env"
  6. # 检查配置文件
  7. if [ ! -f "$CONFIG_FILE" ]; then
  8. echo "错误: 配置文件不存在"
  9. echo "请复制 config/stream.env.example 为 config/stream.env 并填写配置"
  10. exit 1
  11. fi
  12. # 加载配置
  13. source "$CONFIG_FILE"
  14. # 屏幕录制参数
  15. SCREEN_DEVICE="${SCREEN_DEVICE:-1}" # 屏幕设备号(通常是1)
  16. AUDIO_DEVICE="${AUDIO_DEVICE:-0}"
  17. FPS="${FPS:-30}"
  18. BITRATE="${BITRATE:-3000k}"
  19. # 检查必要配置
  20. if [ -z "$RTMP_URL" ] || [ -z "$STREAM_KEY" ]; then
  21. echo "错误: 请在 config/stream.env 中配置 RTMP_URL 和 STREAM_KEY"
  22. exit 1
  23. fi
  24. # 检查 ffmpeg
  25. if ! command -v ffmpeg &> /dev/null; then
  26. echo "错误: ffmpeg 未安装"
  27. echo "请运行: brew install ffmpeg"
  28. exit 1
  29. fi
  30. echo "======================================"
  31. echo " Cloudflare Stream 屏幕推流"
  32. echo "======================================"
  33. echo ""
  34. echo "配置信息:"
  35. echo " 屏幕设备: $SCREEN_DEVICE"
  36. echo " 音频设备: $AUDIO_DEVICE"
  37. echo " 帧率: $FPS fps"
  38. echo " 码率: $BITRATE"
  39. echo ""
  40. echo "按 Ctrl+C 停止推流"
  41. echo "======================================"
  42. echo ""
  43. # 开始屏幕推流
  44. ffmpeg -f avfoundation \
  45. -framerate "$FPS" \
  46. -capture_cursor 1 \
  47. -i "$SCREEN_DEVICE:$AUDIO_DEVICE" \
  48. -c:v libx264 \
  49. -preset veryfast \
  50. -maxrate "$BITRATE" \
  51. -bufsize 6000k \
  52. -pix_fmt yuv420p \
  53. -g 60 \
  54. -c:a aac \
  55. -b:a 128k \
  56. -ar 44100 \
  57. -f flv \
  58. "${RTMP_URL}/${STREAM_KEY}"