DLNA 视频投屏
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_cbd28848/video-cast。
技能介绍
解决什么问题
本地视频文件想投到客厅电视或投影仪上播放,大多数人会找客户端应用或依赖厂商自带的投屏入口。问题是这些方案通常绑定特定平台,换了设备、换了系统就得重新找工具。这个技能直接实现了 DLNA/UPnP 协议的客户端侧:探测局域网里的渲染器,把本机视频的播放权推送过去,让电视自己去拉流。
关键是整个过程不需要改变你的文件位置,也不需要你手动启动任何媒体服务器——只要设备支持 AVTransport 服务,就能接收推送。
工作方式
整个投屏流程分四个阶段:
设备发现:通过 SSDP 协议向局域网广播搜索请求,等待 DLNA 渲染器回应。默认扫描 ssdp:all,若找不到设备可手动扩大范围或延长超时。
媒体服务启动:在投屏命令执行后,本机会启动一个常驻 HTTP 媒体服务,负责向目标设备提供媒体 URL。服务生命周期跟投屏会话绑定——control stop 时会自动清理。
直投或转码:根据文件扩展名和编码自动判断。若文件是 H.264/MP4 等兼容格式,直接将媒体 URL 推给设备,设备通过 HTTP Range 请求拉流,支持拖拽进度。遇到 webm、wmv、flv、rmvb 等格式,或视频编码为 VP9/AV1/VC1 时,自动调用 ffmpeg 实时转码为 H.264+AAC 的 MPEG-TS 流再推送。
播放控制:通过 UPnP AVTransport 协议向设备发送 Pause、Play、Seek、SetVolume 等指令,命令独立于投屏进程,不依赖 cast 进程保持运行。
适用边界
平台限制:仅支持 macOS 和 Linux。脚本使用了 os.kill、pkill、start_new_session 等 Unix 系统调用,Windows 不可用。
转码依赖:直投不需要 ffmpeg,转码时必须。如果系统没装 ffmpeg,脚本会警告但不中断,只是无法处理不兼容格式。
网络要求:电脑和目标设备必须在同一局域网。macOS 首次运行可能弹出防火墙入站连接询问,需要手动允许。
设备限制:若设备只支持 DMP(媒体服务器)模式而不接受推送,投屏会失败。这种情况下需要按排障文档用 gerbera 架设独立媒体服务器,让设备主动浏览本机共享。
使用场景
- 本地下载了 MKV 电影想投到客厅电视,但设备不识别 VP9 编码,需要自动转码后播放。
- 正在客厅用投影仪播放本地视频,需要从沙发上用语音命令暂停、跳进度或调节音量。
- 局域网里同时有智能电视和投影仪两台 DLNA 设备,需要指定其中一台进行投屏。
- 想知道刚才投屏的视频播到哪了,或者查看最近几次的投屏历史记录。
适合人员
- 有大量本地视频收藏、希望绕过厂商客户端直接投到电视的影音爱好者。
- 在局域网环境用投影仪做演示,需要对设备说人话就能控制播放的演讲者。
- 习惯用自然语言让AI助手完成操作、不想记命令行的AI工具用户。
- 需要在 macOS/Linux 上搭建自动化投屏脚本、依赖 UPnP 协议的开发者。