Skip to content

Commit 7683e7f

Browse files
committed
Add elapsed time in progress callback
1 parent d49497c commit 7683e7f

File tree

7 files changed

+16
-12
lines changed

7 files changed

+16
-12
lines changed

apps/browser/transcode.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ <h3>Upload a video to transcode to mp4 (x264) and play!</h3>
2121
ffmpeg.on("log", ({ message }) => {
2222
console.log(message);
2323
})
24-
ffmpeg.on("progress", ({ progress }) => {
25-
message.innerHTML = `${progress * 100} %`;
24+
ffmpeg.on("progress", ({ progress, elapsed }) => {
25+
message.innerHTML = `${progress * 100} %, elapsed: ${elapsed / 1000000} s`;
2626
});
2727
await ffmpeg.load({
2828
coreURL: "/packages/core/dist/umd/ffmpeg-core.js",

packages/ffmpeg/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export interface LogEvent {
119119

120120
export interface ProgressEvent {
121121
progress: number;
122+
elapsed: number;
122123
}
123124

124125
export type ExitCode = number;

packages/ffmpeg/src/worker.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,11 @@ const load = async ({
7272
ffmpeg.setLogger((data) =>
7373
self.postMessage({ type: FFMessageType.LOG, data })
7474
);
75-
ffmpeg.setProgress((progress: number) =>
76-
self.postMessage({ type: FFMessageType.PROGRESS, data: { progress } })
75+
ffmpeg.setProgress((data) =>
76+
self.postMessage({
77+
type: FFMessageType.PROGRESS,
78+
data,
79+
})
7780
);
7881
return first;
7982
};

packages/types/types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export interface FFmpegCoreModule {
5858
reset: () => void;
5959
setLogger: (logger: (log: Log) => void) => void;
6060
setTimeout: (timeout: number) => void;
61-
setProgress: (handler: (progress: number) => void) => void;
61+
setProgress: (handler: (progress: number, elapsed: number) => void) => void;
6262

6363
locateFile: (path: string, prefix: string) => string;
6464
}

src/bind/ffmpeg/bind.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ function setProgress(handler) {
7474
Module["progress"] = handler;
7575
}
7676

77-
function receiveProgress(progress) {
78-
Module["progress"](progress);
77+
function receiveProgress(progress, elapsed) {
78+
Module["progress"]({ progress, elapsed });
7979
}
8080

8181
function reset() {

src/fftools/ffmpeg.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,8 +1505,8 @@ static void print_final_stats(int64_t total_size)
15051505
}
15061506
}
15071507

1508-
EM_JS(void, send_progress, (double progress), {
1509-
Module.receiveProgress(progress);
1508+
EM_JS(void, send_progress, (double progress, double elapsed), {
1509+
Module.receiveProgress(progress, elapsed);
15101510
});
15111511

15121512
static void print_report(int is_last_report, int64_t timer_start, int64_t cur_time)
@@ -1650,7 +1650,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
16501650
duration = file_duration;
16511651
}
16521652
}
1653-
send_progress((double)pts_abs / (double)duration);
1653+
send_progress((double)pts_abs / (double)duration, (double)pts_abs);
16541654

16551655
secs = FFABS(pts) / AV_TIME_BASE;
16561656
us = FFABS(pts) % AV_TIME_BASE;
@@ -1736,7 +1736,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
17361736

17371737
if (is_last_report) {
17381738
// Make sure the progress is ended with 1.
1739-
if (pts_abs != duration) send_progress(1);
1739+
if (pts_abs != duration) send_progress(1, (double)pts_abs);
17401740
print_final_stats(total_size);
17411741
}
17421742
}

tests/ffmpeg-core.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ describe(genName("setProgress()"), () => {
9292

9393
it("should handle progress", () => {
9494
let progress = 0;
95-
core.setProgress((_progress) => (progress = _progress));
95+
core.setProgress(({ progress: _progress }) => (progress = _progress));
9696
expect(core.exec("-i", "video.mp4", "video.avi")).to.equal(0);
9797
expect(progress).to.equal(1);
9898
core.FS.unlink("video.avi");

0 commit comments

Comments
 (0)