0.5.3 • Published 7 months ago
ass-html5 v0.5.3
ass-html5
Display ASS/SSA subtitles on html5 videos
Table of Contents
Installation
pnpm add ass-html5
Usage
Options
option | description | required | type | default |
---|---|---|---|---|
assText | The ass text string | ✅ | string | undefined |
video | The video to display the subtile on. Can be either an HTMLVideoElement or string (html query selector ) | ✅ | HTMLVideoElement / string | undefined |
fonts | Custom fonts to load | 🚫 | Font[] | undefined |
zIndex | zIndex of the rendering frame | 🚫 | number | Drawn after the video |
onReady | A Callback that is invoked when the preprocess of the ass text by render is done | 🚫 | () => void | undefined |
logging | Type of logging (experimental) | 🚫 | LOGTYPE | LOGTYPE.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