egg
egg copied to clipboard
视频流返回前端无法播放
Discussed in https://github.com/eggjs/egg/discussions/4767
Originally posted by liyang9331 September 27, 2021
ctx.set('content-type', 'video/mp4');//设置返回类型
let stream = fs.createReadStream('./assets/test.mp4');
if (stream) {//判断状态
stream.on('open', function () {
console.log('文件打开')
});
stream.on('end', function () {
console.log("读取完毕")
})
stream.on('data', function (data) {
// console.log("读取文件流")
ctx.body = data
})
stream.on('err', function () {
console.log("发生错误")
})
stream.on('close', function () {
console.log('关闭')
// ctx.end
});
}
谁跟你说 Koa 的 body 可以多次赋值,然后响应的。。。
only ctx.body = stream,koa will handle stream
谁跟你说 Koa 的 body 可以多次赋值,然后响应的。。。
不可以多次响应,如何分段返回媒体流? ctx.body = stream,不是将整个媒体流返回了吗?
不可以多次响应,如何分段返回媒体流? ctx.body = stream,不是将整个媒体流返回了吗?
要多次分段返回只能自己切割后多次靠逻辑组合多次请求。
http 请求自身本来就只能 send 一次,或者你可以用 stream.PassThrough 自己控制输出速度。
谁跟你说 Koa 的 body 可以多次赋值,然后响应的。。。
不可以多次响应,如何分段返回媒体流?
ctx.body = stream,不是将整个媒体流返回了吗?
你是在 data 事件里面赋值的啊, 这是一个重复行为。而且没有 await 事件