使用Node.js将视频文件内容循环推流到给定的RTMP地址和推流码,
使用 fluent-ffmpeg
库来处理视频文件,并使用node-media-server
库来搭建一个本地RTMP服务器。以下是一个示例代码,演示如何执行这些步骤:
npm install fluent-ffmpeg node-media-server
然后,创建一个Node.js脚本,比如streamVideoToRTMP.js,并将以下代码添加到该文件中:
const ffmpeg = require('fluent-ffmpeg');
const NodeMediaServer = require('node-media-server');
const rtmpServerConfig = {
rtmp: {
port: 1935, // RTMP服务器监听的端口
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60,
},
http: {
port: 8000, // HTTP服务器监听的端口
allow_origin: '*',
},
};
const videoFilePath = '要读取的视频文件路径'; // 替换成实际的视频文件路径
const rtmpAddress = 'rtmp://your-rtmp-server-url/app/stream-key'; // 替换成实际的RTMP地址和推流码
// 创建一个本地RTMP服务器
const nms = new NodeMediaServer(rtmpServerConfig);
// 监听RTMP服务器启动事件
nms.on('postPublish', (id, StreamPath, args) => {
console.log('视频流已连接');
// 使用FFmpeg将视频文件推流到RTMP服务器
ffmpeg()
.input(videoFilePath)
.inputOptions(['-re']) // 实时模式
.output(`${rtmpAddress}`)
.on('end', () => {
console.log('视频推流已完成');
})
.run();
});
将上述代码中的videoFilePath替换为要读取的视频文件的实际路径,
将rtmpAddress替换为直播平台提供的RTMP地址和推流码。
这个脚本创建了一个本地RTMP服务器,监听指定端口,并在收到连接请求时使用FFmpeg将视频文件内容推流到指定的RTMP地址。