html - Angular 2 中的 Videogular 使用 VgAPI

标签 html angular video videogular

我开始使用 Videogular2 并尝试同时播放和控制多个视频。

根据文档,您可以使用主视频和从视频来使用相同的控件来控制它们,不幸的是,我的解决方案中 2 个视频的数量有限。

还有 vgFor,您可以在其中定义控件应该为哪个视频工作,但同样,我无法输入多个视频。 http://videogular.github.io/videogular2/docs/modules/controls/vg-controls/

另一种选择是使用 API https://github.com/videogular/videogular2/blob/master/docs/getting-started/using-the-api.md

它说,VgAPI 服务控制 vg-player 元素内的所有媒体对象。

但是我在实现这个方面遇到了问题。

我目前有一个 vg-player,里面有 4 个视频。在底部我有一个播放和停止按钮,与 vg-player 分开。

//video-player.component.html

<vg-player (onPlayerReady)="onPlayerReady($event)">
  <video [vgMedia]="media" preload="auto">
    <source src="http://static.videogular.com/assets/videos/videogular.mp4" type="video/mp4">
  </video>

  <video [vgMedia]="media1"preload="auto">
    <source src="http://static.videogular.com/assets/videos/videogular.mp4" type="video/mp4">
  </video>

  <video [vgMedia]="media2" preload="auto">
    <source src="http://static.videogular.com/assets/videos/videogular.mp4" type="video/mp4">
  </video>

  <video [vgMedia]="media3" preload="auto">
    <source src="http://static.videogular.com/assets/videos/videogular.mp4" type="video/mp4">
  </video>
</vg-player>


<button ion-button (click)="playVideo()" id="playButton" [hidden]="isPlaying">Play</button>
<button ion-button (click)="stopVideo()" id="stopButton" [hidden]="isPlaying">Stop</button>

//video-player.component.ts

import { Component, OnInit, ElementRef } from '@angular/core';
import { VgPlayer, VgAPI } from 'videogular2/core';
import { Observable } from 'rxjs/Observable';

@Component({
  selector: 'app-video-player',
  templateUrl: './video-player.component.html',
  styleUrls: ['./video-player.component.css']
})

export class VideoPlayerComponent implements OnInit {
  preload: string = 'auto';
  api: VgAPI;
  isPlaying: boolean;

  constructor(private _element: ElementRef) {
    this.isPlaying = false;
  }

  onPlayerReady(api: VgAPI) {
    this.api = api;

    console.log('api', api);

    this.api.getDefaultMedia().subscriptions.ended.subscribe(
      () => {
        // Set the video to the beginning
        this.api.getDefaultMedia().currentTime = 0;
      }
    );
  }

  playVideo(api: VgAPI) {
    this.api = api;
    console.log('Playing video . . . ');
    this.isPlaying = true;
    this.api.play();
  }

  stopVideo(api: VgAPI) {
    this.api = api;
    console.log('Stopping video . . . ');
    this.isPlaying = false;
    this.api.pause();
    this.api.getDefaultMedia().currentTime = 0;
  }

}

我目前有两个错误:

  • 无法读取 VgMedia 处未定义的属性“nodeName”(当我启动 videoPlayer 组件时)

  • 无法读取未定义的属性“播放”(当我单击播放或停止按钮时)

最佳答案

我是这样做的。

<div class="playbutton">
  <div *ngIf="api?.state === 'playing';then playing else paused"></div>

  <ng-template #paused>
    <i class="material-icons" (click)="api.play()">play_circle_outline</i>
  </ng-template>

  <ng-template #playing>
    <i class="material-icons" (click)="api.pause()">pause_circle_outline</i>
  </ng-template>
</div>

<div class="back">
  <i class="material-icons"  (click)="prevVideo()">fast_rewind</i>
</div>
<div class="forward">
  <i class="material-icons"  (click)="nextVideo()">fast_forward</i>
</div>

对于它的 API

应用程序接口(interface):VgAPI;

关于html - Angular 2 中的 Videogular 使用 VgAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332668/

相关文章:

html - 在 CSS/HTML 中扩展我的导航栏的边(就像标题一样)

javascript - 如何使用 addmore 函数 javascript 在表单中添加日期字段

angular - 单击 ngFor 内的链接时没有任何反应

angular - 当父组件上的变量更改时重新加载子组件。 Angular 2

android - 如何在Android上对视频进行硬件解码?

audio - 使用 ffmpeg 同步带有音频的视频文件正在返回没有音频的视频

javascript - onclick 函数不运行

angular - 垫选择 : Programmatically pre-selecting items

php - 使用 ffmpeg 和 php 执行帧转换

javascript - 点击交换两个元素