获得“Uncaught (in promise): TypeError: Object(...) is not a function";来自 Ionic-native VideoEditor 插件的错误
我正在开发一个 ionic 应用,用户可以在其中录制新视频.然后我想将视频分解成帧并将帧发送到服务器.我正在使用 ionic-native
VideoEditor
插件中的 createThumbnail
函数.但是当我尝试调用 createThumbnail
函数时,它抛出
I'm developing an ionic app, where user can record a new video. Then I want to break the video into frames and send frames to a server. I'm using createThumbnail
function from ionic-native
VideoEditor
plugin. But when I try to call createThumbnail
function, it throws
ERROR Error: Uncaught (in promise): TypeError: Object(...) is not a function
ERROR Error: Uncaught (in promise): TypeError: Object(...) is not a function
这是我的源代码.
<ion-content padding>
<button ion-button full (click)="captureVideo()">Capture video</button>
<br/>
<ion-list>
<ion-item *ngFor="let file of mediaFiles" tappable (click)="playFile(file)" text-wrap>
{{file.name}}
<p>{{file.size/1000/1000 | number}} MB</p>
</ion-item>
</ion-list>
<video controls autoplay #myvideo></video>
</ion-content>
打字稿代码
captureVideo() {
let options: CaptureVideoOptions = {
limit: 1,
duration: 30
}
this.mediaCapture.captureVideo(options).then((res: MediaFile[]) => {
let videoData = JSON.stringify(res);
let res1 = JSON.parse(videoData);
this.videoURL = res1[0]['fullPath'];
let video = this.myvideo.nativeElement;
video.src = this.videoURL;
video.play();
var option: CreateThumbnailOptions = {
fileUri: res[0].fullPath,
outputFileName: 'aaaa',
atTime: 2,
width: 320,
height: 480,
quality: 100
};
console.log("option :" ,option);
this.videoEditor.createThumbnail(option).then(res=>{
console.log('Thumbnail result: ' + res);
}).catch(err=>{
console.log("ERROR ERROR", err)
});
}, (err) => {
console.log("ERROR", "error selecting video");
});
}
有人可以帮助我,为什么我会收到这样的错误?
Can someone help me with, why I'm getting such error?
ionic 团队似乎对其原生插件进行了一些更改.您需要安装与您的项目类型相对应的正确版本的原生插件.并根据您的角度版本正确导入它.你需要做的就是,
It seems ionic team has made some changes to their native plugins. You need to install the correct version of the native plugin corresponding to your project type. And import it correctly based on your angular version. All you need to do is,
在 ionic.config.json 文件中检查您的项目类型.
Check your project type in ionic.config.json file.
如果类型是ionic-angular",则安装4.x.x版本.你的情况
If the type is "ionic-angular", then install 4.x.x version. In your case
npm i -s @ionic-native/video-editor@4.20.0
如果类型是angular",则安装5.x.x-beta版
If the type is "angular", then install 5.x.x-beta version
npm i -s @ionic-native/video-editor@5.0.0-beta.24
注意:
仅当您使用 Angular 6 时才在导入结束时添加 ngx
Add ngx at the end of import only if you are using Angular 6
import { VideoEditor } from '@ionic-native/video-editor/ngx';
如果没有从 app.module.ts 和 app.component.ts 中的导入中删除 ngx
if not remove ngx from the import both in app.module.ts and app.component.ts
import { VideoEditor } from '@ionic-native/video-editor';
参考:https://github.com/ionic-team/ionic/issues/15225#issuecomment-414074074