diff --git a/README.md b/README.md index f57d58c..880aced 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,84 @@ with mss.mss() as sct: - 在32台终端上运行 `auto_receive.py` 脚本 - 脚本会自动打开Chrome并跳转到流地址 +## 模式2:HDMI采集卡方案 + +本模式适用于服务器安装了视频采集卡,可以接受外部HDMI信号的场景。 + +### 步骤1:安装FFmpeg + +- 下载FFmpeg:`https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z` +- 解压到 `D:\ScreenCast\ffmpeg` 目录 +- 确保 `D:\ScreenCast\ffmpeg\bin\ffmpeg.exe` 可用 + +### 步骤2:列出DirectShow设备 + +在命令行执行以下命令,列出所有 DirectShow 设备: + +```bat +ffmpeg -list_devices true -f dshow -i dummy +``` + +输出示例: +``` +[dshow @ ...] DirectShow video devices +[dshow @ ...] "USB Video Device" +[dshow @ ...] "AVerMedia HD Capture" +``` + +记下要使用的设备名称。 + +### 步骤3:配置MediaMTX + +编辑 `mediamtx.yml`,添加 `hdmi` 路径配置: + +```yaml +paths: + hdmi: + # source 不写,或者写 publisher,表示"由客户端推流进来" + # source: publisher + + # 局域网可以先不开认证 + # publishUser: "" + # publishPass: "" + + # 有读者时才拉源(这里用不到,因为是 publisher 模式) + sourceOnDemand: no +``` + +### 步骤4:启动MediaMTX + +```bat +./mediamtx +``` + +看到日志里 RTMP/RTSP/WebRTC 端口监听就表示启动成功。 + +### 步骤5:用FFmpeg采集采集卡并推流 + +假设: +- MediaMTX 服务器 IP:192.168.1.100 +- 推流路径名:hdmi +- DirectShow 设备名称:"AVerMedia HD Capture" + +```bat +ffmpeg -f dshow -i video="AVerMedia HD Capture" ^ + -c:v libx264 -preset ultrafast -tune zerolatency ^ + -profile:v baseline -pix_fmt yuv420p ^ + -b:v 4000k -maxrate 4000k -bufsize 8000k ^ + -g 30 ^ + -f flv rtmp://192.168.1.100/hdmi +``` + +### 步骤6:客户端观看 + +在浏览器中直接访问: +``` +http://192.168.1.100:8889/hdmi +``` + +MediaMTX 会返回内置的 WebRTC 播放页面,浏览器会自动播放HDMI信号。 + ## 核心文件结构(统一放在服务器D:\ScreenCast) ```