【发布时间】:2011-11-06 08:35:03
【问题描述】:
我正在使用 Node.js、Express(和连接)和 fluent-ffmpeg。
我们希望通过 http 流式传输存储在 Amazon S3 上的音频文件。
我们都在工作,除了我们想添加一个功能,即通过 ffmpeg 对流进行即时转换。
这很好,问题是某些浏览器在实际获取文件之前会提前检查。
包含 Range 标头的传入请求(我们用 S3 的所有信息回复 206)存在一个基本问题:我们需要提前知道文件的内容长度。
我们不知道,因为它正在通过 ffmpeg。
一种解决方案可能是在存储文件时直接在 S3 上写出生成的内容长度(在一个特殊的标头中),但这意味着我们必须经历上传后排队编码的痛苦才能知道未来请求的大小。 这也意味着如果我们更改压缩器或预设,我们必须重新进行所有这些操作,所以这不是一个可行的解决方案。
我们还注意到 Chrome 和 Safari 请求音频标签 src 的方式有很大不同,但这可能是另一个话题的讨论。
事实是,如果没有适当的内容长度标头作为响应,一切似乎都会中断,或者浏览器进入无限循环或随意重新启动流。
想法?
【问题讨论】:
标签: html node.js ffmpeg connect express