是否可以在浏览器中使用纯JavaScript保存音频流
Is it possible to save an audio stream with pure JavaScript in the browser?
我想制作一个网页,访问者可以通过点击链接(不是实时流,而是来自使用流的无线电档案的链接)来保存音频流,我想在浏览器中没有纯JavaScript的服务器后端的情况下完成这项工作。我在某个地方读到了关于FFMpeg的JavaScript端口,它可以利用所谓的Blob在浏览器中编码和保存视频/音频。然而,下载库是巨大的,就我记忆中的17MB而言。事实上,我只需要流复制音频流,而不是真正的编码过程。我通常使用类似的命令来保存程序:
ffmpeg -i http://stream.example.com/stream_20160518_0630.mp3 -c copy -t 3600 programme.mp3
我想知道,是否有可能将FFMpeg的一个子集编译成只提供真正需要的流复制的JavaScript?
var audio = new Audio();
var ms = new MediaSource();
var chunks = [];
audio.src = URL.createObjectURL(ms);
ms.addEventListener('sourceopen', function(e) {
var sourceBuffer = ms.addSourceBuffer('audio/mpeg');
var stream;
function pump(stream){
return stream.read().then(data => {
chunks.push(data.value)
sourceBuffer.appendBuffer(data.value);
})
};
sourceBuffer.addEventListener('updateend', () => {
pump(stream);
}, false);
fetch("http://stream001.radio.hu:443/stream/20160606_090000_1.mp3")
.then(res=>pump(stream = res.body.getReader()))
audio.play()
}, false);
// stop the stream when you want and save all chunks that you have
stopBtn.onclick = function(){
var blob = new Blob(chunks)
console.log(blob)
// Create object url, append to link, trigger click to download
// or saveAs(blob, 'stream.mp3') need: https://github.com/eligrey/FileSaver.js
}
相关文章:
- 是否可以在浏览器中使用纯JavaScript保存音频流
- JavaScript-保存、存储和更新数组
- 使用 Javascript 保存 Popup 数据
- 以HTML和javascript保存数据
- 通过本地应用程序的Javascript保存文件
- 如何使用javascript保存网页
- JavaScript保存来自ajax请求的数据
- Javascript:保存和恢复浏览器窗口大小
- Javascript:保存和恢复样式状态在IE中不起作用
- 在英特尔XDK上使用javascript保存捕获的图像
- Tinymce-创建一个自定义的javascript保存按钮
- 通过javascript保存带有当前日期和时间的excel文件
- 使用javascript保存XHR文件
- 如何使用 javascript 保存当前网址
- 如何使用 JavaScript 保存菜单状态
- 通过 Javascript 保存/取消输入
- Javascript 保存相同的 ID,而不会在 LocalStorage 中覆盖另一个 ID
- 从外部域 javascript 保存的本地存储不会保存在外部域下
- 无法使用 javascript 保存数据
- 如何使用 Ajax 和 JavaScript 保存 XML 文件