使用C# VLC.DOTNET.FORMS实现PC摄像头推流到Android无法接收问题求助
问题排查及修复方案
你代码里主要存在3个核心错误,按优先级修复即可:
- 1. VLC推流参数语法错误
你写的:sout =#transcode里sout和=之间多了无效空格,VLC无法正确识别推流配置,这是最核心的错误。 - 2. HTTP输出配置重复嵌套
你在http{}里又嵌套了一层access=http{},属于无效的冗余配置,会导致推流端口监听异常。 - 3. 端口权限未放行
Windows防火墙默认会拦截8080端口的入站请求,需先手动放行TCP 8080端口的入站规则,同局域网的安卓设备才能访问到推流地址。
修正后的核心代码
private void vlcServer() { var options = new string[] { ":sout=#transcode{vcodec=MJPG,vb=800,fps=15,scale=1,width=800,height=600,acodec=none}:duplicate{dst=http{mux=mpjpeg,dst=:8080/,mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},dst=display}", ":sout-keep" }; // 可先在VLC桌面端打开捕获设备复制正确的摄像头名称,避免设备名匹配失败 string optVideo = @"dshow://:dshow-vdev=Intel(R) AVStream Camera"; // 你已经在转码配置里禁用了音频,无需额外传入音频参数 vlcControl1.Play(optVideo, options); }
验证步骤
- 代码修复后先运行服务端,在本地PC的浏览器输入
http://127.0.0.1:8080,确认可以正常显示摄像头画面,代表推流服务正常 - 查看PC的局域网IP(比如192.168.3.25),保证安卓设备和PC连接同一WIFI,安卓端VLC播放器输入
http://[PC局域网IP]:8080即可拉取到流 - 如果本地访问正常、跨设备访问失败,可临时关闭Windows Defender防火墙测试,确认是防火墙拦截后添加对应端口的入站规则即可
内容的提问来源于stack exchange,提问作者Yao Chang
相关产品推荐
相关产品推荐

