ffmpeg在180秒(3分钟)后停止将h264帧流推送到媒体服务器

时间:2019-12-19 09:49:44

标签: node.js ffmpeg rtmp

我的目的是让大量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)

0 个答案:

没有答案