0.6.3 • Published 9 months ago

ng-plyr v0.6.3

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

ng-plyr (NGP)

An HTML5 media player, built using Angular. It has interface similar to Youtube player. It can be used in Angular 14 and above.

Usage

Add NgPlyrModule to your AppModule:

import { NgPlyrModule } from 'ng-plyr';
...

@NgModule({
  imports: [
    ...
    NgPlyrModule
  ],
  ...
})
export class AppModule { }

Add this tag to your Component html

<ng-plyr src='https://example.com/video.mp4'></ng-plyr>

OR

<ng-plyr [src]='mediaUrl'></ng-plyr>

OR

<ng-plyr [playlist]='mediaArr'></ng-plyr>

And assign value to mediaUrl in component.ts

Note: playlist is preferred over src, so if both are passed, media will play from playlist

ng-plyr input attributes

InputTypeDescription
srcstringURL of media source
preloadstringSame as HTML <video> preload Attribute
loadingImgSrcstringURL of custom loading image
playFromnumberPlay media starting from specified second
volumenumberKeep playing the same media over and over
loopbooleanPlay media starting from specified second
bookmarksnumber[]Array of seconds within media max duration
autoplaybooleanEnable/disable autoplay
nextMediaMediaMedia to be played next
playlistMedia[]Pass entire playlist to play
loopPlaylistbooleanLoop over playlist
posterstringURL of the poster image

Output events

OutputTypeDescription
playingbooleanMedia started to play
pausedbooleanMedia paused
endedbooleanMedia ended
onnextMediaPlaying next media
onprevMediaPlaying previous media
fullscreenbooleanMedia entered/exited fullscreen
volumechange{ level:number, muted:boolean }Volume changed or muted/unmuted

Upcoming Inputs and Output events

InputTypeDescription
typeMediaTypeSpecify media type
captions[{ path: string, lang: string }]Add captions to media
OutputTypeDescription
errorobjectDetails of any error if occured

Methods

Method(arg:type)Description
play()Play current media
pause()Pause current media
next()Play next media
prev()Play prev media
enableMediaLooping(loop?:boolean)Turn on loop for media (default true)
enablePlaylistLooping(loop?:boolean)Turn on loop for playlist (default true)
changeVolume(level:number)Set volume to level (0 to 1)
seekTo(atSecond:number)Seek media to specific second
setPlaybackSpeed(rate:number)Set media playback rate (range, .25 to 2)
getCurrentlyPlaying()Get currently playing Media
getNextMedia()Get nextMedia
getNumOfMediaInPlaylist()Get number of media items in playlist
addToPlaylist(mediaItems:Media[], atStart?:boolean)Add mediaItems to playlist at end/start
playNext(media:Media[])Add media to playlist after current media

Features

  • Shortcuts available for different buttons
  • Can switch to PIP and Fullscreen
  • Double tap to seek back/forward
  • Shows buffer status on timeline
  • Autofetch Video metadata
  • Change playback speed
  • Seek to specific time by clicking on timeline
  • Control for media volume
  • Show loading animation on buffering
  • Play Next/Prev media
  • Button for looping
  • Show media title
  • Cast to other devices
  • While casting local player acts as remote
  • Playing audio
  • Switch for autoplay

For Developers

  • Provide media src
  • Custom loading image can be set
  • Bookmarks can be shown on timeline
  • Looping the same media
  • Provide more controls like volume, playfrom, loop etc.
  • Emit events from ng-plyr: ended, playing, paused, volumechange, fullscreen etc.
  • Playlist support
  • Access to Player methods: play, pause, next, prev etc.
  • Cast service methods are accessible
  • Player theme can be customised
  • Hide controls
  • Multiple media sources
  • Hover to play media thumnails
  • Show bookmark text on hovering a bookmark
  • Show image previews on hovering timeline

Shortcuts

KeyFunction
Space barPlay/Pause
mMute/Unmute
iToggle miniplayer
fToggle fullscreen
kPlay/Pause
0 or homeGo to start
1 to 9Go to 10% to 90%
endGo to end
Up arrowVolume up
Down arrowVolume down
Left arrowSeek back 5 sec
Right arrowSeek ahead 5 sec
<Decrease playback speed by .25x
>Increase playback speed by .25x
Shift + NPlay next media
Shift + PPlay prev media

Cast setup

Add below script in index.html

<script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>

Now you an use CastService methods in your components.

Known issues

  • Volume slider UI

Changelog

CHANGELOG.md

References

0.3.0

10 months ago

0.6.3

9 months ago

0.6.2

9 months ago

0.5.3

10 months ago

0.5.0

10 months ago

0.4.0

10 months ago

0.6.1

9 months ago

0.5.2

10 months ago

0.6.0

9 months ago

0.5.1

10 months ago

0.1.0

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.2.2

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago