使用TypeScript无法使插件与waveurfer.js一起使用

时间:2018-09-01 15:45:28

标签: angular typescript wavesurfer.js

我正在尝试为我的应用程序中的音频和视频内容生成波形,当前使用的是angular 6和TypeScript。我可以使用waveurfer.js制作波形,但无法使时间轴插件正常工作。在我的angular.json中,我有这样的脚本

"scripts": [
          "node_modules/jquery/dist/jquery.min.js",  
          "node_modules/popper.js/dist/umd/popper.min.js",  
          "node_modules/bootstrap/dist/js/bootstrap.min.js",
          "node_modules/moment/min/moment.min.js",
          "node_modules/wavesurfer.js/dist/wavesurfer.js",
          "node_modules/wavesurfer.js/dist/plugin/wavesurfer.timeline.js" 
        ]

在我的component.ts文件中,我有类似的代码

declare var WaveSurfer;
declare var TimelinePlugin;

export class TranscriptComponent implements OnInit {

 ngAfterViewInit() {
  this.wavesurfer = WaveSurfer.create({
   container: '#waveform',
   waveColor: 'violet',
   progressColor: 'purple',
   cursorColor: '#d9fb36',
   normalize: true,
   skipLength: 15,
   hideScrollbar: true,
   backend: 'MediaElement',
   plugins: [
     TimelinePlugin.create({
       // plugin options ...
     })
   ]
 });

}

不带插件我可以得到波形,但是如果尝试添加插件,则会出现错误“ TimelinePlugin未定义”。  谁能告诉我如何使用Typescript使用这些插件。一个例子会很棒。

1 个答案:

答案 0 :(得分:0)

通过反复尝试,我在angular.json中的“脚本”数组(架构师和测试师)中显式添加了我所需插件的路径,从而实现了这一目的:

"scripts": [
    "./node_modules/wavesurfer.js/dist/wavesurfer.js",
    "./node_modules/wavesurfer.js/dist/plugin/wavesurfer.regions.js"
],

然后我使用音频播放器将插件导入组件:

import * as WaveSurfer from 'wavesurfer.js';
import * as WaveSurferRegions from 'wavesurfer.js/dist/plugin/wavesurfer.regions.js';

并初始化播放器:

ws: any;

ngOnInit() {
    this.ws = WaveSurfer.create({
        container: document.querySelector('#player_waveform'),
        backend: 'MediaElement',
        plugins: [
            WaveSurferRegions.create({
                regions: [
                    {
                        start: 1,
                        end: 3,
                        color: 'hsla(400, 100%, 30%, 0.5)'
                    }, {
                        start: 5,
                        end: 7,
                        color: 'hsla(200, 50%, 70%, 0.4)'
                    }
                ]
            })
        ]
    });
}

我还对npm进行了一些更改,但很难说这是否使事情起作用。我确实安装了较新的wavesurfer.jswavesurfer。我删除了waveurfer,这可能有所帮助?