{"id":35077004,"url":"https://github.com/netcan/video-player","last_synced_at":"2026-05-18T13:36:57.606Z","repository":{"id":320041290,"uuid":"1080549874","full_name":"netcan/video-player","owner":"netcan","description":"简易网页播放器示例，自动解析 HLS (m3u8) 多码率流，提供画质切换，兼容 HEVC/HDR 以及 iPhone Safari 原生播放。本项目由 AI 助手（ChatGPT，Codex 模式）独立开发构建，包含 UI、播放器逻辑与文档内容。","archived":false,"fork":false,"pushed_at":"2025-10-22T12:54:54.000Z","size":107,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-29T02:55:42.266Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://zhiyb.me/hls/nvp/?key=tingfm_58","language":"JavaScript","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/netcan.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-21T14:22:39.000Z","updated_at":"2025-10-22T12:56:33.000Z","dependencies_parsed_at":"2025-10-21T17:11:42.427Z","dependency_job_id":"296733d5-8fec-4a1b-9aa6-97454e600c2a","html_url":"https://github.com/netcan/video-player","commit_stats":null,"previous_names":["netcan/video-player"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/netcan/video-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netcan%2Fvideo-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netcan%2Fvideo-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netcan%2Fvideo-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netcan%2Fvideo-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netcan","download_url":"https://codeload.github.com/netcan/video-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netcan%2Fvideo-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33179859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-12-27T12:14:51.344Z","updated_at":"2026-05-18T13:36:57.601Z","avatar_url":"https://github.com/netcan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 视频流播放器\n\n简易网页播放器示例，自动解析 HLS (m3u8) 多码率流，提供画质切换，兼容 HEVC/HDR 以及 iPhone Safari 原生播放。\n\n在线演示：https://zhiyb.me/hls/nvp/?key=tingfm_58\n\n\u003e 本项目由 AI 助手（ChatGPT，Codex 模式）独立开发构建，包含 UI、播放器逻辑与文档内容。\n\n## 功能\n- 自动抓取播放列表的码率、分辨率、HDR/HEVC 信息，生成画质选项。\n- `hls.js`（浏览器支持 MSE 时）和 Safari 原生 HLS 双模式。\n- 手动切换画质或保持自动自适应。\n- 重新载入按钮，便于调试流。\n- 页面内可输入自定义 m3u8 地址，并可一键切换是否走本地代理。\n- 纯音频流会自动尝试匹配同名图片作为封面（例如 `*.m3u8` → `*.png` 或 `hls_fm` → `hls_data`）。\n- 支持通过 URL 参数 `?src=` 指定自定义流地址。\n- 若播放源未配置 CORS，播放器会提示并退回“自动画质”模式，仍可正常播放。\n\n## 使用方式\n1. 启动内置服务器（同时提供静态文件与 CORS 代理）：\n   ```bash\n   node server.js\n   ```\n   默认监听 `http://localhost:3000`。\n2. 浏览器访问 `http://localhost:3000`，即可播放默认 HEVC/HDR 示例流。\n3. 支持两种输入方式：\n   - **直接粘贴 m3u8 地址**：点击“播放”即可加载。\n   - **仅输入 key（如 `tingfm_58`）**：播放器会按顺序尝试 `-hevc`, `hls_ffmpeg`, `hls_data`, `hls_fm` 四类地址，并设置 `https://zhiyb.me/hls_data/$key.png` 为封面。若检测到 HEVC，会额外提供 SDR 选项。\n4. 播放源设置在移动端默认折叠，可展开卡片后编辑；桌面端默认展开。\n5. 页面上的“流类型”下拉框会列出可用源（音频、数据源等），HDR/SDR 画质会直接出现在播放器画质选择里。\n6. 底部控件提供“重新载入”与“宽屏”按钮；“宽屏”会将播放器拉伸至整页宽度，再次点击恢复。\n7. 仍可通过地址栏参数 `?src=` 指定初始流或使用 `?key=` 指定初始 key；若需禁用代理，在地址栏或表单里取消勾选，或加 `\u0026proxy=0`。\n\n### Key 模式规则\n当输入框内容匹配 `^[A-Za-z0-9_-]+$` 时，会启用 key 模式并按照以下逻辑执行：\n1. 依次探测并记录可用的播放源：\n   - `https://zhiyb.me/hls_ffmpeg/${key}-hevc.m3u8`\n   - `https://zhiyb.me/hls_ffmpeg/${key}.m3u8`\n   - `https://zhiyb.me/hls_data/${key}.m3u8`\n   - `https://zhiyb.me/hls_fm/${key}.m3u8`\n2. 任意源可访问即加入“流类型”下拉框；若检测到 HEVC/SDR 组合，会出现“HDR (HEVC)”与“SDR (AVC)”选项方便切换。\n3. 封面图片默认从 `https://zhiyb.me/hls_data/${key}.png` 获取，若代理开启则自动走 `/proxy/` 以解决 CORS；纯音频流会保持方形布局并继续尝试同名 `.jpg/.jpeg/.webp`。\n4. 地址栏会同步更新 `?key=...` 和 `?variant=` 参数，刷新后可直接恢复同一 key 与流类型。\n\n## 跨域说明\n- 默认情况下，所有非同源的 `m3u8` 流和分片请求都会通过 `/proxy/...` 转发，自动带上允许跨域的响应头，解决 Chrome/Edge 的 CORS 限制。\n- 在支持 HEVC/HDR 的 Safari（含 iPhone/iPad）上，即使不使用代理也能播放；如果想强制直连，可加 `proxy=0`。\n- 若目标流本身提供完整的 CORS 头，也可选择不代理以减少跳转。\n\n## 测试说明\n- 推荐在支持 HEVC/HDR 的 Safari（特别是 iPhone 或 Apple Silicon Mac）验证效果。\n- 在 Chrome/Edge 等浏览器中，会使用 `hls.js`，仅能播放非 HEVC 轨道；若播放失败，请切换至 Safari。\n- 网络断开或媒体错误时，播放器会在状态栏提示，可通过“重新载入”按钮恢复。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetcan%2Fvideo-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetcan%2Fvideo-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetcan%2Fvideo-player/lists"}