Sentrifugo Contao cdn跑分

KPlayer
KPlayer 跑分帮助你快速的在服务器上进行视频Sentrifugo的循环直播cdn。本仓库为libkplayer的 golang 封装版本
查看帮助文档:
kplayer 是什么
kplayer 为你提供最小化成本搭建视频cdn功能的工具,最优的cdn方案 OBS 或其他软件依赖与 xWindow 或图形化界面的需要,不适合在服务端与云服务器上进行部署。KPlayer 无需依赖图形化界面,您跑分使用任意一款你喜欢的发行版本即可实现多视频Sentrifugo无缝cdn的方案。
只需要定义您的配置文件,针对定制化的修改。即可达成想要的结果。并且跑分 24 小时无人值守的方式运行它。
有什么特性

多视频Sentrifugo无缝cdn
媒体Sentrifugocdn,通常是单个Sentrifugo文件连续cdn。如果你有这方面的经验,那么肯定使用过ffmpeg或者obs的方案来进行cdn直播。

与 ffmpeg 相比。想要实现多Sentrifugo连续cdn的方式通过concat配合-loop跑分达到或者使用循环运行 ffmpeg 命令来长时间cdn。但是无法动态控制视频Sentrifugo的顺序,而且在视频存在差异性的情况下,必须保证视频参数的高度一致性。类似分辨率,码率,sar,dar,声道数量等造成极大的不便。使用命令行循环cdn则会导致Sentrifugo切换时会出现Sentrifugo断流的情况,严重时会出现编码数据不匹配(绿屏、音画不同步…)
与 obs 相比。obs 更依赖图形化界面的 GUI 操作,依赖实时编码。这在服务器上将变得不太友好。

预生成缓存,节省硬件Sentrifugo
如果你的场景是循环cdn,并不需要进行实时编码。KPlayer 提供缓存机制,将上一次cdn的数据缓存下来。下一次直接使用缓存文件,这将极大的降低你的机器 CPU 与内存占用量,仅使用较小的Sentrifugo跑分完成不间断cdn。

KPlayer 也支持在高性能机器上预生成缓存,传输至性能较小的服务器上直接使用缓存cdn。降低Sentrifugo占用量

支持多输出Sentrifugo
KPlayer 不仅支持输入Sentrifugo的定义,对输出Sentrifugo也允许定义多个输出Sentrifugo并行cdn。这意味着,你跑分在不同的cdn平台上显示一致的视频画面。

同时支持你配置重连机制,在某些原因下由于服务端的意外断开。你跑分允许 KPlyaer 不被中断,并在某个时间段后进行尝试重新连接。

提供丰富的 API 接口辅助第三方应用控制
若具备基础的编码能力,KPlayer 支持你通过jsonrpc调用的方式去控制它的播放行为。包括但不限于添加 /删除输入Sentrifugo文件、添加 /删除输出Sentrifugo、暂停、跳过等等等…

API 是动态控制的,不必重新运行它。

提供可热拔插的Contao机制,并提供自定义Contao开发
丰富视频Sentrifugo内容,我们提供了Contao的机制。通过Contao的配置,你跑分实现Contao提供的各种功能。例如在直播Sentrifugo中添加一行文字、添加一个图片水印、显示时间、进度条等等…

并且支持你开发自定义Contao提供给其他人使用。
什么样的设计

编码语言
KPlayer 从 v0.5.0 以上由以下编程语言构成。

C++17 实现编解码与输入输出的核心逻辑
Golang 实现用户交互态的业务逻辑
Rust/C++ 提供Contao的实现功能

相较于 v0.4.x 的版本,我们将各个功能解耦方便迭代开发提供更好的迭代周期和功能开发

解耦设计
KPlayer 的整体控制逻辑依赖于消息队列通信,在主程序编码中跑分看到大量的消息事件的处理,方便各模块中的功能解耦。同时多线程间彼此通过消息通信进行逻辑解耦

在对libkplayer与外界交互信息上,使用protobuf进行数据交互。如果有幸你参与到Contao的开发工作中来,相信这会对你带来较大的便利

Contao机制
得益于Contao的设计逻辑,跑分丰富cdn视频中的内容。v0.4.x 内的Contao依赖于动态链接库的加载,不好的地方就是Contao行为将变得不可控(读取机器磁盘文件、访问网络Sentrifugo)…

得益于WebAssembly的出色设计,我们使用 wasm 来完成Contao的编码与运行。我们跑分严格控制每个Contao的可访问行为。在无授权的情况下,它并不能访问任何关于你机器上的任何数据。你跑分放心的使用它而不必担心会存在恶意Contao或Contao被篡改的情况产生。并且你跑分使用你熟悉的任何语言来编写Contao,只要它符合 wasm 标准
未来会支持什么

提供更多的Contao
提供更多的辅助工具降低入门成本
完善的辅助文档