# MediaCast **Repository Path**: yqsphp/MediaCast ## Basic Information - **Project Name**: MediaCast - **Description**: MediaCast(多媒体投屏 v1.4.0) 是一款基于 C# / WinForms(.NET Framework 4.7.2) 开发的本地媒体投屏工具, 支持将电脑上的音视频文件通过 DLNA/UPnP 协议 投屏到智能电视、投影仪、音响等局域网设备,无需双端安装客户端。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.yqsphp.top/home - **GVP Project**: No ## Statistics - **Stars**: 46 - **Forks**: 14 - **Created**: 2026-01-12 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: multimedia **Tags**: 投屏, window应用程序, Cpp ## README # 媒体投屏器 (MediaCast) ## 程序由来 本来想着在网上找个能在 Windows 客户运行的媒体投屏软件来把电脑上的媒体投屏到投影仪上, 但找了多款都是必须要双端安装,还需要验证码等,点对点投屏,无语。安卓端却有一堆投屏软件。 然后自己通过 AI 辅助摸索着写了这个程序。自己也足够用了!

MediaCast 程序预览

## 声明 该项目本着学习目的开源。请勿用于非法用途,请勿用于货币交易。一切后果由使用者承担。转载请注明,欢迎 fork、issues。 ## 简介 **MediaCast(多媒体投屏 v1.4.0)** 是一款基于 **C# / WinForms(.NET Framework 4.7.2)** 开发的本地媒体投屏工具, 支持将电脑上的音视频文件通过 **DLNA/UPnP 协议** 投屏到智能电视、投影仪、音响等局域网设备,无需双端安装客户端。 ### 主要特点 - 🎯 **一键投屏**:选择文件 → 选择设备 → 开始投屏,三步完成 - 📱 **设备自动发现**:基于 SSDP 协议智能扫描局域网内的 DLNA 投屏设备,每 15 秒自动刷新 - ⚡ **高性能传输**:内置 HTTP 文件服务器流式传输媒体,支持断点续传(HTTP Range) - 🎨 **原生自绘 UI**:纯 GDI+ 自绘深色主题界面,圆角按钮、无第三方 UI 依赖 ## 功能特性 ### 核心功能 | 功能 | 描述 | |------|------| | 设备发现 | SSDP 自动扫描局域网内 DLNA/UPnP 媒体渲染设备,可手动刷新 | | 文件浏览 | 支持单文件浏览与文件夹批量加载(记忆上次目录,启动自动恢复) | | 投屏控制 | 开始投屏、暂停/恢复、结束投屏 | | 播放速度 | 支持 0.5x ~ 8x 多档倍速(通过 DLNA SetSpeed) | | 音量控制 | 音量滑块调节、一键静音切换(SOAP SetVolume/SetMute) | | 多格式支持 | 内置 80+ 常见音视频扩展名过滤器(mp4/avi/mkv/mp3/flac 等) | ### 支持的媒体格式(部分) 视频:mp4、avi、mkv、mov、wmv、flv、webm、mpeg、m4v、ts、m2ts、vob、rmvb 等 音频:mp3、wav、flac、m4a、aac、ogg、wma、ape、opus、midi 等 ### 系统要求 - **操作系统**:Windows 7 SP1 / 10 / 11 - **运行环境**:.NET Framework 4.7.2 或更高版本 - **网络要求**:电脑与投屏设备需处于同一局域网 ## 使用说明 1. 点击 **浏览文件** 或 **浏览文件夹** 选择要投屏的媒体(文件夹模式支持启动时自动恢复上次目录) 2. 等待左侧 **设备列表** 自动发现设备,或点击 **刷新设备** 手动扫描 3. 选中目标设备,点击 **开始投屏** 4. 通过下方控制区进行 **暂停 / 结束投屏、倍速、音量** 调节 > 提示:程序内置 HTTP 文件服务器,默认端口 `19735`,如被占用会自动尝试后续端口(最多 10 次)。 ## 技术架构 ### 使用技术 | 技术 | 用途 | |------|------| | C# / WinForms | 桌面 UI 框架 | | .NET Framework 4.7.2 | 目标框架 | | DLNA / UPnP | 设备发现与控制协议 | | SSDP(UDP 组播) | 局域网设备自动发现 | | SOAP(XML) | 向设备发送 AVTransport 控制指令 | | HTTP / TCP (TcpListener) | 内置文件服务器,媒体流式传输 | | GDI+ 自绘 | 深色主题、圆角控件、OwnerDraw 列表 | ### 项目结构 ``` MediaCast/ ├── MediaCast.sln # 解决方案 └── MediaCast/ ├── MainForm.cs # 主窗体(UI 布局、交互逻辑) ├── Program.cs # 程序入口(HTTP 连接池全局配置) ├── Core/ │ ├── DLNAController.cs # DLNA 控制:SetURI/Play/Pause/Stop/音量 │ ├── DeviceDiscovery.cs # SSDP 搜索与设备描述解析 │ ├── DeviceDiscoveryManager.cs# 设备发现调度(15s 自动扫描、防重入) │ ├── DeviceList.cs # 设备列表缓存 │ ├── HTTPFileServer.cs # 内置 HTTP 文件服务器(Range 支持) │ ├── NetworkHelper.cs # 局域网 IP 获取 │ └── AppLogger.cs # 日志输出 └── UI/ ├── ThemeColors.cs # 主题色板 ├── DrawingHelper.cs # GDI+ 绘制辅助(圆角路径等) ├── StyledButton.cs # 自绘按钮 ├── StyledComboBox.cs # 自绘下拉框 └── DeviceListItem.cs # 设备列表项模型 ``` ## 构建与运行 ```bash # 克隆仓库 git clone https://gitee.com/yqsphp/MediaCast.git cd MediaCast # 使用 Visual Studio 2017+ 打开 MediaCast.sln,选择 Release 编译 # 或命令行构建 dotnet build MediaCast/MediaCast.csproj -c Release ``` 编译产物位于 `MediaCast/bin/Release/`,直接运行 `MediaCast.exe` 即可。