{"id":17502627,"url":"https://github.com/zanjie1999/medisplay","last_synced_at":"2025-04-12T21:28:50.593Z","repository":{"id":258461735,"uuid":"868974653","full_name":"zanjie1999/meDisplay","owner":"zanjie1999","description":"使用任何设备(浏览器)作为mac的副屏(随航) 将Android平板用作Mac的第二台显示器 还能在Win和Linux镜像屏幕","archived":false,"fork":false,"pushed_at":"2025-03-21T09:35:34.000Z","size":80,"stargazers_count":289,"open_issues_count":1,"forks_count":22,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-04T03:14:13.317Z","etag":null,"topics":["display","ffmpeg","http-server","linux","macos","streaming","windows"],"latest_commit_sha":null,"homepage":"https://www.bilibili.com/video/BV1Qf25YQEj4/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zanjie1999.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-07T14:01:10.000Z","updated_at":"2025-04-02T14:12:24.000Z","dependencies_parsed_at":"2024-12-04T14:51:26.818Z","dependency_job_id":"81c7e87d-9c41-40d5-b1ad-a2563b0583f5","html_url":"https://github.com/zanjie1999/meDisplay","commit_stats":{"total_commits":32,"total_committers":1,"mean_commits":32.0,"dds":0.0,"last_synced_commit":"9a359beb53ebc3a731a58af8a82c981a451cd7e6"},"previous_names":["zanjie1999/medisplay"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zanjie1999%2FmeDisplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zanjie1999%2FmeDisplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zanjie1999%2FmeDisplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zanjie1999%2FmeDisplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zanjie1999","download_url":"https://codeload.github.com/zanjie1999/meDisplay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248634049,"owners_count":21136969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["display","ffmpeg","http-server","linux","macos","streaming","windows"],"created_at":"2024-10-19T21:14:41.833Z","updated_at":"2025-04-12T21:28:50.568Z","avatar_url":"https://github.com/zanjie1999.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 咩Display\n使用任何设备(只要有浏览器)，作为mac的副屏(实现Apple官方随航的功能)   \n主要是为了实现 **将Android平板用作Mac的第二台显示器** ，实现类似于Windows端SpaceDesk的功能 \n\n基于之前手搓的http服务 [httpRandomMusic](https://github.com/zanjie1999/httpRandomMusic) ，此项目实现了ffmpeg实时转码音频，  \n如今本项目，咩咩用了一晚上的时间又手搓实现了实时转码视频\n\n目前支持 `mjpg` `vp8` `h264` `hevc` 的编码模式 \n\n在浏览器进行3K 60hz串流时，使用mjpg的延迟低至100ms，vp8模式下1s左右，h264和h265则有3s延迟(降低分辨率到1920时为1s)\n当分辨率设置为1920时，都能达到1秒内，默认分辨率限制为1920，可以自行修改 \n\n在3.0开始支持了Windows和Linux(x11)的下屏幕镜像的功能\n在4.0开始支持了自动旋转屏幕(纯css实现)\n\n## 如何使用\n1. 首先你得有一台mac电脑，黑的白的都没问题，\n    依赖 `ffmpeg` 建议使用 `brew` 进行安装  \n    在终端输入:  \n    ```\n    brew install ffmpeg\n    ```\n    如果你连 `brew` 这个命令都没有，那请参考他的文档，或者百度一下吧  \n    https://brew.sh/zh-cn/\n\n2. 点击右上角绿色的按钮下载本程序，并且双击解压并放在你喜欢的地方\n\n3. 插入一个 HDMI诱骗器 或者用 DeskPad（需要macOS13）或 BetterDummy（支持更老的系统，免费版功能足够了） 虚拟一个显示器，如果你需要镜像显示器则忽略这一步\n\n4. 打开终端，启动服务：  \n    ```\n    python3 meDisplay.py\n    ```  \n    或者输入 `python3` 空格 后吧程序本身拖进来，然后按回车\n\n5. 使用你想用来做副屏的设备，比如Android平板，另一台电脑的浏览器打开  \n    `http://你电脑的ip:65532`  \n    比如  \n    `http://192.168.1.223:65532`\n    然后点击选择需要显示的显示器，点击画面可以切换全屏  \n    **请注意，如果使用非mjpg模式，因为浏览器限制，可能需要从主页点击进入才会自动播放**  \n    如果打不开，请查看输出的提示或关闭防火墙（Win设置成专用网络就行）  \n    **如果没画面，请确定你在设置授权了你的终端屏幕录制权限（首次系统会弹出窗口指引你授权）**  \n\n## 进阶说明\n你可以用文本编辑器打开文件编辑设置，都有注释  \n视频流的地址为  \n`http://你电脑的ip:65532/v/方括号中的数字`  \n比如  \n`http://sparkle-itx:65532/v/2`  \n或者指定编码类型，比如  \n`http://sparkle-itx:65532/hevc/2`   \n其他请举一反三，可以使用任意视频播放器的\"打开url\"直接播放\n\n### Android有线\n启动服务后，运行这条命令进行端口转发\n```\nadb reverse tcp:65532 tcp:65532\n```\n如果你没有adb，这样安装\n```\nbrew install --cask android-platform-tools\n```\n这样可以直接在设备的浏览器上打开 http://127.0.0.1:65532 来访问电脑上的服务  \n请注意，如果你路由的性能足够牛逼，延迟可能会比有线adb端口转发还低，比如这个133ms\n![](https://img.picui.cn/free/2024/10/09/670641a22896d.jpg)\n\n\n\n## 功能实现情况\n* [ ] 额外虚拟一个显示器\n* [x] 在 浏览器 使用mjpg编码进行串流\n* [x] 在 浏览器 使用h264编码进行串流\n* [x] 在 浏览器 使用hevc编码进行串流\n* [x] 在 浏览器 使用vp8编码进行串流\n* [x] 在 视频播放器 中进行串流\n* [ ] mjpg动态码率\n* [ ] 降低使用hevc/h264进行串流在浏览器中的延迟\n* [x] 适配Safari/FireFox\n* [ ] Safari中hevc/h264/vp8模式的支持\n\n\n\n### 协议 咩License\n使用此项目视为您已阅读并同意遵守 [此LICENSE](https://github.com/zanjie1999/LICENSE)   \nUsing this project is deemed to indicate that you have read and agreed to abide by [this LICENSE](https://github.com/zanjie1999/LICENSE)   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzanjie1999%2Fmedisplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzanjie1999%2Fmedisplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzanjie1999%2Fmedisplay/lists"}