gpt4 book ai didi

javascript - 将 .ogg blob 转换为谷歌驱动器文件

转载 作者:行者123 更新时间:2023-11-30 14:50:13 25 4
gpt4 key购买 nike

背景

我想录制学生的演讲,然后将他们的录音自动上传到 Google 云端硬盘。

现状

我有客户端代码可以生成包含 .ogg 记录的 blob。

var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' });

我可以在 doPost() 请求中将 blob 发送到 Google 应用程序脚本独立脚本。在这种情况下,我使用带有 promise 的 axios。

axios.post("https://script.google.com/macros/s/SOME_ID/exec", blob)
.then((response)=>{
console.log(response)
}).catch(error =>{
console.log(error)
})

blob 到达独立脚本。

独立的 Google 应用程序脚本

function doPost(e) {


var params = JSON.stringify(e.parameters);
createNewSoundFile(params)
return ContentService.createTextOutput(params);
}

function createNewSoundFile(blob){
var title = 'Was created from a recording'
var folderId = 'SOME_FOLDER_ID'
var resource = {
title: title,
parents: [
{
"id": folderId,
"kind": "drive#fileLink"
}
],
mimeType: 'application/vnd.google-apps.audio',
};
try{

var newfile = Drive.Files.insert(resource, blob).id

} catch(e){
// Send error to Google sheet
// Exception: The mediaData parameter only supports blob types for uploads.

}
}

问题

上面的应用程序脚本代码表示 blob 不是支持的媒体类型。

问题

如何从在浏览器中创建的 .ogg blob 在 Google 驱动器中创建一个新的 .ogg 文件?

最佳答案

这些修改怎么样?

修改点:

javascript 端:

  • blob编码成base64,作为字符串数据发送。

气体端:

  • 将base64解码为blob,并保存为一个ogg文件,mimeType为audio/ogg
  • 将文件另存为 audio/ogg
    • 在我的环境中,它无法从 audio/ogg 转换为 application/vnd.google-apps.audio

修改脚本:javascript端

发件人:

axios.post("https://script.google.com/macros/s/SOME_ID/exec", blob)
.then((response)=>{
console.log(response)
}).catch(error =>{
console.log(error)
})

收件人:

var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
base64 = reader.result.replace(/^.*,/, "");
let data = new URLSearchParams();
data.append('data', base64);
axios.post(
"https://script.google.com/macros/s/SOME_ID/exec",
data,
{headers: {'Content-Type': 'application/x-www-form-urlencoded'}}
).then((response)=>{
console.log(response)
}).catch(error =>{
console.log(error)
});
}

修改脚本:GAS端

收件人:

function createNewSoundFile(base64){
var data = Utilities.base64Decode(base64.parameters.data); // Added
var blob = Utilities.newBlob(data); // Added

var title = 'Was created from a recording'
var folderId = 'SOME_FOLDER_ID'
var resource = {
title: title,
parents: [
{
"id": folderId,
// "kind": "drive#fileLink" // I didn't know whether this is required.
}
],
mimeType: "audio/ogg", // Modified
};
try{

var newfile = Drive.Files.insert(resource, blob).id

} catch(e){
// Send error to Google sheet
// Exception: The mediaData parameter only supports blob types for uploads.

}
}

注意事项:

  • 在我的环境中,javascript 端的脚本需要 {headers: {'Content-Type': 'application/x-www-form-urlencoded'}}。如果您的环境不需要它,请将其删除。

如果我误解了你的问题,我很抱歉。

关于javascript - 将 .ogg blob 转换为谷歌驱动器文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48255683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com