{"id":18069140,"url":"https://github.com/arcticfox1919/vlc-flutter","last_synced_at":"2025-07-07T06:33:02.053Z","repository":{"id":43866568,"uuid":"333053447","full_name":"arcticfox1919/vlc-flutter","owner":"arcticfox1919","description":"Flutter plugin for vlc player","archived":false,"fork":false,"pushed_at":"2023-10-12T08:21:37.000Z","size":156,"stargazers_count":22,"open_issues_count":6,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-23T05:02:21.754Z","etag":null,"topics":["flutterplayer","libvlc","vlc"],"latest_commit_sha":null,"homepage":"","language":"Java","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/arcticfox1919.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,"zenodo":null}},"created_at":"2021-01-26T10:47:06.000Z","updated_at":"2024-07-17T08:20:42.000Z","dependencies_parsed_at":"2025-04-11T23:42:55.145Z","dependency_job_id":"6df15ba5-a950-4aee-b849-24db1f80b76c","html_url":"https://github.com/arcticfox1919/vlc-flutter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arcticfox1919/vlc-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcticfox1919%2Fvlc-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcticfox1919%2Fvlc-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcticfox1919%2Fvlc-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcticfox1919%2Fvlc-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arcticfox1919","download_url":"https://codeload.github.com/arcticfox1919/vlc-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arcticfox1919%2Fvlc-flutter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264027585,"owners_count":23546102,"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":["flutterplayer","libvlc","vlc"],"created_at":"2024-10-31T08:09:25.596Z","updated_at":"2025-07-07T06:33:02.035Z","avatar_url":"https://github.com/arcticfox1919.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vlc-flutter\n\nThis is a Flutter wrapper plugin for libvlc.See their [website](https://www.videolan.org/).\n\nTodo:\n\n- [x]  Android\n- [x]  iOS\n\n\n\n## Usage\n\n```yaml\ndependencies:\n  vlc_flutter: ^0.0.2\n```\n\n\n```dart\nimport 'package:vlc_flutter/vlcplayer.dart';\n```\n\nCreate `VLCController`:\n\n```dart\n// \"-vvv\" option\n// print as detailed a log as possible for debugging purposes\nVLCController _controller = VLCController(args:[\"-vvv\"]);\n```\n\nCreate a view for playback:\n```dart\nAspectRatio(\n      aspectRatio: 16/9,\n      child: VLCVideoWidget(\n        controller: _controller,\n      ),\n    )\n```\n\nPlay video according to `uri`:\n```dart\nElevatedButton(\n    child: Text(\"play\"),\n    onPressed: () async {\n      await _controller.setDataSource(uri:\"rtmp://58.200.131.2:1935/livetv/natlgeo\");\n      _controller.play();\n    }),\n```\n\nOr just use the `play`:\n```dart\n_controller.play(uri:\"rtmp://58.200.131.2:1935/livetv/natlgeo\");\n```\n\nPlay local resources:\n```dart\n_controller.play(path:\"/sdcard/test/test.mp4\");\n```\n\nListening to the status of the player:\n\n```dart\n_controller.onPlayerState.listen((event) {\n  debugPrint(\"=*= $event =*=\");\n});\n```\n\n\n\nListening to player events:\n\n```dart\n_controller.onEvent.listen((event) {\n    if(event.type == EventType.PositionChanged){\n    \tdebugPrint(\"==[${event.positionChanged}]==\");\n    }\n});\n```\n\nAdd subtitles:\n\n```dart\n// Loading local subtitles\nawait _controller.addSlave(path: \"/sdcard/test/Test.srt\");\n// Set the position of the subtitles\n_controller.setVideoTitleDisplay(Position.Bottom, 1000);\n```\n\nRecorded video:\n\n```dart\n// Specify a directory and start recording\n_controller.startRecord(\"/sdcard/test/\");\n// Stop Recording\n_controller.stopRecord();\n```\n\nDon't forget to add network permissions to the `AndroidManifest.xml` to play network resources:\n\n```xml\n\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n```\n\nIf you need to record video, you may also need the following permissions:(These are dangerous permissions on Android 6.0 and above, so you may also need the [flutter_easy_permission](https://pub.dev/packages/flutter_easy_permission) plugin)\n\n```xml\n\u003cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /\u003e\n\u003cuses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e\n```\n\n\n\n## Example\n\n```dart\nclass _MyAppState extends State\u003cMyApp\u003e {\n  VLCController _controller = VLCController();\n\n  @override\n  void initState() {\n    super.initState();\n\n    _controller.onEvent.listen((event) {\n      if(event.type == EventType.PositionChanged){\n        debugPrint(\"==[${event.positionChanged}]==\");\n      }\n    });\n  }\n\n  @override\n  void dispose() {\n    _controller.dispose();\n    super.dispose();\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      home: Scaffold(\n        appBar: AppBar(\n          title: const Text('VLCPlayer Plugin example'),\n        ),\n        body: Column(\n          mainAxisSize: MainAxisSize.min,\n          children: [\n            AspectRatio(\n              aspectRatio: 16/9,\n              child: VLCVideoWidget(\n                controller: _controller,\n              ),\n            ),\n            Row(\n              mainAxisAlignment: MainAxisAlignment.spaceAround,\n              children: [\n                ElevatedButton(\n                    child: Text(\"play\"),\n                    onPressed: () async {\n                      await _controller.setDataSource(\n                          uri: \"rtmp://58.200.131.2:1935/livetv/natlgeo\");\n                      _controller.play();\n                    }),\n                ElevatedButton(\n                    child: Text(\"pause\"),\n                    onPressed: () {\n                      _controller.pause();\n                    }),\n                ElevatedButton(\n                    child: Text(\"stop\"),\n                    onPressed: () {\n                      _controller.stop();\n                    }),\n                ElevatedButton(\n                    child: Text(\"startRecord\"),\n                    onPressed: () {\n                      _controller.startRecord(\"/sdcard/test/\");\n                    }),\n\n                ElevatedButton(\n                    child: Text(\"stopRecord\"),\n                    onPressed: () {\n                      _controller.stopRecord();\n                    })\n              ],\n            )\n          ],\n        ),\n      ),\n    );\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcticfox1919%2Fvlc-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farcticfox1919%2Fvlc-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farcticfox1919%2Fvlc-flutter/lists"}