0.5.3 • Published 7 months ago

ass-html5 v0.5.3

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

ass-html5

Display ASS/SSA subtitles on html5 videos

CI workflow Publish workflow License npm bundle size npm

Table of Contents

Installation

pnpm add ass-html5

Usage

Options

optiondescriptionrequiredtypedefault
assTextThe ass text stringstringundefined
videoThe video to display the subtile on. Can be either an HTMLVideoElement or string (html query selector )HTMLVideoElement / stringundefined
fontsCustom fonts to load🚫Font[]undefined
zIndexzIndex of the rendering frame🚫numberDrawn after the video
onReadyA Callback that is invoked when the preprocess of the ass text by render is done🚫() => voidundefined
loggingType of logging (experimental)🚫LOGTYPELOGTYPE.DISABLE

Simple HTML

!NOTE The simple video tag element, in fullscreen mode, the position of the video is absolutely on top of any element. No other element can go on top of it.

It's therefore recommended to use a third party player rather than the native one. You can see an example with plry here.

<script src="https://cdn.jsdelivr.net/npm/ass-html5@0.5.1/dist/ass.min.js"></script>
<video src="/assets/video.mp4" id="video" controls></video>
<script>
  document.addEventListener('DOMContentLoaded', async () => {
    let res = await fetch('/assets/video.ass');
    let assSubs = await res.text();

    const ass = new ASS.default({
      assText: assSubs,
      video: document.getElementById('video')
    });
    await ass.render();
  });
</script>

Svelte and Plry

<script lang="ts">
    import video from '$lib/assets/video.mp4'
    import cc from '$lib/assets/cc.ass?raw'
    import ASS from 'ass-html5'
    import { onMount } from 'svelte';
    import Plyr from 'plyr'

    const ass = new ASS({
        assText: cc,
        video: "#video-test"
    })

    let vidElement: HTMLVideoElement
    let player: Plyr
    onMount(async () => {
        player = new Plyr(vidElement)
        await ass.render()
    })

</script>

<div class="video-container">
    <!-- svelte-ignore a11y-media-has-caption -->
    <video
        preload="metadata"
        src="{video}"
        id="video-test"
        controls
        autoplay
        class="vid"
        bind:this={vidElement}
    ></video>
</div>

videojs

In the head :

<script src="https://cdn.jsdelivr.net/npm/ass-html5@0.5.1/dist/ass.min.js" defer></script>
<script src="https://vjs.zencdn.net/8.3.0/video.min.js" defer></script>
<link href="https://vjs.zencdn.net/8.3.0/video-js.css" rel="stylesheet" />

In the body :

<video
  id="my-video"
  class="video-js"
  controls
  preload="auto"
  width="1280"
  height="720"
  data-setup="{}"
>
  <source src="assets/video.mp4" type="video/mp4" />
</video>

In the script tag :

<script>
  document.addEventListener('DOMContentLoaded', async () => {
    let res = await fetch('/assets/video.ass');
    let assSubs = await res.text();

    var player = videojs('my-video');

    player.ready(async () => {
      // Get the video element from the player
      var videoElement = player.el().getElementsByTagName('video')[0];
      const ass = new ASS.default({
        assText: assSubs,
        video: videoElement
      });
      await ass.render();
    });
  });
</script>

Credits

Thanks to the ass-compiler by weizhenye.

0.5.3

7 months ago

0.5.2

8 months ago

0.5.1

9 months ago

0.5.0

12 months ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago