问题描述
我正在尝试使用 node.js 作为后端将视频直接流式传输到浏览器。我希望视频从特定时间开始流式传输,也希望它部分流式传输,因为它是一个非常大的文件。现在我正在用 fluent-ffmpeg 做这个,就像这样:
const ffmpeg = require('fluent-ffmpeg');
app.get('/clock/',(req,res) => {
const videoPath = 'video.mp4';
const Now = new Date();
ffmpeg(videoPath)
.videoCodec('libx264')
.withAudioCodec('aac')
.setStartTime(`${(Now.getHours() - 10) % 24}:${Now.getMinutes() - 1}:${Now.getSeconds()}`)
.format('mp4')
.outputoptions(['-frag_duration 100','-movflags frag_keyframe+faststart','-pix_fmt yuv420p'])
.on('end',() => {
console.log("File has been converted succesfully");
})
.on('error',(err) => {
if (err.message.toLowerCase().includes('output stream closed')) return;
console.log('An error occoured',err);
})
.pipe(res,{ end: true });
});
这将适用于 Chrome,但 Safari 只是不想流式传输它。 我知道它在 Safari 上不起作用的原因是 Safari 需要范围标题。因此,我尝试这样做,但是:
- 我无法让它与 fluent-ffmpeg 一起使用。
- 当我尝试以“正常”方式执行此操作时,没有 fluent-ffmpeg,它需要在播放之前加载整个视频文件。
视频不需要在特定的时间戳开始。这会很好,但如果不可能,我有一个解决方法:)
所以我的问题是:如何让上面的代码与 Safari 一起使用。如果这是不可能的:我如何编写不需要完全加载的内容,然后才能在 Safari 浏览器中播放。部分视频流。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)