【发布时间】:2020-08-28 21:42:33
【问题描述】:
我正在尝试在浏览器中使用 ytdl-core 来下载 mp3。我让 ytdl-core 在没有 Node.js 的浏览器中工作,但是在将流保存为文件时遇到了一些问题。一般情况下,您应该有一个客户端/服务器一起执行此操作,但我想知道是否可以全部在客户端完成。
这是我不知道如何使用纯JS重新创建的部分。
fs.createWriteStream('video.flv')
这是我尝试下载为 mp3 的对象:
PassThrough {_readableState: ReadableState, readable: true, _events: {…}, _eventsCount: 2, _maxListeners: undefined, …}
allowHalfOpen: true
destroy: () => { stream._isDestroyed = true; }
readable: true
writable: true
_events: {end: ƒ, prefinish: ƒ}
_eventsCount: 2
_maxListeners: undefined
_readableState: ReadableState {objectMode: false, highWaterMark: 524288, buffer: BufferList, length: 0, pipes: null, …}
_transformState: {needTransform: false, transforming: false, writecb: null, writechunk: null, afterTransform: ƒ, …}
_writableState: WritableState {objectMode: false, highWaterMark: 524288, finalCalled: false, needDrain: false, ending: false, …}
destroyed: (...)
readableHighWaterMark: (...)
writableHighWaterMark: (...)
__proto__: Transform
这是ytdl-core使用Node.js给出的例子。
const fs = require('fs');
const ytdl = require('ytdl-core');
// TypeScript: import ytdl from 'ytdl-core'; with --esModuleInterop
// TypeScript: import * as ytdl from 'ytdl-core'; with --allowSyntheticDefaultImports
// TypeScript: import ytdl = require('ytdl-core'); with neither of the above
ytdl('http://www.youtube.com/watch?v=A02s8omM_hI')
.pipe(fs.createWriteStream('video.flv'));
所以我的问题是,有没有办法将文件流保存在纯 JS 中,然后将文件全部下载到浏览器中?
【问题讨论】:
标签: javascript node.js