liyafe1997
V2EX  ›  Windows

用 AI 搓了个通过 DLNA 协议投屏的小工具

  •  
  •   liyafe1997 · Jul 22 · 2487 views
    This topic created in 102 days ago, the information mentioned may be changed or developed.

    img

    https://github.com/liyafe1997/dlna-screen-cast

    这个需求源自父母日常习惯在摆在茶几的电脑上找各种视频看,包括但不限于网页上各种搜 D 版电影电视剧,各种体育赛事直播,迅雷下种子,本地视频,微信公众号/别人发的各种视频等等,然后经常问我这个能不能放到电视上看

    现在电视应该都是有支持 Miracast 、DLNA 、AirPlay 等各种投屏协议的,Miracast 对设备要求太严,老一点的笔记本/无线网卡/电视不兼容都不行,反正父母的笔记本的 Windows 搜不到电视。

    于是就打起了 DLNA 的主意,发现 Windows 下居然没有类似的工具,即利用 DLNA 来镜像整个屏幕/桌面。一般 DLNA 都是用来播放媒体文件的( App 投屏就是走的 DLNA ,把媒体地址直接扔给电视播放)

    思路很简单,用 Windows.Graphics.Capture 获取屏幕画面,然后用 ffmpeg 编码成 H264 ,通过 HTTP 提供 ts 视频流(开个 http server ),通过 DLNA 把局域网 HTTP 地址扔给电视( DLNA Receiver )播放。然后用 Claude Code (Fable 5) 和 Codex (GPT5.6-Sol) 落地了这个项目,我几乎一行代码没写。

    缺点是延迟比较大,不过对于看视频来说影响不大。

    我是在 ARM64 下开发的,所以还 build 了 target arm64 的包,算是给 WoA 生态做出一点微小的贡献(很惭愧

    其实 x64 版在 WoA 下能完美转译运行的(这个 ARM64 版就目前而言几乎纯粹强迫症选项/贡献 WoA 生态作用了),一开始都是 build x64 来 debug ,哪怕我的开发机是 ARM64 。然后视频编码基本都是用的 GPU ,也不涉及太多 CPU 负载和性能问题,所以纠结了好一会到底要不要 target ARM64 。发现 Codex 还有两张月底到期的重置卡没用,于是就直接让 AI 帮适配 ARM64 了🤣

    4 replies  •  2026-10-16 22:01:29 +08:00
    zhangli2946
        1
    zhangli2946  
       Jul 23
    投屏有广告, 投屏的内容受限。 是我的痛点。
    有些站 投出一次,中断之后就再也不能投屏 除非重启电视
    vin2ex
        2
    vin2ex  
       Oct 15
    和你初衷差不多,想给家里老人投屏用,试了几个安卓软件,都不太满意,电视老设备只支持 DLAN ,DLNAScreenCast 连接设备很快,输出稳定。今天才知道竟然是 AI ,作者真牛来!
    目前有个问题,我用 win10 专业版投屏没问题,但家里投屏的是小主机,只能装 win10 LTSC 精简版,DLAN 设备可以搜到,测试电视功能可以,开始投放就不行了,给了报错信息:
    会话状态日志
    Desktop streaming did not complete. Native media operation failed (-4): Windows media APl failure: t (HRESULT-2147467262).
    我觉得可能是 win10 LTSC 精简版可能是少了什么系统文件,打开 SSDP 、UPnP 、media share 、Function Discovery 服务都试过了,没啥用。然后用 DISM 修复系统文件,还是没用。今天刚下了源码,看看能不能解决。
    liyafe1997
        3
    liyafe1997  
    OP
       Oct 16
    @vin2ex 检查你系统的 H264 编码器和 Windows Media 组件是否正常,包括 Windows Media Player (旧的那个,不是 UWP 那个)。
    vin2ex
        4
    vin2ex  
       Oct 16 via Android
    @liyafe1997 好的,我去检查一下,应该和编码器、组件有关,谢谢你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2334 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:36 · PVG 23:36 · LAX 07:36 · JFK 10:36
    ♥ Do have faith in what you're doing.