estimate method
Implementation
@override
Future<CompressionEstimate> estimate(
String path, VideoCompressConfig config) async {
final m = await _rawInfo(path);
final srcW = (m['width'] as num).toInt();
final srcH = (m['height'] as num).toInt();
final durationMs = _clampDuration((m['durationMs'] as num).toInt(), config);
final srcKbps = (m['bitrateKbps'] as num).toInt();
final (tw, th) = SizeMath.targetDimensions(srcW, srcH, config);
final videoBps = SizeMath.videoBitrateBps(
config: config,
durationMs: durationMs,
sourceBitrateKbps: srcKbps,
targetHeight: th,
// Web v1 drops the audio track, so the whole budget goes to video.
reserveAudio: false,
);
final bytes = (videoBps * (durationMs / 1000) / 8).round();
return CompressionEstimate.fromMap({
'estimatedSizeBytes': bytes,
'estimatedBitrateKbps': videoBps ~/ 1000,
'targetWidth': tw,
'targetHeight': th,
});
}