{"id":18498027,"url":"https://github.com/apivideo/api.video-reactnative-uploader","last_synced_at":"2025-04-09T00:30:52.855Z","repository":{"id":43082461,"uuid":"401978414","full_name":"apivideo/api.video-reactnative-uploader","owner":"apivideo","description":"The official ReactNative video uploader for api.video ","archived":false,"fork":false,"pushed_at":"2025-01-28T10:51:07.000Z","size":3221,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T19:44:41.716Z","etag":null,"topics":["react-native","video","video-uploader"],"latest_commit_sha":null,"homepage":"https://api.video","language":"Kotlin","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/apivideo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2021-09-01T07:56:02.000Z","updated_at":"2025-02-25T09:23:11.000Z","dependencies_parsed_at":"2025-01-28T11:28:13.835Z","dependency_job_id":"6816b3f4-26f2-4482-9c12-34889202c88f","html_url":"https://github.com/apivideo/api.video-reactnative-uploader","commit_stats":{"total_commits":58,"total_committers":8,"mean_commits":7.25,"dds":"0.48275862068965514","last_synced_commit":"a3657a80718b7c965ca20c4857c48ee7f181669b"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-reactnative-uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-reactnative-uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-reactnative-uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-reactnative-uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apivideo","download_url":"https://codeload.github.com/apivideo/api.video-reactnative-uploader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247543611,"owners_count":20955865,"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":["react-native","video","video-uploader"],"created_at":"2024-11-06T13:37:13.456Z","updated_at":"2025-04-09T00:30:50.022Z","avatar_url":"https://github.com/apivideo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\u003cdocumentation_excluded\u003e--\u003e\n[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) \u0026nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-reactnative-uploader?style=social)](https://github.com/apivideo/api.video-reactnative-uploader) \u0026nbsp; [![badge](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fcommunity.api.video)](https://community.api.video)\n![](https://github.com/apivideo/.github/blob/main/assets/apivideo_banner.png)\n![npm](https://img.shields.io/npm/v/@api.video/react-native-video-uploader) ![ts](https://badgen.net/badge/-/TypeScript/blue?icon=typescript\u0026label)\n\n\u003ch1 align=\"center\"\u003eapi.video React Native video uploader module\u003c/h1\u003e\n\n[api.video](https://api.video) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n\n## Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Project description](#project-description)\n- [Getting started](#getting-started)\n  - [Installation](#installation)\n  - [Code sample](#code-sample)\n    - [Regular upload](#regular-upload)\n    - [Progressive upload](#progressive-upload)\n  - [Android](#android)\n    - [Permissions](#permissions)\n    - [Notifications](#notifications)\n- [Example](#example)\n- [Dependencies](#dependencies)\n- [FAQ](#faq)\n\n\u003c!--\u003c/documentation_excluded\u003e--\u003e\n\u003c!--\u003cdocumentation_only\u003e\n---\ntitle: api.video React Native video uploader\nmeta: \n  description: The official api.video React Native video uploader for api.video. [api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n---\n\n# api.video React Native video uploader\n\n[api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n\n\u003c/documentation_only\u003e--\u003e\n## Project description\n\nThis module is an easy way to upload video with delegated token to api.video\n\n## Getting started\n\n### Installation\n\n```sh\nnpm install @api.video/react-native-video-uploader\n```\n\nor\n\n```sh\nyarn add @api.video/react-native-video-uploader\n```\n\n### Code sample\n\n#### Regular upload\n\n```js\nimport ApiVideoUploader from '@api.video/react-native-video-uploader';\n\nApiVideoUploader.uploadWithUploadToken('YOUR_UPLOAD_TOKEN', 'path/to/my-video.mp4')\n  .then((value: Video) =\u003e {\n   // Manages success here\n  })\n  .catch((e: any) =\u003e {\n    // Manages error here\n  });\n```\n\n#### Progressive upload\n\nFor more details about progressive uploads, see the [progressive upload documentation](https://docs.api.video/vod/progressive-upload).\n\n```js\nimport ApiVideoUploader from '@api.video/react-native-video-uploader';\n\n(async () =\u003e {\n  const uploadSession = ApiVideoUploader.createProgressiveUploadSession({token: 'YOUR_UPLOAD_TOKEN'});\n  try {\n    await session.uploadPart(\"path/to/video.mp4.part1\");\n    await session.uploadPart(\"path/to/video.mp4.part2\");\n    // ...\n    const video = await session.uploadLastPart(\"path/to/video.mp4.partn\");\n    // ...\n  } catch(e: any) {\n    // Manages error here\n  }\n})();\n```\n\n### Android\n\n#### Permissions\n\nPermissions `android.permission.READ_MEDIA_VIDEO` (for API 33+) or `android.permission.READ_EXTERNAL_STORAGE` (for API \u003c 33) are in the library manifest and will be requested by this library at runtime. You don't have to request them in your application.\n\nOn Android 33+, the upload comes with a notification to show the progress. So if your application targets Android 33+, you might request `android.permission.POST_NOTIFICATIONS` permission at runtime.\n\nWhen targeting Android API Level 34+, you must declare the service type in your application's manifest file.\nIn your `AndroidManifest.xml` file, add the following lines in the `\u003capplication\u003e` tag:\n\n```xml\n    \u003cservice\n      android:name=\"androidx.work.impl.foreground.SystemForegroundService\"\n      android:exported=\"false\"\n      android:foregroundServiceType=\"dataSync\" /\u003e\n```\n\n#### Notifications\n\nTo customize the notification to your own brand, you can change the icon, color or channel name by overwriting the following resources in your own application resources:\n  - the icon: `R.drawable.ic_upload_notification`\n  - the color: `R.color.upload_notification_color`\n  - the channel name: `R.string.upload_notification_channel_name`\n\n\n## Example\n\nAn example that demonstrates how to use the API is provided in folder [example/](https://github.com/apivideo/api.video-reactnative-uploader/tree/main/example).\n\nTo run the example:\n  - for Android:\n`yarn \u0026\u0026 yarn example android`\n  - for iOS:\n`yarn \u0026\u0026 yarn example ios`\n\n## Dependencies\n\napi.video-reactnative-uploader is using external libraries.\n\n| Plugin                 | README                   |\n| ---------------------- | ------------------------ |\n| swift-video-uploader   | [swift-video-uploader]   |\n| android-video-uploader | [android-video-uploader] |\n\n## FAQ\n\nIf you have any questions, ask [our community](https://community.api.video) or use [Issues].\n\n[//]: # \"These are reference links used in the body of this note and get stripped out when the markdown processor does its job. There is no need to format nicely because it shouldn't be seen. Thanks SO - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax\"\n[swift-video-uploader]: https://github.com/apivideo/api.video-swift-uploader\n[android-video-uploader]: https://github.com/apivideo/api.video-android-uploader\n[issues]: https://github.com/apivideo/api.video-reactnative-uploader/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-reactnative-uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapivideo%2Fapi.video-reactnative-uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-reactnative-uploader/lists"}