Giter Club home page Giter Club logo

ass-html5's Introduction

ass-html5

Display ASS/SSA subtitles on html5 videos

ass-html5 uses the ass-compiler from weizhenye.

CI workflow Publish workflow License npm bundle size npm

๐Ÿ— PROJECT UNDER DEVELOPEMENT ๐Ÿ—

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

Simple HTML

Note

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

It's therefore recommanded 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@<VERSION>/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({
			assText: assSubs,
			video: document.getElementById('video')
		})
		await ass.init()
	})
</script>
<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.init()
    })

</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>

In the head :

<script src="https://cdn.jsdelivr.net/npm/ass-html5@<VERSION>/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({
				assText: assSubs,
				video: videoElement
			})
			await ass.init()
		})
	})
</script>

ass-html5's People

Contributors

github-actions[bot] avatar luxluth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ass-html5's Issues

HLS index file with subtitles listed

Would it be possible to pull ass subtitles from that directory as well or would need to be hosted separately no matter what?

Awesome Project and hope it continues the progress . im currently bulk encoding to HLS and hosting in IPFS so having everything pull from the HLS index file would be amazing if at all possible

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.