FLV.js与RTMP支持
FLV.js 是一个由Bilibili开源的JavaScript库,主要用于在浏览器中播放FLV格式的视频流。FLV(Flash Video)是一种流行的视频格式,尤其在在线直播领域有广泛应用。
RTMP(Real Time Messaging Protocol)则是一种专为实时传输音视频数据而设计的协议,广泛应用于直播系统中。
FLV.js本身并不直接支持RTMP协议。它主要是用于解析和播放已经通过HTTP协议传输的FLV视频流。然而,可以通过一些额外的步骤和工具来实现RTMP流的播放。
node-media-server
或其他类似库来接收RTMP流,并将其转换为HTTP-FLV流供FLV.js播放。问题:FLV.js无法直接播放RTMP流。
原因:FLV.js设计初衷是处理HTTP传输的FLV文件,而非RTMP协议。
解决方法:
const NodeMediaServer = require('node-media-server');
var config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: {
port: 8000,
allow_origin: '*'
},
trans: {
ffmpeg: '/usr/local/bin/ffmpeg',
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]'
}
]
}
};
var nms = new NodeMediaServer(config);
nms.run();
此配置将允许服务器接收RTMP流,并自动将其转换为HLS和DASH格式,同时也支持HTTP-FLV输出,从而可以被FLV.js所使用。
综上所述,虽然FLV.js本身不支持RTMP协议,但通过适当的转码和桥接方案,仍然可以在浏览器中实现RTMP流的播放。
领取专属 10元无门槛券
手把手带您无忧上云