{"id":13549577,"url":"https://github.com/ko-htut/yoyo-player","last_synced_at":"2026-02-21T00:38:19.575Z","repository":{"id":41524746,"uuid":"282861339","full_name":"ko-htut/yoyo-player","owner":"ko-htut","description":"YoYo Video Player is a HLS(.m3u8) video player for flutter. ","archived":false,"fork":false,"pushed_at":"2024-12-27T02:26:14.000Z","size":7438,"stargazers_count":96,"open_issues_count":26,"forks_count":60,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T23:33:16.003Z","etag":null,"topics":["android","hls","ios","m3u8","subtitle","video-player","yoyo-player"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/yoyo_player","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ko-htut.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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}},"created_at":"2020-07-27T10:13:42.000Z","updated_at":"2025-02-21T01:15:43.000Z","dependencies_parsed_at":"2024-08-01T12:17:09.084Z","dependency_job_id":"c356ece8-74f6-46d7-bcd4-307930cb6254","html_url":"https://github.com/ko-htut/yoyo-player","commit_stats":{"total_commits":81,"total_committers":4,"mean_commits":20.25,"dds":0.0864197530864198,"last_synced_commit":"70eb77fb9f7402a81cfa86e0598ba79bdd755cad"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ko-htut/yoyo-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-htut%2Fyoyo-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-htut%2Fyoyo-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-htut%2Fyoyo-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-htut%2Fyoyo-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ko-htut","download_url":"https://codeload.github.com/ko-htut/yoyo-player/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ko-htut%2Fyoyo-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29668727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"ssl_error","status_checked_at":"2026-02-20T23:52:33.807Z","response_time":59,"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":["android","hls","ios","m3u8","subtitle","video-player","yoyo-player"],"created_at":"2024-08-01T12:01:23.182Z","updated_at":"2026-02-21T00:38:14.564Z","avatar_url":"https://github.com/ko-htut.png","language":"Dart","funding_links":["https://www.buymeacoffee.com/kohtut"],"categories":["Dart"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\r\n  \u003ca href=\"https://kohtut.dev/2020/08/05/yo-yo-player/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ko-htut/yoyo-player/master/yoyo_logo.png\" alt=\"KoHtut\"\u003e\u003c/a\u003e\r\n\u003c/h1\u003e\r\n\r\n# YoYo Video Player\r\n\r\nYoYo Video Player is a HLS(.m3u8) video player for flutter.\r\nThe [video_player](https://pub.dev/packages/yoyo_player) is a video player that allows you to select HLS video streaming by selecting the quality. YoYo Player wraps `video_player` under the hood and provides base architecture for developers to create their own set of UI and functionalities.\r\n\r\n![Pub Version (including pre-releases)](https://img.shields.io/pub/v/yoyo_player)  \r\n\r\n# Features\r\n\r\n* You can select multiple quality and open\r\n* On video tap play/pause, mute/unmute, or perform any action on video.\r\n* Auto hide controls.\r\n* (.m3u8) HLS Video Streaming Support\r\n\r\n## Install \u0026 Set up\r\n\r\n1. Add dependency, open the root directory `pubspec.yaml`File in`dependencies:`Add the following code below\r\n\r\n ```yaml\r\n yoyo_player: #latest\r\n ```\r\n\r\n2. Installation dependencies (please ignore if it has been installed automatically)\r\n\r\n```dart\r\n cd Project directory\r\n flutter packages get\r\n ```\r\n\r\n3. Introduce the library in the page\r\n\r\n```dart\r\nimport 'package:yoyo_player/yoyo_player.dart';\r\n```\r\n## Usage\r\n\r\nA simple usage example:\r\n\r\n```dart\r\n  YoYoPlayer(\r\n          aspectRatio: 16 / 9,\r\n          url:  \"\",\r\n          videoStyle: VideoStyle(),\r\n          videoLoadingStyle: VideoLoadingStyle(),\r\n  ),\r\n```\r\n\r\nChange Icon\r\n\r\n```dart\r\n videoStyle: VideoStyle(\r\n    play : Icon(Icons.play_arrow),\r\n    pause : Icon(Icons.pause),\r\n    fullscreen : Icon(Icon(Icons.fullscreen)),\r\n    forward : Icon(Icons.skip_next),\r\n    backward : Icon(Icons.skip_previous),\r\n )\r\n```\r\n\r\nChange Video Loading\r\n```dart\r\n   videoLoadingStyle: VideoLoadingStyle(loading : Center(child: Text(\"Loading video\")),\r\n```\r\n\r\nPlay With Subtitle\r\n```dart\r\n        body: YoYoPlayer(\r\n          aspectRatio: 16 / 9,\r\n          //url ( .m3u8 video streaming link )\r\n          //example ( url :\"https://sfux-ext.sfux.info/hls/chapter/105/1588724110/1588724110.m3u8\" )\r\n          //example ( url :\"https://player.vimeo.com/external/440218055.m3u8?s=7ec886b4db9c3a52e0e7f5f917ba7287685ef67f\u0026oauth2_token_id=1360367101\" )\r\n          url:  \" \",\r\n          videoStyle: VideoStyle(),\r\n          videoLoadingStyle: VideoLoadingStyle(\r\n            loading: Center(\r\n              child: Text(\"Loading video\"),\r\n            ),\r\n          ),\r\n        ),\r\n```\r\n\r\n# Player Option\r\n\r\n## Player\r\n\r\n| Attributes        | Type                | Description                                |\r\n|-------------------|---------------------|--------------------------------------------|\r\n| url               | String              | Video source  ( .m3u8 \u0026 File only)         |\r\n| videoStyle        | VideoStyle          | Video Player  style                        |\r\n| videoLoadingStyle | VideoLoadingStyle   | Video Loading Style                        |\r\n| aspectRatio       | double              | Video AspectRaitio [aspectRatio : 16 / 9 ] |\r\n| onfullscreen      | VideoCallback\u003cbool\u003e | video state fullscreen                     |\r\n| openingvideo      | VideoCallback\u003cbool\u003e | video type ( eg : mkv,mp4,hls)                    |\r\n\r\n\r\n## Player custom style (VideoStyle)\r\n\r\n| Attributes   | Type      | Description                         |\r\n|--------------|-----------|-------------------------------------|\r\n| play         | Widget    | You can use any Widget you want     |\r\n| pause        | Widget    | You can use any Widget you want     |\r\n| fullscreen   | Widget    | You can use any Widget you want     |\r\n| forward      | Widget    | You can use any Widget you want     |\r\n| backward     | Widget    | You can use any Widget you want     |\r\n| playedColor  | Color     | You can use any Icon style you want |\r\n| qualitystyle | TextStyle | You can use any Text style you want |\r\n| qashowstyle  | TextStyle | You can use any Text style you want |\r\n\r\n## Player Loading custom style (VideoStyle)\r\n\r\n| Attributes | Type   | Description                            |\r\n|------------|--------|----------------------------------------|\r\n| loading    | Widget | You can use any loading style you want |\r\n\r\n\u003c!-- ## Buy Me a Coffee\r\n\r\n\u003ca href=\"https://www.buymeacoffee.com/kohtut\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/arial-blue.png\" alt=\"Buy Me A Coffee\" style=\"height: 51px !important;width: 217px !important;\" \u003e\u003c/a\u003e --\u003e\r\n\r\n## How is it created ?\r\n  - The data in the source url (m3u8) is regex checked and the child m3u8 files are created and saved according to the respective rules.\r\n  - It starts creating child m3u8 files as soon as the video starts playing\r\n  - Each time a video is completed or the main url changes, child m3u8 files are checked and deleted.\r\n\r\n## The child m3u8 files are created as follows:\r\n - If viedo quality \r\n   yoyo[vido-quality].m3u8\r\n\r\n - If video quality \u0026 audio quality\r\n   yoyo[video-quality][audio-quality].m3u8\r\n\r\n## Support M3U8 \r\n - #EXT-X-MEDIA\r\n - #EXT-X-STREAM-INF(not for ios)\r\n\r\n## Player Screenshot\r\n| ![](https://raw.githubusercontent.com/ko-htut/yoyo-player/master/img/ss1.png) | ![](https://raw.githubusercontent.com/ko-htut/yoyo-player/master/img/ss2.png) |\r\n|:-----------------------------------------------------------------------------:|:-----------------------------------------------------------------------------:|\r\n| ![](https://raw.githubusercontent.com/ko-htut/yoyo-player/master/img/ss3.png) | ![](https://raw.githubusercontent.com/ko-htut/yoyo-player/master/img/ss4.png) |\r\n\r\n\r\n# Contributors \r\n- Min Si Thu\r\n- Ko Htut\r\n# MIT License\r\n\r\nCopyright (c) 2020 Ko Htut (Ko Min Than Htut)\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fko-htut%2Fyoyo-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fko-htut%2Fyoyo-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fko-htut%2Fyoyo-player/lists"}