View the Readme for usage details.

Isn't this just the same thing as JavascriptSubtitlesOctopus?

No, here's why:

  • It's frame perfect
    • This version can render TS perfectly without miscalculating display times at all
    • This version can detect the video framerate, and render subtitles at that framerate, instead of hardcoding 24fps
  • This is smaller, 920kb smaller
    • This version removes a LOT of dead code, unused dependencies and misused functionality, a whole 800kb of it
    • This version doesn't force default assets by default, instead they can easily be loaded at runtime, but only if needed
  • This is faster, a LOT faster
    • Includes a few C++ decoding optimisations
    • Uses new modern browser API's allowing it to benefit from proper threading and hardware acceleration, and auto-detects lack of support for those API's and automatically fallbacks to next best settings
    • Includes a LOT of JS optimisations
    • Fixes a few flat out stupid performance bugs
    • Uses less memory as it references data instead of copying it multiple times
    • Can run fully in the worker, thanks to offscreen canvases, making sure the rest of the website/webapp doesn't lag
  • This fixes a LOT of bugs
    • Your browser will no longer crash when resizing video with animations
    • Your browser won't leak 10's of MB's of RAM when resizing video with animations
    • Your browser will free up memory quicker
    • The subtitles will no longer randomly disappear
    • The subtitles will no longer dissapear when moving the video
  • This loads a LOT faster thanks to a lot of font improvements
    • Now only the fallback font blocks the init of the library
    • All other fonts are loaded in the background and updated asynchronously
    • Fonts can be loaded as direct Uint8 data, so the user can preload fonts by themselves
  • All of this is up to date with upstream

But what's a list good for? Here are some live examples [another list :P]:

But why won't you contribute to the original? The simple reason is because libass is too slow to merge even the tinest changes, and the way they treat outside contributors is unpleasant. Merging a full re-write of this scale would take years at their pace.