Skip to content

Commit 9b08e48

Browse files
committed
Report progress as a completion percentage
1 parent 9bc3f95 commit 9b08e48

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

app/src/main/java/protect/videotranscoder/FFmpegResponseHandler.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ public class FFmpegResponseHandler extends ExecuteBinaryResponseHandler
1313

1414
private final Context _context;
1515
private final Intent _intentToLaunch;
16+
private final long _durationMs;
1617
private final ProgressDialog _progressDialog;
1718

18-
public FFmpegResponseHandler(Context context, Intent intent, ProgressDialog progressDialog)
19+
public FFmpegResponseHandler(Context context, Intent intent, long durationMs, ProgressDialog progressDialog)
1920
{
2021
_context = context;
2122
_intentToLaunch = intent;
23+
_durationMs = durationMs;
2224
_progressDialog = progressDialog;
2325
}
2426

@@ -38,8 +40,31 @@ public void onSuccess(String s)
3840
@Override
3941
public void onProgress(String s)
4042
{
41-
_progressDialog.setMessage("progress : " + s);
43+
// Progress updates look like the following:
44+
// frame= 15 fps=7.1 q=2.0 size= 26kB time=00:00:00.69 bitrate= 309.4kbits/s dup=6 drop=0 speed=0.329x
45+
4246
Log.d(TAG, "progress : " + s);
47+
48+
Long currentTimeMs = null;
49+
50+
String [] split = s.split(" ");
51+
for(String item : split)
52+
{
53+
if(item.startsWith("time="))
54+
{
55+
item = item.replace("time=", "");
56+
currentTimeMs = FFmpegUtil.timestampToMs(item);
57+
58+
break;
59+
}
60+
}
61+
62+
if(currentTimeMs != null)
63+
{
64+
int percentComplete = (int)Math.floor((currentTimeMs * 100) / (float)_durationMs);
65+
66+
_progressDialog.setMessage(percentComplete + "%");
67+
}
4368
}
4469

4570
@Override

app/src/main/java/protect/videotranscoder/activity/MainActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ private void executeCutVideoCommand(int startMs, int endMs)
425425
Intent successIntent = new Intent(MainActivity.this, PreviewActivity.class);
426426
successIntent.putExtra(FILEPATH, filePath);
427427

428-
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, progressDialog);
428+
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, durationMs, progressDialog);
429429
FFmpegUtil.call(complexCommand, handler);
430430
}
431431

@@ -458,7 +458,7 @@ private void executeCompressCommand()
458458

459459
Intent successIntent = new Intent(MainActivity.this, PreviewActivity.class);
460460
successIntent.putExtra(FILEPATH, filePath);
461-
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, progressDialog);
461+
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, durationMs, progressDialog);
462462

463463
FFmpegUtil.call(complexCommand, handler);
464464
}
@@ -504,7 +504,7 @@ private void extractImagesVideo(int startMs, int endMs)
504504

505505
Intent successIntent = new Intent(MainActivity.this, PreviewImageActivity.class);
506506
successIntent.putExtra(FILEPATH, filePath);
507-
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, progressDialog);
507+
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, durationMs, progressDialog);
508508

509509
FFmpegUtil.call(complexCommand, handler);
510510
}
@@ -537,7 +537,7 @@ private void extractAudioVideo()
537537

538538
Intent successIntent = new Intent(MainActivity.this, AudioPreviewActivity.class);
539539
successIntent.putExtra(FILEPATH, filePath);
540-
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, progressDialog);
540+
FFmpegResponseHandler handler = new FFmpegResponseHandler(this, successIntent, durationMs, progressDialog);
541541

542542
FFmpegUtil.call(complexCommand, handler);
543543
}

0 commit comments

Comments
 (0)