Javascript 使用node和ffmpeg将编程创建的视频流传输到youtube
我一直在尝试使用node将通过编程创建的图像实时流式传输到youtube。我使用FFmpeg的成功非常有限。虽然我已经通过insightful thread创建并保存了一个图像,但我还没有将代码用于流式传输到RTMP服务器Javascript 使用node和ffmpeg将编程创建的视频流传输到youtube,javascript,node.js,ffmpeg,youtube,rtmp,Javascript,Node.js,Ffmpeg,Youtube,Rtmp,我一直在尝试使用node将通过编程创建的图像实时流式传输到youtube。我使用FFmpeg的成功非常有限。虽然我已经通过insightful thread创建并保存了一个图像,但我还没有将代码用于流式传输到RTMP服务器 const cp=require('child_process'), 目的地rtmp://a.rtmp.youtube.com/live2/[redacted],//流标记已编辑 proc=cp.spawn(“./ffmpeg/bin/ffmpeg.exe”[ “-f”,“r
const cp=require('child_process'),
目的地rtmp://a.rtmp.youtube.com/live2/[redacted],//流标记已编辑
proc=cp.spawn(“./ffmpeg/bin/ffmpeg.exe”[
“-f”,“rawvideo”,
“-pix_fmt”,“rgb24”,
“-s”,“426x240”,
'-i','-',//允许我们通过stdin插入缓冲区
“-f”、“flv”,
目的地
]);
过程标准管(过程标准管);
(函数循环(){
setTimeout(循环,1000/30);//以30 fps的速度运行循环
const data=Array.from({length:426*240*4},()=>~(Math.random()*0xff));//使用随机数据创建数组
proc.stdin.write(Buffer.from(data));//将数组转换为缓冲区并将其发送到ffmpeg
})();
当运行此代码时,不会出现任何错误,并且一切正常,但是,YouTube报告没有收到任何数据。有人知道这里出了什么问题吗
更新:这确实违反直觉,但在目标中添加了一个斜杠,如下所示
'rtmp://a.rtmp.youtube.com/live2/[redact]/'
导致ffmpeg抛出一个通用的I/O错误
。这对我来说真的很奇怪。抱歉,如果答案很明显,我对ffmpeg真的没有经验。这是一个明确的ffmpeg
问题,因此节点和javascript内容是一个不必要的复杂问题(除非ffmpeg
甚至没有执行)。最好在将ffmpeg
命令添加到任何代码之前,让它在命令行界面中工作
- YouTube需要音频流,因此添加
输入选项以生成无声音频-re-f lavfi-i anullsrc
- 对于实时流媒体,输出必须是YUV 4:2:0,因此添加
输出选项-vf format=yuv420p
- 还建议在流式处理时添加
,-g
,-b:v
,以及-maxrate
输出选项()-bufsize
- 使用
输出选项设置编码器,以确保不会自动选择名为flv1的破旧编码器,这是flv muxer的默认值(-c:v libx264-c:a aac
)-f flv