gpt4 book ai didi

javascript - node.js 将 ffmpeg 标准输出实时流式传输到 res

转载 作者:行者123 更新时间:2023-12-04 23:29:28 27 4
gpt4 key购买 nike

我希望 node.js 将一个极长的音频文件转换为 mp3,并且第二个数据在 stdout 上可用,node.js 应该将其发送到客户端供他们播放。

我写了以下内容,虽然它可以工作,但 html5 音频/视频标签会一直等到 ffmpeg 100% 完成转码,因为我想在 ffmpeg 做它的时候开始播放视频。

var ffmpeg = childProcess.spawn('ffmpeg', [
'-i', params.location, //location of the specified media file
'-f', 'mp3',
'pipe:1'
]);
res.writeHead(200, {
'Content-Type': 'audio/mp3'
});
ffmpeg.stdout.pipe(res);

编辑 1:不知道为什么,但如果 params.location 指向一部电影,一切似乎都有效。但是,如果它是一个音频文件,那么 ffmpeg 在 100% 转换之前似乎不会输出到标准输出。

编辑 2:事实证明,由于 mp4 文件不是因果关系( http://en.wikipedia.org/wiki/Causal_system ),因此您无法将 mp4 文件转储到 stdout。因此,如果您使用 webm 它可以工作。只需确保编译带有 webm 支持的 ffmpeg(对于自制软件用户: brew install ffmpeg --with-vpx --with-vorbis )。

我上传了一个 github gist,显示了两个发送实时 mp3/webm 转码的函数: https://gist.github.com/cobookman/c1a9856a4588496b021a

最佳答案

我不知道为什么这对您不起作用,因为我的应用程序中的代码几乎完全相同。不同的是我使用的是 -而不是 pipe:1为输出。试试看。

我建议的另一件事是阅读 FFmpeg 的 stderr这样您就可以查看 FFmpeg 是否有任何奇怪的输出,可以为您提供有关正在发生的事情的线索。

关于javascript - node.js 将 ffmpeg 标准输出实时流式传输到 res,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com