api.video is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.
api.video's Flutter uploader uploads videos to api.video using delegated upload token or API Key.
It allows you to upload videos in two ways:
- standard upload: to send a whole video file in one go
- progressive upload: to send a video file by chunks, without needing to know the final size of the video file
Run the following command at the root of your project:
flutter pub add video_uploader
This will add the following lines to your package's pubspec.yaml file:
dependencies:
video_uploader: ^1.3.0
Permissions android.permission.READ_MEDIA_VIDEO
(for API 33+)
or android.permission.READ_EXTERNAL_STORAGE
(for API < 33) will be requested by this library at
runtime.
The uploader 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.
When targeting Android API Level 34+, you must declare the service type in your application's manifest file.
In your AndroidManifest.xml
file, add the following lines in the <application>
tag:
<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:exported="false"
android:foregroundServiceType="dataSync" />
To 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:
- the icon:
R.drawable.ic_upload_notification
- the color:
R.color.upload_notification_color
- the channel name:
R.string.upload_notification_channel_name
import 'package:video_uploader/video_uploader.dart';
var video = await ApiVideoUploader.uploadWithUploadToken("YOUR_UPLOAD_TOKEN", "path/to/my-video.mp4");
This project is using external library
Plugin | README |
---|---|
Swift-video-uploader | Swift-video-uploader |
android-video-uploader | android-video-uploader |
If you have any questions, ask us in the community or use Issues.