estimate method
Implementation
@override
Future<CompressionEstimate> estimate(
String path,
VideoCompressConfig config,
) async {
try {
final info = await FfmpegVideo.probe(path);
final durationMs = _clampDuration(info.durationMs, config);
final dims = SizeMath.targetDimensions(info.width, info.height, config);
final videoBps = SizeMath.videoBitrateBps(
config: config,
durationMs: durationMs,
sourceBitrateKbps: info.bitrateKbps,
targetHeight: dims.$2,
);
final audioBps = config.removeAudio
? 0
: (config.audioBitrateKbps ?? 128) * 1000;
final totalBits = (videoBps + audioBps) * durationMs ~/ 1000;
return CompressionEstimate(
estimatedSizeBytes: totalBits ~/ 8,
estimatedBitrateKbps: (videoBps + audioBps) ~/ 1000,
targetWidth: dims.$1,
targetHeight: dims.$2,
);
} on CompressException {
rethrow;
} catch (e) {
throw VideoCompressException(CompressErrorCode.estimateFailed, '$e');
}
}