{"id":50882915,"url":"https://github.com/vcode-sh/vibe-player","last_synced_at":"2026-06-15T14:30:54.398Z","repository":{"id":363994912,"uuid":"1263209167","full_name":"vcode-sh/vibe-player","owner":"vcode-sh","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-09T15:27:38.000Z","size":536,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T08:34:04.987Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vcode-sh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":"vcode-sh"}},"created_at":"2026-06-08T18:21:05.000Z","updated_at":"2026-06-09T15:30:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vcode-sh/vibe-player","commit_stats":null,"previous_names":["vcode-sh/vibe-player"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vcode-sh/vibe-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcode-sh%2Fvibe-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcode-sh%2Fvibe-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcode-sh%2Fvibe-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcode-sh%2Fvibe-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vcode-sh","download_url":"https://codeload.github.com/vcode-sh/vibe-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcode-sh%2Fvibe-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34367692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2026-06-15T14:30:53.382Z","updated_at":"2026-06-15T14:30:54.387Z","avatar_url":"https://github.com/vcode-sh.png","language":"TypeScript","funding_links":["https://github.com/sponsors/vcode-sh"],"categories":[],"sub_categories":[],"readme":"# Vibe Player\n\n[![npm](https://img.shields.io/npm/v/vibe-player?style=flat-square)](https://www.npmjs.com/package/vibe-player)\n[![license](https://img.shields.io/npm/l/vibe-player?style=flat-square)](./LICENSE)\n[![React](https://img.shields.io/badge/react-19-61dafb?style=flat-square\u0026logo=react\u0026logoColor=111)](https://react.dev/)\n[![Sponsor vcode-sh](https://img.shields.io/badge/sponsor-vcode--sh-ea4aaa?style=flat-square\u0026logo=github-sponsors\u0026logoColor=white)](https://github.com/sponsors/vcode-sh)\n\nVideo players are easy, right up until they are not.\n\n`vibe-player` is a cinematic React player package for teams that\nwant polished playback without inheriting someone else's product app. Files,\nHLS, YouTube iframe playback, compliant YouTube external handoff, captions,\nkeyboard shortcuts, volume, quality, PiP, fullscreen, tooltips, and a clean\nheadless path all live behind one provider-agnostic API.\n\nBuilt by [Vibe Code](https://x.com/vcode_sh). Say hi at\n[hello@vcode.sh](mailto:hello@vcode.sh).\n\n## Install\n\n```bash\nnpm install vibe-player\npnpm add vibe-player\nbun add vibe-player\n```\n\n```tsx\nimport \"vibe-player/styles.css\";\nimport { VibePlayerStage } from \"vibe-player\";\n\nexport function Film() {\n  return (\n    \u003cVibePlayerStage\n      source={{\n        id: \"launch-film\",\n        manifestUrl: \"https://example.com/video/master.m3u8\",\n        posterUrl: \"https://example.com/video/poster.jpg\",\n        title: \"Launch film\",\n        type: \"hls\",\n      }}\n    /\u003e\n  );\n}\n```\n\n## What You Get\n\n- direct MP4/WebM playback through native video\n- adaptive HLS through managed `hls.js`, with native fallback\n- official YouTube iframe playback\n- compliant YouTube external handoff when iframe chrome is the wrong answer\n- package-owned controls, timeline, captions, volume, quality, PiP, fullscreen\n- keyboard shortcuts and real tooltips instead of browser-default mystery meat\n- exported controller, volume, and quality helpers for custom/headless UI\n- ambient preview primitives and a neutral cinematic skin\n- media delivery audit CLI for catching bad MP4/CDN/CORS decisions early\n\n## Docs\n\n- [Usage Guide](./docs/usage.md): setup, sources, autoplay, audio, captions,\n  headless controls, demo, and media audit.\n- [Integration Guide](./docs/integration.md): app contract, media rules,\n  CORS, hooks, and replacement checklist.\n- [Media Delivery Audit](./docs/media-delivery.md): CLI output, CI mode,\n  rollout decisions, CORS credentials, and size policy.\n- [Contributing](./CONTRIBUTING.md): repo rules, PR shape, tests, and API\n  changes.\n\n## Local Demo\n\n```bash\nbun run demo:vite\nbun run demo:vite:packaged\n```\n\nThe demo exercises file, HLS, YouTube iframe, and YouTube external handoff\nmodes through the real package player. No pretend product shell required.\n\n## Media Audit\n\n```bash\nnpx --package vibe-player vibe-player-media-audit https://cdn.example.com/video.mp4 --origin https://app.example.com\n```\n\nUse this before blaming the player for a slow, frozen, non-faststart, CORS-bent\nMP4. The CLI checks range delivery, MP4 `moov`/`mdat` ordering, CORS, size, and\ndirect-file rollout readiness.\n\n## Sponsor\n\nIf Vibe Player saves you from writing this stack again, consider sponsoring\nVibe Code: [github.com/sponsors/vcode-sh](https://github.com/sponsors/vcode-sh)\n\n## License\n\nApache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcode-sh%2Fvibe-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvcode-sh%2Fvibe-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcode-sh%2Fvibe-player/lists"}