新建   文章列表   相册  后台  网摘
 

Kreos

Kreos 无所不能

将 m3u8 流中继推流为 RTMP 流,

m3u8中继推流rtmp
 
豆包

要将 m3u8 流中继推流为 RTMP 流,可以借助一些工具来实现,下面分别介绍使用 FFmpeg 和 Node.js 结合第三方库的实现方法。

使用 FFmpeg 实现 m3u8 中继推流 RTMP

1. 安装 FFmpeg

FFmpeg 是一个强大的开源音视频处理工具,你可以从 https://ffmpeg.org/download.html 下载适合你操作系统的版本,并按照官方文档进行安装。

2. 执行推流命令

打开终端或命令提示符,使用以下 FFmpeg 命令将 m3u8 流推送到 RTMP 地址:

bash
 
ffmpeg -i "https://example.com/your-stream.m3u8" -c copy -f flv "rtmp://example.com/live/stream-key"
  • -i "https://example.com/your-stream.m3u8":指定输入的 m3u8 流地址。
  • -c copy:直接复制音视频流,不进行重新编码,这样可以减少 CPU 负载。
  • -f flv:指定输出格式为 FLV,这是 RTMP 常用的格式。
  • "rtmp://example.com/live/stream-key":指定 RTMP 推流地址。

使用 Node.js 结合第三方库实现 m3u8 中继推流 RTMP

1. 创建项目并安装依赖

首先,创建一个新的项目目录,然后初始化项目:

bash
 
mkdir m3u8-to-rtmp
cd m3u8-to-rtmp
npm init -y

接着,安装 fluent-ffmpeg 库,它是 FFmpeg 的 Node.js 封装:

bash
 
npm install fluent-ffmpeg

2. 编写 Node.js 代码

在项目目录下创建一个名为 index.js 的文件,并添加以下代码:

javascript
 
const ffmpeg = require('fluent-ffmpeg');

// 输入的 m3u8 流地址
const m3u8Url = 'https://example.com/your-stream.m3u8';
// 输出的 RTMP 地址
const rtmpUrl = 'rtmp://example.com/live/stream-key';

const command = ffmpeg(m3u8Url)
  .inputOptions([
    '-re' // 以本地帧率读取输入流
  ])
  .videoCodec('copy') // 复制视频流,不进行重新编码
  .audioCodec('copy') // 复制音频流,不进行重新编码
  .format('flv') // 指定输出格式为 FLV
  .on('start', (commandLine) => {
    console.log('开始推流,执行命令: ' + commandLine);
  })
  .on('error', (err) => {
    console.error('推流过程中出现错误: ' + err.message);
  })
  .on('end', () => {
    console.log('推流结束');
  })
  .save(rtmpUrl);

3. 运行代码

在终端中运行以下命令启动推流:

bash
 
node index.js

以上两种方法都可以实现将 m3u8 流中继推流为 RTMP 流,你可以根据自己的需求选择合适的方法。需要注意的是,要确保输入的 m3u8 流地址和输出的 RTMP 地址是有效的。

 

posted on 2026-03-13 14:29  前沿风暴  阅读(39)  评论(0)    收藏  举报

导航


校内网 © 2004-2026

京公网安备 33010602011771号 京ICP备2021040463号-3