{"id":19152284,"url":"https://github.com/autokaka/rplayer","last_synced_at":"2025-05-07T05:45:08.435Z","repository":{"id":51127139,"uuid":"357974825","full_name":"Autokaka/rplayer","owner":"Autokaka","description":"Lightweight Flutter RTSP low latency video player. Use DartFFI rather than MethodChannel.","archived":false,"fork":false,"pushed_at":"2022-05-02T17:57:42.000Z","size":109387,"stargazers_count":20,"open_issues_count":4,"forks_count":13,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-31T06:51:11.458Z","etag":null,"topics":["audio","dart","dartffi","ffmpeg","flutter","player","rtsp","video"],"latest_commit_sha":null,"homepage":"https://github.com/Autokaka/rplayer","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Autokaka.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}},"created_at":"2021-04-14T16:40:10.000Z","updated_at":"2025-01-14T08:44:09.000Z","dependencies_parsed_at":"2022-09-03T13:41:14.194Z","dependency_job_id":null,"html_url":"https://github.com/Autokaka/rplayer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autokaka%2Frplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autokaka%2Frplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autokaka%2Frplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autokaka%2Frplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Autokaka","download_url":"https://codeload.github.com/Autokaka/rplayer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249738800,"owners_count":21318504,"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":["audio","dart","dartffi","ffmpeg","flutter","player","rtsp","video"],"created_at":"2024-11-09T08:17:21.134Z","updated_at":"2025-04-19T16:32:30.714Z","avatar_url":"https://github.com/Autokaka.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RPlayer\n\nFlutter RTSP low latency video player for Android TV only. This player is intended to use FFmpeg under the hood to decode RTSP streams and Android SurfaceView to draw in native code. If time permits, I'll try to use OpenGLES as its backend renderer and OpenSLES as its audio solution. For now I only achieved video decode part.\n\n## Minimal example\n\n```dart\n@override\nvoid initState() {\n  super.initState();\n  player.startPlayWhenReady('rtsp://admin:admin@192.168.1.102:8554/live');\n}\n\n@override\nWidget build(BuildContext context) {\n  return Scaffold(\n    appBar: AppBar(\n      title: const Text('RPlayer Video Test Page'),\n    ),\n    body: RPlayerView(\n      player: player,\n      width: MediaQuery.of(context).size.width,\n      height: 300,\n    ),\n  );\n}\n\n@override\nvoid dispose() {\n  player.dispose();\n  super.dispose();\n}\n```\n\n## Design\n\n### RPlayerConfig\n\nRPlayerConfig configures how videos will be played. You could only create a RPlayerConfig instance like this:\n\n```dart\nvar rplayerConfig = RPlayerConfig()\n  ..retryTimesOnDisconnect = 10\n  ..retryDelayInMilliseconds = 2000\n  ..preferHardcodec = 1;\n```\n\n- **retryTimesOnDisconnect**: Determine how many times the player will retry to connect when stream is closed.\n- **retryDelayInMilliseconds**: Determine how long (in milliseconds) before the player make next reconnection when stream is closed.\n- **preferHardcodec**: If set to `true`, the player will try to ask for a hardcodec first before playing video if ROM permits. If failed to allocate hardcodec, player will fallback to use a softcodec to play video.\n\n### RPlayerState\n\nRPlayerState exposes the inner state of RPlayer. The states are as follows:\n\n- **INIT**:\n- STOPPED:\n- BUFFERING:\n- PLAYING:\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautokaka%2Frplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautokaka%2Frplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautokaka%2Frplayer/lists"}