首页 > 解决方案 > 来自文件系统的视频流

问题描述

我正在尝试制作一个视频服务器,我的场景是用户将在那里上传文件,我有一个屏幕可以播放当天的所有文件,比如我们通常在电视上观看的广告。

到目前为止,我已经通过节点媒体服务器实现了 .hls 和 .flv 流媒体。

我发现流式传输文件的最佳方式是通过 FFMPEG,但我无法在同一输出 url 上流式传输多个文件,例如 localhost:8000/index.m3u8,任何人都可以建议我正确的方式来传输下一个文件何时FFMPEG 结束前一个文件的流式传输。

提前致谢。:)

我的节点媒体服务配置

{
  rtmp: {
    port: 1935,
    chunk_size: 60000,
    gop_cache: true,
    ping: 30,
    ping_timeout: 60
  },
  http: {
    port: 8000,
    mediaroot: './media',
    allow_origin: '*'
  },
  trans: {
    ffmpeg: 'E:/Red Matrix/node-stream-master/node-stream-master/usr/bin/ffmpeg.exe',
    tasks: [
      {
        app: 'live',
        hls: true,
        hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]',
        dash: true,
        dashFlags: '[f=dash:window_size=3:extra_window_size=5]'
      }
    ]
  }
};

FFMPEG流功能

function ffmpegStream(stream){

  var proc = ffmpeg()
  .input('D:/Videos/1.MP4')
    .on('error', function (err) {
      console.log('An error occurred: ' + err.message);
    })
    .on('end', function (e) {

      console.log('Processing end !' + JSON.stringify(this));

       ffmpegStream('D:/Videos/2.MP4')
    })
    .on('done', function() {
      console.log('Processing finished !');

    })
    .save('./media/live/abc/index.m3u8');
}

标签: node.jsffmpegvideo-streaming

解决方案


推荐阅读