{ "nodes":[ {"id":"title","type":"text","text":"# RTSP → Cloudflare Stream 架构\n\n**目标**:IP摄像头实时推流到Web浏览器\n**延迟**:< 1秒(WebRTC)","x":-100,"y":-450,"width":400,"height":120,"color":"6"}, {"id":"camera","type":"text","text":"**IP摄像头**\n(ONVIF)\n\n协议:RTSP\n格式:H.264/H.265\n\n任何支持RTSP的摄像头","x":-600,"y":-200,"width":200,"height":160,"color":"1"}, {"id":"ffmpeg","type":"text","text":"**FFmpeg**\n(转码器)\n\n版本要求:6.1+\n输入:RTSP\n输出:WHIP\n\n核心命令:\nffmpeg -i rtsp://... \\\n -c:v copy \\\n -f whip {WHIP_URL}","x":-250,"y":-220,"width":240,"height":200,"color":"2"}, {"id":"cloudflare","type":"text","text":"**Cloudflare Stream**\n(Live)\n\n接收:WHIP协议\n输出:WHEP协议\n\n优势:\n- 全球CDN\n- 按量付费\n- 低延迟WebRTC","x":120,"y":-220,"width":240,"height":200,"color":"4"}, {"id":"browser","type":"text","text":"**Web观众**\n(浏览器)\n\n协议:WHEP\n播放:WebRTC\n\n支持所有现代浏览器","x":500,"y":-200,"width":200,"height":160,"color":"5"}, {"id":"java_manager","type":"text","text":"**Java程序**\n(进程管理)\n\n职责:\n- 启动/停止FFmpeg进程\n- 管理多路视频流\n- 调用Cloudflare API\n- 健康检查与重启","x":-250,"y":80,"width":240,"height":160,"color":"3"}, {"id":"cf_api","type":"text","text":"**Cloudflare API**\n\n功能:\n- 创建Live Input\n- 获取WHIP URL\n- 管理流状态","x":120,"y":80,"width":240,"height":120,"color":"4"}, {"id":"todo_ffmpeg","type":"text","text":"**待解决 #1**\nFFmpeg WHIP支持\n\n需要FFmpeg 6.1+版本\n可能需要自行编译","x":-600,"y":80,"width":200,"height":120,"color":"1"}, {"id":"todo_api","type":"text","text":"**待解决 #2**\nCloudflare API集成\n\n动态创建Live Input\n获取WHIP端点URL","x":500,"y":80,"width":200,"height":120,"color":"1"}, {"id":"advantages","type":"text","text":"## 方案优势\n\n| 优势 | 说明 |\n|------|------|\n| 低延迟 | WebRTC < 1秒 |\n| 兼容性 | 任何RTSP摄像头 |\n| 可扩展 | Java管理多路流 |\n| 成本低 | 按用量付费 |","x":-100,"y":300,"width":400,"height":160,"color":"6"} ], "edges":[ {"id":"edge_camera_ffmpeg","fromNode":"camera","fromSide":"right","toNode":"ffmpeg","toSide":"left","label":"RTSP"}, {"id":"edge_ffmpeg_cf","fromNode":"ffmpeg","fromSide":"right","toNode":"cloudflare","toSide":"left","label":"WHIP"}, {"id":"edge_cf_browser","fromNode":"cloudflare","fromSide":"right","toNode":"browser","toSide":"left","label":"WHEP"}, {"id":"edge_java_ffmpeg","fromNode":"java_manager","fromSide":"top","toNode":"ffmpeg","toSide":"bottom","label":"进程管理"}, {"id":"edge_java_api","fromNode":"java_manager","fromSide":"right","toNode":"cf_api","toSide":"left","label":"调用API"}, {"id":"edge_api_cf","fromNode":"cf_api","fromSide":"top","toNode":"cloudflare","toSide":"bottom","label":"创建Live Input"}, {"id":"edge_todo1_ffmpeg","fromNode":"todo_ffmpeg","fromSide":"top","toNode":"ffmpeg","toSide":"bottom","color":"1"}, {"id":"edge_todo2_api","fromNode":"todo_api","fromSide":"left","toNode":"cf_api","toSide":"right","color":"1"} ] }