{"id":13908628,"url":"https://github.com/toshi0383/VideoPlayer","last_synced_at":"2025-07-18T07:31:54.921Z","repository":{"id":90996916,"uuid":"152085088","full_name":"toshi0383/VideoPlayer","owner":"toshi0383","description":"AVPlayer control and monitoring made easy (with Rx)","archived":false,"fork":false,"pushed_at":"2019-03-29T02:57:48.000Z","size":169,"stargazers_count":31,"open_issues_count":0,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T16:53:39.644Z","etag":null,"topics":["avplayer","rxswift","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/toshi0383.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}},"created_at":"2018-10-08T13:30:41.000Z","updated_at":"2023-09-01T04:27:26.000Z","dependencies_parsed_at":"2024-04-16T04:46:05.106Z","dependency_job_id":null,"html_url":"https://github.com/toshi0383/VideoPlayer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/toshi0383/VideoPlayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshi0383%2FVideoPlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshi0383%2FVideoPlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshi0383%2FVideoPlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshi0383%2FVideoPlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toshi0383","download_url":"https://codeload.github.com/toshi0383/VideoPlayer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toshi0383%2FVideoPlayer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265720619,"owners_count":23817276,"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":["avplayer","rxswift","swift"],"created_at":"2024-08-06T23:02:52.528Z","updated_at":"2025-07-18T07:31:54.590Z","avatar_url":"https://github.com/toshi0383.png","language":"Swift","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# VideoPlayer\n![Xcode](https://img.shields.io/badge/Xcode-10.0-brightgreen.svg)\n![Swift](https://img.shields.io/badge/Swift-4.2-brightgreen.svg)\n\nAVPlayer control made easy.\n\n![design](https://github.com/toshi0383/assets/blob/master/VideoPlayer/VideoPlayer-en.png?raw=true)\n\n```\nVideoPlayer\n- VideoPlayerControl\n- VideoPlayerMonitor\n```\n\n# Features (Including Example only features)\n\nwork in progress\n\n- [x] Play/Pause/Seek\n- [x] Background Playback\n- [x] Background AirPlay\n- [x] Built-in player MonitorView for debugging\n- [x] allows recording or not (defaults to no)\n- [x] fundamental player state observables (e.g. rate, periodicTime, duration..)\n- [x] Timed Metadata (MPEG2 transport stream only)\n- [ ] any loading state observable\n\nDemo code in Example.app\n\n- [x] In-Playlist Timed Metadata\n- [ ] Cross-viewcontroller AirPlay (will be in Example soon)\n- [ ] Picture-in-Picture (will be in Example soon)\n\n# Usage\n## Initializing AVPlayer\nObserve `VideoPlayer.player: Single\u003cAVPlayer\u003e` to get AVPlayer instance.\n\nSee: [Example](Example/)\n\n## Monitor and Control state\n\nDo not write `player?.pause()` any more.\n\nSee: [Example](Example/)\n\n## Encrypted contents\n\n`VideoPlayerFactory` initializer accepts `AVAssetResourceLoaderDelegate`.\nSet your instance which handles `EXT-X-KEY` methods.\n\n## Handling Errors\nTBD\n\nSee: [Example](Example/)\n\n## Testing\n\nSee: [VideoPlayerTests](VideoPlayerTests/)\n\nYou can simulate player behavior by yourself to improve test coverage of your app.\n\n# Build Example\n1. Make sure your default `xcode-select -p` points at correct Xcode version. (Currently Xcode10.1)\n\n2. Run following\n   ```\n   carthage bootstrap --platform iOS\n   xcodegen\n   ```\n\n3. Open `Example.xcodeproj`\n\n# License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoshi0383%2FVideoPlayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoshi0383%2FVideoPlayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoshi0383%2FVideoPlayer/lists"}