gpt4 book ai didi

javascript - Node.js 中两个子进程之间的管道?

转载 作者:行者123 更新时间:2023-11-30 17:29:29 26 4
gpt4 key购买 nike

我正在尝试使用 FFmpeg 和 Node.js 捕获视频,并通过 websockets 将其发送到浏览器以使用 MediaSource API 进行播放。到目前为止,我在 Firefox 中工作,但在 Chrome 中无法正确解码。显然,从阅读this question我需要使用 sample_muxer 程序来确保每个“集群”都以关键帧开始。

这是我使用的代码:

var ffmpeg = child_process.spawn("ffmpeg",[
"-y",
"-r", "30",

"-f","dshow",
"-i","video=FFsource:audio=Stereo Mix (Realtek High Definition Audio)",

"-vcodec", "libvpx",
"-acodec", "libvorbis",

"-threads", "0",

"-b:v", "3300k",
"-keyint_min", "150",
"-g", "150",

"-f", "webm",

"-" // Output to STDOUT
]);

ffmpeg.stdout.on('data', function(data) {
//socket.send(data); // Just sending the FFmpeg clusters works with Firefox's
// implementation of the MediaSource API. No joy with Chrome.

// - - - This is the part that doesn't work - - -
var muxer = child_process.spawn("sample_muxer",[
"-i", data, // This isn't correct...

"-o", "-" // Output to STDOUT
]);

muxer.stdout.on('data', function(muxdata) {
socket.send(muxdata); // Send the cluster
});
});

ffmpeg.stderr.on('data', function (data) {
console.log("" + data); // Output to console
});

显然我没有正确地传递它,而且我不确定在包含参数的同时我会怎么做。感谢任何帮助使它正常工作。谢谢!

最佳答案

sample_muxer 程序将 -i 参数作为文件名。它不能读取视频数据作为标准输入。要查看错误,您应该将错误流从 sample_muxer 发送到错误日志文件。

var muxer = child_process.spawn("sample_muxer",[
"-i", data, // This isn't correct...
"-o", "-" // Output to STDOUT
]);

此代码将在 https://code.google.com/p/webm/source/browse/sample_muxer.cpp?repo=libwebm#240 处导致错误

您可以尝试从 ffmpeg 写入文件,然后从 sample_muxer 读取该文件。一旦成功,尝试使用 FIFO 文件将数据从 ffmpeg 传输到 sample_muxer。

关于javascript - Node.js 中两个子进程之间的管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456094/

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