我的 Ionic Native 應用程式目前一直存在問題。
我正在嘗試將視頻檔案上傳到 firebase 存盤,我使用 Media Capture 處理錄制:
"@ionic-native/media-capture": "^5.36.0""
到目前為止這么好..當我嘗試將這個新檔案上傳到 firestore 時,檔案總是上傳損壞......或者檔案大小只有 9 位元組!??
這是我現在使用的代碼:
this.mediaCapture.captureVideo({duration: 10, quality: 0}).then(
(data: MediaFile[]) => {
if (data.length > 0) {
let originname = data[0].fullPath.substr(data[0].fullPath.lastIndexOf('/') 1);
let originpath = data[0].fullPath.substr(0, data[0].fullPath.lastIndexOf('/') 1);
let alerta = this.alerts.create({
buttons: ['ok'],
message: this.file.externalDataDirectory
});
alerta.then(set => set.present());
this.file.copyFile(originpath, originname, this.file.externalDataDirectory, 'video.mp4')
.then(result =>{
//let video = (document.getElementById('myvideo') as HTMLVideoElement).src = result.nativeURL;
//let path =this.webview.convertFileSrc(result.nativeURL);
// this.video = path;
// let alert = this.alerts.create({
// buttons: ['ok'],
// message: path
// });
// alert.then(set => set.present());
// let videoname = path.substr(path.lastIndexOf('/') 1);
// let videopath = path.substr(0, path.lastIndexOf('/') 1);
const data = Filesystem.readFile({
path: result.nativeURL
})
.then(data =>{
let blob= new Blob([data.data], {type: 'video/mp4'});
let ref = this.storage.storage.ref().child('videoTests').child('video.mp4')
ref.put(blob).then(
result =>{
let url = this.storage.ref('/videoTests/' 588 '.mp4').getDownloadURL();
url.subscribe(result =>{
console.log(result);
let alert = this.alerts.create({
buttons: ['ok'],
message: result
});
alert.then(set => set.present());
})
})
注意:對于背景關系,我嘗試使用本機 File readAsDataURL 但承諾永遠不會解決..在控制臺中我看到它正在處理但最后它只是卡住并且永遠不會解決..
- 離子 6.16.3
- Angular 核心 12.1.1
- 節點 14.15.0
非常感謝任何幫助或指導我現在有幾天卡在這一點上......
[解決了]
uj5u.com熱心網友回復:
已解決:現在已解決... Filesystem.readFile 的結果是 base64,所以我所要做的就是將此結果作為 base64 處理,然后將其轉換為 blob,這將成功上傳有效的視頻檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369051.html
