Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.0.1

ffmpeg_helper

FFmpeg-Befehls-Hilfe für Flutter mit Unterstützung für die Einrichtung auf Windows-Plattform.

AndroidiOSmacOSWindowsLinux
30-Tage-Downloads
104
Likes
27
Pub-Punkte
140

Paket installieren

flutter pub add ffmpeg_helper

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

ffmpeg_helper ist ein Flutter-Paket, das die Verwendung von FFmpeg-Befehlen in Flutter-Anwendungen vereinfacht und eine benutzerfreundliche Schnittstelle zum Ausführen von FFmpeg-Operationen bereitstellt. Es enthält integrierte Unterstützung für die Einrichtung von FFmpeg unter Windows und macht es über mehrere Plattformen hinweg nutzbar, darunter Android, iOS, macOS, Windows und Linux. Das Paket abstrahiert komplexe Befehlszeileninteraktionen in einfache Dart-Methoden, sodass Entwickler Multimedia-Aufgaben wie Videokonvertierung, Ausschneiden und Zusammenfügen mit minimalem Aufwand durchführen können. Ideal für Apps, die Media-Manipulation direkt auf dem Gerät erfordern, ohne sich auf externe Server zu verlassen.

Anwendungsfälle

  • Videodateiformatkonvertierung
  • Audioextraktion aus Video
  • Videobearbeitung und Zusammenführung
  • Medienverarbeitung auf dem Gerät
  • Plattformübergreifende Multimedia-Apps

Hauptmerkmale

  • Integrierte Windows-Einrichtungsunterstützung
  • plattformunabhängige FFmpeg-Integration
  • Einfache Dart-API für FFmpeg-Befehle
  • Unterstützt Android, iOS, macOS, Windows und Linux
  • Einfache Konfiguration und Ausführung

Geeignet für

  • Entwickler, die Multimedia-Apps erstellen
  • Apps, die eine Videobearbeitung auf dem Gerät erfordern
  • Plattformübergreifende Medienverarbeitungstools
  • Bildung oder Prototypenprojekte, die FFmpeg beinhalten
  • Teams, die eine schnelle FFmpeg-Integration wünschen

Hinweise

  • Erforderliche korrekte FFmpeg-Installation auf Zielgeräten
  • Kann die App-Größe aufgrund der FFmpeg-Binärdateien erhöhen
  • Die Windows-Einrichtung erfordert zusätzliche Konfigurationsschritte
  • Beschränkte Dokumentation über die grundlegende Verwendung hinaus
  • Möglicher Leistungseinfluss auf Geräte mit geringer Leistungsfähigkeit

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Buy Me A Coffee

ffmpeg_helper

FFmpeg commands helper for flutter with support for setup on windows platform. Create thumbnail and run ffprobe on all platforms except WEB. This uses ffmpeg_kit_flutter_min_gpl package for android/ios/macos Info was taken from ffmpeg_cli and recreated it as that project was stale.

// Initialize in main
  await FFMpegHelper.instance.initialize(); // This is a singleton instance
  // FFMpegHelper ffmpeg = FFMpegHelpe.instance; // use like this
  runApp(const MyApp());
// Command builder
// Use prebuilt args and filters or create custom ones
final FFMpegCommand cliCommand = FFMpegCommand(
  inputs: [
    FFMpegInput.asset(selectedFile!.path),
  ],
  args: [
    const LogLevelArgument(LogLevel.info),
    const OverwriteArgument(),
    const TrimArgument(
      start: Duration(seconds: 0),
      end: Duration(seconds: 10),
    ),
  ],
  filterGraph: FilterGraph(
    chains: [
      FilterChain(
        inputs: [],
        filters: [
          ScaleFilter(
            height: 300,
            width: -2,
          ),
        ],
        outputs: [],
      ),
    ],
  ),
  outputFilepath: path.join(appDocDir.path, "ffmpegtest.mp4"),
);
FFMpegHelperSession session = await ffmpeg.runAsync(
  cliCommand,
  statisticsCallback: (Statistics statistics) {
    print('bitrate: ${statistics.getBitrate()}');
  },
);

Thumbnail creator

// use ffmpeg.getThumbnailFileAsync() to get session
Future<FFMpegHelperSession> getThumbnailFileAsync({
  required String videoPath,
  required Duration fromDuration,
  required String outputPath,
  String? ffmpegPath,
  FilterGraph? filterGraph,
  int qualityPercentage = 100,
  Function(Statistics statistics)? statisticsCallback,
  Function(File? outputFile)? onComplete,
  FFMpegConfigurator? ffMpegConfigurator,
})
// use ffmpeg.getThumbnailFileSync() to get thumbnail file
Future<File?> getThumbnailFileSync({
  required String videoPath,
  required Duration fromDuration,
  required String outputPath,
  String? ffmpegPath,
  FilterGraph? filterGraph,
  int qualityPercentage = 100,
  Function(Statistics statistics)? statisticsCallback,
  Function(File? outputFile)? onComplete,
  FFMpegConfigurator? ffMpegConfigurator,
})

Run FFMpeg and get session so that user can cancel it later.

Future<FFMpegHelperSession> runAsync(
  FFMpegCommand command, {
  Function(Statistics statistics)? statisticsCallback,
  Function(File? outputFile)? onComplete,
  Function(Log)? logCallback,
})

Run FFMpeg as future.

Future<File?> runSync(
  FFMpegCommand command, {
  Function(Statistics statistics)? statisticsCallback,
})

Run ffprobe

Future<MediaInformation?> runProbe(String filePath)

Setup FFMPEG for Linux

sudo apt-get install ffmpeg
OR
sudo snap install ffmpeg
depends on linux distro

Setup FFMPEG for windows

Future<void> downloadFFMpeg() async {
    if (Platform.isWindows) {
      bool success = await ffmpeg.setupFFMpegOnWindows(
        onProgress: (FFMpegProgress progress) {
          downloadProgress.value = progress;
        },
      );
      setState(() {
        ffmpegPresent = success;
      });
    } else if (Platform.isLinux) {
      // show dialog box
      await Dialogs.materialDialog(
          color: Colors.white,
          msg:
              'FFmpeg installation required by user.\nsudo apt-get install ffmpeg\nsudo snap install ffmpeg',
          title: 'Install FFMpeg',
          context: context,
          actions: [
            IconsButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              text: 'Ok',
              iconData: Icons.done,
              color: Colors.blue,
              textStyle: const TextStyle(color: Colors.white),
              iconColor: Colors.white,
            ),
          ]);
    }
  }
// check setup progress on windows
// On windows if ffmpeg is not present it will download official zip file and extract on doc directory of app.
SizedBox(
  width: 300,
  child: ValueListenableBuilder(
    valueListenable: downloadProgress,
    builder: (BuildContext context, FFMpegProgress value, _) {
      //print(value.downloaded / value.fileSize);
      double? prog;
      if ((value.downloaded != 0) && (value.fileSize != 0)) {
        prog = value.downloaded / value.fileSize;
      } else {
        prog = 0;
      }
      if (value.phase == FFMpegProgressPhase.decompressing) {
        prog = null;
      }
      if (value.phase == FFMpegProgressPhase.inactive) {
        return const SizedBox.shrink();
      }
      return Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text(value.phase.name),
          const SizedBox(height: 5),
          LinearProgressIndicator(value: prog),
        ],
      );
    },
  ),
),

Kategorien

Abhängigkeiten

Abhängigkeiten 7 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.