Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/theideasaler/angular-thumb-video

This repo is built with Angular to show a thumbnail preview image on video's progress bar hovered. The solution is implemented in front-end but also support backend thumbnail image loading.
https://github.com/theideasaler/angular-thumb-video

angular image thumbnail video

Last synced: about 2 months ago
JSON representation

This repo is built with Angular to show a thumbnail preview image on video's progress bar hovered. The solution is implemented in front-end but also support backend thumbnail image loading.

Awesome Lists containing this project

README

        

# Angular Video Thumbnail Player

A simple solution implemented in Angular to display a thumbnail preiview image on video's progress bar hovered. The component can load thumbnail image from either frontend or backend.

## Installation

Install the npm package.
```
npm i ngx-thumbnail-video
```
Import module:
```ts
import { NgxThumbnailVideoModule } from 'ngx-thumbnail-video';

@NgModule({
imports: [NgxThumbnailVideoModule]
})
```

## Usage 1 - Front End
Pass your video url and options into the component. e.g.

in component.ts
```ts
import { Component } from '@angular/core';
import { VideoPlayerConfig } from 'ngx-thumbnail-video';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
options: VideoPlayerConfig = {
width: '960px',
height: '540px'
};
}
```

HTML:
```html

```

## Usage 2 - Back End
You can choose to load the thumbnail image from a backend to improve the performance of the component. In this case, you will need to add a few configurations.

Step 1. Set the 'frontendPreload' to false in options.
```ts
options: VideoPlayerConfig = {
width: '960px',
height: '540px',
frontendPreload: false
};
```

Step 2 Listen to the progressBarHover event from the component to know the currenlty hovered time(in seconds).
```html

```

Step 3. Pass in a stringified object with sec and url properties, `sec` should be the same as the property emited from progressBarHover, and `url` can be loaded from backend server.
```ts
thumb = JSON.stringify({sec, url});
```

## Options

| name | type | default | description |
|------|------|---------|-------------|
| width | string | '960px' | Video width. |
| height | string | '540px' | Video height. |
| autoplay | boolean| false | Autoplay video on load. |
| frontendPreload | boolean| true | Generate thumbnail image at front end. |
| mute | boolean | true | Mute video at beginning. |
| borderRadius | string | '0' | Video border radius. |
| interval | number | 1 | Interval to load a thumbnail image, must be an integer, unit is second. |
| thumbnailRatio | number | 5 | Thumbnail image shrink ratio compared to video. |

## Contribute to this package
Are you interested in contributing to this package? Feel free to adding a new functionality and create a merge request.

## Roadmap

`fullScreen` - add full-screen control to the control bar just like YouTube Video did.