JuanIrache / gpmf-extract

Extracts binary GoPro Metadata Format data from video files
https://tailorandwayne.com/gopro-telemetry-extractor/
MIT License
96 stars 22 forks source link

enable processing to be cancelled #49

Closed gunta987 closed 2 years ago

gunta987 commented 2 years ago

If processing a large file, it can take a long time and the user may wish to cancel in that time. Additionally, I have come across a scenario where a video I've been supplied throws an error in mp4box that doesn't cancel the process, and progress goes above 100% without ever finishing (I allowed it to get to >800% before refreshing the page, meanwhile CPU usage is 100%). If running using webWorkers, throwing an Error from the progress function doesn't stop the process either.

Can you please enable functionality to pass in a cancellation token in options?

JuanIrache commented 2 years ago

Hi. Thank you for raising these issues. They are valid points.

Are you able to share the file that is going beyond 100%, for testing?

If you have a chance to start implementing these improvements, feel free to send pull requests. Otherwise I will work on them when I find the time.

On Thu, 27 Jan 2022 at 04:01, gunta987 @.***> wrote:

If processing a large file, it can take a long time and the user may wish to cancel in that time. Additionally, I have come across a scenario where a video I've been supplied throws an error in mp4box that doesn't cancel the process, and progress goes above 100% without ever finishing (I allowed it to get to >800% before refreshing the page, meanwhile CPU usage is 100%). If running using webWorkers, throwing an Error from the progress function doesn't stop the process either.

Can you please enable functionality to pass in a cancellation token in options?

— Reply to this email directly, view it on GitHub https://github.com/JuanIrache/gpmf-extract/issues/49, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIX77Z6O37L5ADPZHYRXW3UYCYSBANCNFSM5M4WTE4A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you are subscribed to this thread.Message ID: @.***>

gunta987 commented 2 years ago

Thanks. I've made the video available at https://1drv.ms/u/s!At523gPWXcusgQMPo3Peix57UjS0?e=YOpA1i

This video is clearly corrupted, since it won't even open in VLC, but the extractor does recognise it as a GoPro file and attempts to extract telemetry. I have also tried the file at https://goprotelemetryextractor.com/free/ and get the same results (extraction process never ends)

JuanIrache commented 2 years ago

Thank you for the sample file. I made two changes:

The crash itself comes from mp4box and I have no direct control over it, nor the knowledge or time to improve that within mp4box at the moment. If you make additional findings about that, please let me know.

Adding the cancel function will require a bigger refactor, so I'm not sure when/if I'll be able to work on that. PRs in that direction are welcome.

gunta987 commented 2 years ago

Easy enough to implement for browserMode, because the data is read in chunks.

I'm new to github: how do I create a PR when I can't push a branch to this repo?

JuanIrache commented 2 years ago

You can fork the project, make your changes and then send the PR request to the dev branch. There must be good tutorials about this, but in any case if you get it working on your fork of the repo I can just copy the changes.

Juan Irache Independent Software Developer https://prototyping.barcelona

On Tue, 1 Feb 2022 at 02:30, gunta987 @.***> wrote:

Easy enough to implement for browserMode, because the data is read in chunks.

I'm new to github: how do I create a PR when I can't push a branch to this repo?

— Reply to this email directly, view it on GitHub https://github.com/JuanIrache/gpmf-extract/issues/49#issuecomment-1026390536, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIX776PDW5KDPLKSXSZFL3UY4ZRVANCNFSM5M4WTE4A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you commented.Message ID: @.***>

gunta987 commented 2 years ago

Hi Juan,

I notice that you changed resolve(null) to reject('Canceled by user'). All good, but the documentation needs updating as I wrote it to reflect resolving with null.

JuanIrache commented 2 years ago

Good catch