Products
Products
Video Hosting
Upload and manage your videos in a centralized video library.
Image Hosting
Upload and manage all your images in a centralized library.
Galleries
Choose from 100+templates to showcase your media in style.
Video Messaging
Record, and send personalized video messages.
CincoTube
Create your own community video hub your team, students or fans.
Pages
Create dedicated webpages to share your videos and images.
Live
Create dedicated webpages to share your videos and images.
For Developers
Video API
Build a unique video experience.
DeepUploader
Collect and store user content from anywhere with our file uploader.
Solutions
Solutions
Enterprise
Supercharge your business with secure, internal communication.
Townhall
Webinars
Team Collaboration
Learning & Development
Creative Professionals
Get creative with a built in-suite of editing and marketing tools.
eCommerce
Boost sales with interactive video and easy-embedding.
Townhall
Webinars
Team Collaboration
Learning & Development
eLearning & Training
Host and share course materials in a centralized portal.
Sales & Marketing
Attract, engage and convert with interactive tools and analytics.
"Cincopa helped my Enterprise organization collaborate better through video."
Book a Demo
Resources
Resources
Blog
Learn about the latest industry trends, tips & tricks.
Help Centre
Get access to help articles FAQs, and all things Cincopa.
Partners
Check out our valued list of partners.
Product Updates
Stay up-to-date with our latest greatest features.
Ebooks, Guides & More
Customer Stories
Hear how we've helped businesses succeed.
Boost Campaign Performance Through Video
Discover how to boost your next campaign by using video.
Download Now
Pricing
Watch a Demo
Demo
Login
Start Free Trial
FFmpeg enables on-device media processing for mobile apps to compress, transcode, trim, and extract data from video or audio files without relying on external cloud services. This is critical for workflows such as preparing recorded lectures before upload, generating thumbnails, or converting formats to reduce bandwidth usage. Flutter does not provide built-in support for such complex media operations. By integrating FFmpeg through a plugin, Dart code can invoke native FFmpeg commands, enabling efficient, offline media processing while keeping a unified Flutter codebase. Choosing an FFmpeg Package for Flutter The recommended plugin is ffmpeg_kit_flutter , which supports Android and iOS, offers access to FFmpeg’s core functionality, and is actively maintained. Older plugins such as flutter_ffmpeg have been deprecated and merged into this package. The plugin uses Flutter’s platform channels to send FFmpeg command strings from Dart to the native layer, where prebuilt binaries execute them. Execution results and logs are then returned to Dart, enabling Flutter apps to use native performance within a unified codebase. Installing and Configuring FFmpeg Kit Add the plugin to your project in pubspec.yaml : dependencies: ffmpeg_kit_flutter: ^6.0.3 Run flutter pub get to install dependencies. Depending on your use case, packages like path_provider may also be required to manage file paths. Platform-specific Setup Instructions Android Devices : Set the minSdkVersion to 24 or higher in android/app/build.gradle . On devices running Android below version 11, declare READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in the manifest. From Android 11 onward, use scoped storage or the MediaStore API to comply with new storage restrictions. iOS Devices : Set the deployment target to iOS 12 or later (or minimum SDK version required by the plugin, often iOS 14). Update Info.plist to include permissions for camera, microphone, and file access as needed. For example,
NSPhotoLibraryUsageDescription
This app requires access to photos for media processing.
NSMicrophoneUsageDescription
This app requires microphone access for audio capture.
NSCameraUsageDescription
This app requires camera access for video recording.
Ensure that your Xcode project links all necessary system frameworks (such as AVFoundation ) for media handling. Running FFmpeg Commands in Flutter FFmpeg commands can be executed directly from Dart. Example: await FFmpegKit.execute( '-i ${inputFile.path} -vf scale=1280:720 ${outputFile.path}' ); Handling Files and Storage Permissions Use path_provider to obtain valid directories such as the app’s documents directory, and always provide absolute paths to FFmpeg commands to avoid resolution errors. On Android, ensure runtime permissions are requested when working with external storage. Proper file handling is necessary for FFmpeg operations to run correctly. Asynchronous Execution and Progress Tracking Asynchronous commands allow progress monitoring and log tracking while tasks run in the background. Example: Example : Extract Audio from Video and Track Progress FFmpegKit.executeAsync( '-i ${input.path} -vn ${output.path}', (session) { print('Completed with return code ${session.getReturnCode()}'); }, (log) { print(log.getMessage()); }, (statistics) { print('Time: ${statistics.getTime()}'); } ); Using asynchronous execution ensures that the application interface remains responsive while heavy operations are performed.