Blob 包含一个 WAV 文件和一个 WAV 文件:有什么区别以及如何相互转换?
Blob containing a WAV file and a WAV file: what's the difference and how to convert to each other?
前提:我注意到还有其他类似的问题,但看起来有趣的问题没有答案。例如Have a blob for a wav file on client side, how do I send it as a wav file to the server?
我正在使用 RecordRTC 获取用户语音输入的 WAV 文件。
我得到的是一个 Blob(二进制文件)(在控制台上)打印为:
Blob {}
size: 131116
type: "audio/wav"
__proto__
我知道 Blob 包含 WAV 音频流,但 WAV 包含在 Blob 中,而不是 WAV 容器(即 WAV 文件)。 对吗?
那么,如何提取 WAV 流,例如通过 ajax/http 调用将其发送到服务器?
如果需要,我不介意使用 HTTP 或 NodeJS 脚本。
EDIT 我将尝试在一个答案中提出的建议。
因为我在 AngularJS 中这样做(我仍然是初学者)我想做一些类似...
services.sendAudioMessage(recordedAudio)
.then(function (data) {
}
其中 services 由工厂定义:
.factory('services', function($http,$q) {
return {
sendAudioMessage: function (audioMessage) {
return $http.jsonp('http://.../api.php?callback=JSON_CALLBACK', {
params: {
audio: audioMessage
}
})
.then(function (response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
}, function (response) {
return $q.reject(response.data);
});
}
};
});
而不是使用 Ajax 中提议的调用:How can javascript upload a blob?
Blob 只是一个二进制文件 object in-memory。 RecordRTC 实际上为您在 Blob 中存储了一个带有 WAV headers 的完整 WAV 文件。它不仅仅是 PCM 样本,它是一个普通的 WAV 文件。
您可以直接对该数据执行某些操作,也可以像任何其他 blob 一样上传到您的服务器。另见:https://whosebug.com/a/13333478/362536
前提:我注意到还有其他类似的问题,但看起来有趣的问题没有答案。例如Have a blob for a wav file on client side, how do I send it as a wav file to the server?
我正在使用 RecordRTC 获取用户语音输入的 WAV 文件。
我得到的是一个 Blob(二进制文件)(在控制台上)打印为:
Blob {}
size: 131116
type: "audio/wav"
__proto__
我知道 Blob 包含 WAV 音频流,但 WAV 包含在 Blob 中,而不是 WAV 容器(即 WAV 文件)。 对吗?
那么,如何提取 WAV 流,例如通过 ajax/http 调用将其发送到服务器?
如果需要,我不介意使用 HTTP 或 NodeJS 脚本。
EDIT 我将尝试在一个答案中提出的建议。 因为我在 AngularJS 中这样做(我仍然是初学者)我想做一些类似...
services.sendAudioMessage(recordedAudio)
.then(function (data) {
}
其中 services 由工厂定义:
.factory('services', function($http,$q) {
return {
sendAudioMessage: function (audioMessage) {
return $http.jsonp('http://.../api.php?callback=JSON_CALLBACK', {
params: {
audio: audioMessage
}
})
.then(function (response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
}, function (response) {
return $q.reject(response.data);
});
}
};
});
而不是使用 Ajax 中提议的调用:How can javascript upload a blob?
Blob 只是一个二进制文件 object in-memory。 RecordRTC 实际上为您在 Blob 中存储了一个带有 WAV headers 的完整 WAV 文件。它不仅仅是 PCM 样本,它是一个普通的 WAV 文件。
您可以直接对该数据执行某些操作,也可以像任何其他 blob 一样上传到您的服务器。另见:https://whosebug.com/a/13333478/362536