Node.js ffmpeg:实例中未启动视频流
我已经设置了使用Node.js ffmpeg:实例中未启动视频流,node.js,ffmpeg,video-streaming,Node.js,Ffmpeg,Video Streaming,我已经设置了使用ffmpeg的流式编码。它在我的本地系统中运行得非常好 本地版本 ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 var args = [ '-y',
ffmpeg
的流式编码。它在我的本地系统中运行得非常好
本地版本
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
'-y',
'-re',
'-i', `${filePath}`,
'-listen', '1',
'-s', '640x480',
'-codec:a', 'aac -strict experimental',
'-b:a', '44.1k',
'-preset', 'superfast',
'-r', '15',
'-b:v', '1000k',
'-tune', 'zerolatency',
'-c:a', 'aac',
'-ar', '44100',
'-c:v', 'libx264',
'-f', 'flv', streamURL
];
let ffmpeg = spawn(`ffmpeg`, args);
ffmpeg.on('exit', (statusCode) => {
console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
if (statusCode === 0) {
console.log('conversion successful')
}
})
ffmpeg.stderr.on('data', (err) => {
console.log('err:', new String(err))
})
ffmpeg.on('close', function () {
console.log('finished');
});
实时版本
ffmpeg version 3.4.6 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (GCC)
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
GCC版本
本地
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
'-y',
'-re',
'-i', `${filePath}`,
'-listen', '1',
'-s', '640x480',
'-codec:a', 'aac -strict experimental',
'-b:a', '44.1k',
'-preset', 'superfast',
'-r', '15',
'-b:v', '1000k',
'-tune', 'zerolatency',
'-c:a', 'aac',
'-ar', '44100',
'-c:v', 'libx264',
'-f', 'flv', streamURL
];
let ffmpeg = spawn(`ffmpeg`, args);
ffmpeg.on('exit', (statusCode) => {
console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
if (statusCode === 0) {
console.log('conversion successful')
}
})
ffmpeg.stderr.on('data', (err) => {
console.log('err:', new String(err))
})
ffmpeg.on('close', function () {
console.log('finished');
});
现场直播
ffmpeg version 3.4.6 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (GCC)
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
在我的本地计算机中运行良好的代码
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
'-y',
'-re',
'-i', `${filePath}`,
'-listen', '1',
'-s', '640x480',
'-codec:a', 'aac -strict experimental',
'-b:a', '44.1k',
'-preset', 'superfast',
'-r', '15',
'-b:v', '1000k',
'-tune', 'zerolatency',
'-c:a', 'aac',
'-ar', '44100',
'-c:v', 'libx264',
'-f', 'flv', streamURL
];
let ffmpeg = spawn(`ffmpeg`, args);
ffmpeg.on('exit', (statusCode) => {
console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
if (statusCode === 0) {
console.log('conversion successful')
}
})
ffmpeg.stderr.on('data', (err) => {
console.log('err:', new String(err))
})
ffmpeg.on('close', function () {
console.log('finished');
});
错误:
ffmpeg -re -i '{MyS3URL}' -c:v libx264 -preset superfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://{{instanceIp}}/live/myStream
err: [String: 'ffmpeg version 3.4.6']
err: [String: ' Copyright (c) 2000-2019 the FFmpeg developers']
err: [String: '\n']
err: [String: ' built with gcc 7 (GCC)\n']
err: [String: ' configuration: \n']
err: [String: ' libavutil 55. 78.100 / 55. 78.100\n']
err: [String: ' libavcodec 57.107.100 / 57.107.100\n']
err: [String: ' libavformat 57. 83.100 / 57. 83.100\n libavdevice
57. 10.100 / 57. 10.100\n libavfilter 6.107.100 / 6.107.100\n
libswscale 4. 8.100 / 4. 8.100\n libswresample 2. 9.100 /
2. 9.100\nUnrecognized option \'tune\'.\nError splitting the argument
list: Option not found\n']
statusCode ::::::::::::::::::::::::::::::::: 1
finished
注意:
正如你所看到的,我已经创建了一个动态URL
另外,我直接得到了statusCode=1。当我在本地术语中粘贴相同的URL并点击回车键时,我的流媒体就开始了
所以问题是为什么它不能在live中工作?看起来您的live版本没有链接libx264。ffmpeg配置应显示--enable-libx264那么我是否需要将其添加到args的数组中?您需要一个带有libx264的二进制文件。对于linux,从中获取一个对我来说有点困惑。有很多包链接在那里。你能帮我一下吗?找一个名为ffmpeg-git-amd64-static.tar.xzLooks的,就像你的live版本没有链接libx264一样。ffmpeg配置应显示--enable-libx264那么我是否需要将其添加到args的数组中?您需要一个带有libx264的二进制文件。对于linux,从中获取一个对我来说有点困惑。有很多包链接在那里。你能帮我吗?找一个叫ffmpeg-git-amd64-static.tar.xz的