Cap*_*ous 7 html javascript node.js http-live-streaming
我想实现以下目标,但尚不清楚这是否可能。
目前的场景:
有人通过 OBS 将带有音频的视频流式传输到媒体服务器,客户端通过网站连接。
[OBS 流/视频流] -> [AWS/外部流服务] -> 客户端
通缉场景:
通过自定义媒体服务器捕获此流,并通过在直播期间的某些时刻注入某些元数据来对其进行操作 。注意live的重要性。
[OBS Stream/Video Stream] -> [My Custom Node.js Server to insert metadata] -> [AWS/External Streaming Service] -> Clients
想法:
例如,我想将流同步到某个弹出窗口。默认协议流似乎是来自 OBS 的 RTMP,但也许可以更改。在直播期间的给定时间,网站上的 html5 视频播放器可以从直播中读取这些标签(通过一些额外的库,如 video.js)并告诉 JS 应用程序显示一些文本。最后,它归结为将视频流同步到文本流(例如来自 websocket 连接)
可能的解决方案:
ID3 标签。我读到的MP3文件的ID3标签,但这似乎并没有什么我正在寻找,因为它需要一个完整的MP3档案,前期并没有用于流(动态地注入ID3在FFmpeg的实时流)。我想要的是动态地将元数据注入到这个流中。例如,在任何时间(动态选择)注入一个 id,例如引用数据库就足够了。
LTC/线性时间码/SMPTE是否可以使用 node.js 以某种方式将其嵌入到视频流中?这将使我能够将时间与客户端上的 ID 相匹配。
给定带有音频的传入视频流,是否可以这样做?如果是这样,流的格式是什么以及如何注入元数据?
编辑:浏览器中没有 Flash 时,似乎不支持 RTMP。这是行不通的,所以我需要使用另一种流格式,例如 HLS/FLV?
听起来像使用Liquidsoap之类的东西作为您的流媒体服务器可以将元数据插入流中。用于操作元数据的大量选项供您探索。
至于客户端解码,您也许可以在服务工作者中使用 javascript 可读流将服务器输出拆分为元数据/视频并根据需要进行处理。
我做了一个类似的事情来处理无限 mp3 流上的带内元数据,这可能会给你一些关于从哪里开始的想法。你可以在这里找到代码