v1.0.1
ffmpeg_helper
Windows 플랫폼에서 설정을 지원하는 Flutter용 FFmpeg 명령어 도우미.
27좋아요 10430일 다운로드140Pub 점수
AndroidiOSmacOSWindowsLinux
abhay-s-rawat/ffmpeg_helper open-source repository details.
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
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()}');
},
);
// 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,
})
Future<FFMpegHelperSession> runAsync(
FFMpegCommand command, {
Function(Statistics statistics)? statisticsCallback,
Function(File? outputFile)? onComplete,
Function(Log)? logCallback,
})
Future<File?> runSync(
FFMpegCommand command, {
Function(Statistics statistics)? statisticsCallback,
})
Future<MediaInformation?> runProbe(String filePath)
sudo apt-get install ffmpeg
OR
sudo snap install ffmpeg
depends on linux distro
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),
],
);
},
),
),
의존성 목록 10 개
{"sdk":"flutter"}^1.2.0^2.1.0^5.3.2^3.3.7^5.1.0^4.1.0^1.8.3{"sdk":"flutter"}^2.0.0사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗