• Stars
    star
    161
  • Rank 233,470 (Top 5 %)
  • Language
    TypeScript
  • License
    GNU Affero Genera...
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

⏩ Fast-forwards long pauses between sentences — watch lectures ~1.5x faster (browser extension)

Logo Jump Cutter

Chrome Web Store Firefox Browser Add-ons Matrix Discord Translation status

Download:

Chrome Web Store Firefox Browser Add-ons Microsoft Edge Add-ons or from GitHub: Chromium / Gecko (Firefox)

Skips silent parts in videos, in real time.

Can be useful for watching lectures, stream recordings (VODs), webinars, podcasts, and other unedited videos.

Demo:

demo.mp4

Inspired by this video by carykh.

Contribute

How it works

Simple (mostly).

Currently there are 2 separate algorithms in place.

The first one we call "the stretching algorithm", and it's in this file. It simply looks at the output audio of a media element, determines its current loudness and, when it's not loud, increases its playbackRate.

Details, why it's called "stretching" It's about how we're able to "look ahead" and slow down shortly before a loud part ("Margin before"). Basically we slightly delay the audio from it before outputting it. When we encounter a loud part, we slow down (stretch and pitch-shift) the buffered audio so that it appears to have been played at normal speed, then output it.

You can check out the comments in its source code for more details.

The second one is "the cloning algorithm", and it's here. It creates a hidden clone of the target media element and plays it ahead of the original element, looking for silent parts and writing down where they are. When the target element reaches a silent part, we increase its playbackRate, or skip (seek) the silent part entirely. Currently you can enable this algorithm by checking the "Use the experimental algorithm" checkbox.

Build

  1. Install base tools:

  2. Run

    yarn install
  3. Fill the src/_locales directory with localization files. Skip this step if they're alredy there. Either:

    • If you're using git:

      git submodule update --init

    • If you don't want to use git, download them from the translations branch and put in src/_locales manually.

    • To build for Gecko (e.g. Firefox):

      yarn build:gecko
    • To build for Chromium (e.g. Chrome, Edge)

      yarn build:chromium

    Bundled files will appear in ./dist-gecko (or ./dist-chromium).

For development build, see CONTRIBUTING.md

Then you can install it on the extensions management page of your browser (Chromium, Gecko).

Privacy & security

In short: it's fine.

As with practically every other extension, websites you're visiting may detect that you're using this (or alike) extension, and your settings for the extension, by observing:

  • playback rate changes of an element.
  • the fact that createMediaElementSource has been called for an element.
  • increased frequency of media chunk requests resulting from increased playback rate. This cannot be mitigated with disabling JavaScript.
  • the fact of requesting the same media twice, as a result of using the cloning algotihm.

However I doubt that currently there are services that do specifically this. But there may be.

Other than that, there are no known things concerning this. It doesn't interact with third parties or try to do other creepy stuff.

Donate

  • https://antiwarcommittee.info/en/sunrise/#help

  • Monero (XMR):

    monero:88yzE5FbDoMVLXUXkbJXVHjNpP5S3xkMaTwBSxmetBDvQMbecMtVCXnQ44W6WRYsPGCPoAYp74ER9aDgBLYDGAAiSt2wu8a?tx_amount=0.050000000000&recipient_name=WofWca%20(https%3A//github.com/WofWca)&tx_description=Donation%20for%20Jump%20Cutter%20extension%20development

  • Bitcoin (BTC):

    bitcoin:bc1qdfz74882mlk64pj4ctpdegvxv9r7jgq8xs2qkxpv3gkv5xqygvgs0fyzm9




AGPLv3 Logo