GithubHelp home page GithubHelp logo

nkoehler / mat-video Goto Github PK

View Code? Open in Web Editor NEW
91.0 13.0 47.0 52.06 MB

:tv: mat-video is an Angular 8/9+ video player using Material!

Home Page: https://nkoehler.github.io/mat-video/

License: MIT License

TypeScript 61.60% JavaScript 4.65% CSS 11.58% HTML 22.17%
angular video html5 material typescript css3 mat-video video-player html angular8 angular9

mat-video's Introduction

July 2020 - This project is no longer maintained

mat-video is an Angular 8/9+ video player using Material

npm version Build Status Maintainability

mat-video is an Angular component for playing videos. It has all the features you would expect from a standard video player, all in an extremely light package. The video player is designed to be flexible and easy to use; you can be up and running in less than 5 minutes!

It was built for modern browsers using TypeScript, CSS3 and HTML5 with Angular & Material 8/9+.

See the changelog for recent changes.

If you wish to contribute, please fill out the pull request template. For issues, please fill out the issue template before submitting.

Features

  • Native HTML5 video player
  • Easy to use
  • Play/Pause
  • Seeking
  • Volume
  • Autoplay
  • Preload
  • Looping
  • Scaling
  • Fullscreen
  • Download
  • Buffering spinners
  • Poster image
  • Subtitles and text tracks
  • Multiple media sources
  • Customizable controls
  • Material theming
  • Keyboard shortcuts
  • Fixed and responsive sizing
  • Supports Chrome, Firefox, Safari, and Edge

Installation

mat-video requires Angular Material as a peer dependency, including animations and a theme.

ng add @angular/material

To use mat-video in your project install it via npm:

npm install --save mat-video

Add the following to your module:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatVideoModule } from 'mat-video';

@NgModule({
  imports: [
    BrowserAnimationsModule,
    MatVideoModule
  ],
})
export class AppModule { }

Usage

A minimal example is quite simple, in your HTML file:

    <mat-video src="localOrRemoteVideo.mp4"></mat-video>

A slightly more customized example, in your HTML file:

    <mat-video title="My Tutorial Title" [autoplay]="true" [preload]="true" [fullscreen]="true" [download]="false" color="accent" spinner="spin" poster="image.jpg">
      <source matVideoSource src="tutorial.mp4" type="video/mp4">
      <source src="tutorial.webm" type="video/webm">
      <track matVideoTrack src="subtitles_en.vtt" kind="subtitles" srclang="en" label="English">
      <track src="subtitles_no.vtt" kind="subtitles" srclang="no" label="Norwegian">
    </mat-video>

API

Attribute Type Description Default
src string, MediaStream, MediaSource, Blob Path, URL, or srcObject for a video null
title string Title for the video null
autoplay boolean Whether the video should autoplay false
preload boolean Whether the video should preload true
loop boolean Whether the video should loop false
time number (two-way bindable) Get or set the timestamp of the video 0
muted boolean (two-way bindable) Get or set whether the video is muted false
quality boolean Whether the video will have a quality indicator true
download boolean Whether the video will have a download option false
fullscreen boolean Whether the video will have a fullscreen option true
playsinline boolean Whether the video should play inline false
showFrameByFrame boolean Whether the video will display frame-by-frame controls false
keyboard boolean Whether the player will have keyboard shortcuts true
overlay boolean Force the overlay/controls to be shown or hidden null
color ThemePalette Material theme color palette for the sliders primary
spinner string Use 'spin', 'dot', 'split-ring', 'hourglass', or pass your own buffering spinner class spin
poster string Path or URL to a poster image null

In addition, source and track elements are supported by mat-video.

The matVideoSource attribute can be used on the source tag to automatically reload the video when the source changes.

The matVideoTrack attribute can be used on the track tag to automatically reload the video when the track changes.

Events

Listening to video events can be accomplished by directly accessing the video tag within mat-video.

In your HTML file:

    <mat-video #video src="localOrRemoteVideo.mp4"></mat-video>

In your TS file:

export class SampleComponent implements OnInit {
  @ViewChild('video') matVideo: MatVideoComponent;
  video: HTMLVideoElement;

  constructor(private renderer: Renderer2) { }

  ngOnInit(): void {
    this.video = this.matVideo.getVideoTag();

    // Use Angular renderer or addEventListener to listen for standard HTML5 video events
    
    this.renderer.listen(this.video, 'ended', () => console.log('video ended'));
    this.video.addEventListener('ended', () => console.log('video ended'));
  }
}

This API feature is considered experimental, and is subject to change.

Compatibility

mat-video supports the last two major Angular versions. Previous versions of mat-video support older versions of Angular.

mat-video Version Angular Version
1.0.0 - 2.7.2 Angular 5, 6, 7, 8
2.8.0+ Angular 8, 9

Credits

mat-video is an open-source project developed by Nicholas Koehler.

Special thanks:

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.