node.js - 来自文件系统的视频流
问题描述
我正在尝试制作一个视频服务器,我的场景是用户将在那里上传文件,我有一个屏幕可以播放当天的所有文件,比如我们通常在电视上观看的广告。
到目前为止,我已经通过节点媒体服务器实现了 .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');
}
解决方案
推荐阅读
- java - 构造函数调用的 AspectJ 切入点
- xml - gwt html显示XML但没有显示空格
- objective-c - 从 NSUserDefaults 检索 URL 时,NSString stringWithContentsOfURL 返回 nil
- docker - 容器正在等待 jenkins-slave [jnlp]:错误创建卷路径'/var/lib/docker/volumes/8db 权限被拒绝
- swagger-ui - 如何在 swagger 2.0 中定义 basePath
- java - 我的 java 程序有线程阻塞,我需要帮助找出原因
- android - 创建没有定义组但在 Play 商店中不可见的 alpha/beta 版本?
- python - 对 pandas 中相同行的列表理解
- sockets - 错误的文件描述符 Boost asio
- oracle-apex-5.1 - Oracle APEX 交互式网格显示太多重复项