我的目的是让大量h264帧在浏览器上播放。
我想做的是将这些帧推送到ffmpeg并播放到node-media-server(我也尝试过srs,仍然在180s时崩溃了。所以我认为node-media-server应该不是问题) flv.js在浏览器上显示它。它可以在前180秒内正常工作,并且总是在180秒后崩溃。
180秒钟后,节点进程仍保持活动状态,而180秒钟后,node-media-server没有收到任何消息。所以我认为问题可能是在ffmpeg上引起的。由于该数字始终为180秒,因此我认为ffmpeg的参数可能有误。
感谢所有看到我问题的人 这是来自nodejs端的代码:
const spawn = require('child_process').spawn
const GET_FRAME = require('XXX') // just a cpp addon to get frame buffer encoded of h264
let args = [
'-i', 'pipe:0',
'-use_wallclock_as_timestamps', '1',
'-max_delay', '5',
'-r', '25',
'-c', 'copy',
'-preset:v', 'ultrafast',
'-tune:v', 'zerolatency',
'-f', 'flv',
'-g', '5',
'rtmp://127.0.0.1/live/test'
]
let $ffmpeg = spawn('ffmpeg', args)
setInterval(() => {
let $FrameH264 = GET_FRAME()
console.log($FrameH264) // buffers keep printing after 180s
$ffmpeg.stdin.write($FrameH264)
}, 1000 / 30)