KPlayer v0.5.0 发布,更好的服务端推流工具

2022-02-11 13:46:07 +08:00
 tinting

KPlayer

KPlayer 可以帮助你快速的在服务器上进行视频资源的循环直播推流。本仓库为libkplayer的 golang 封装版本

查看帮助文档:https://kplayer.net/p/1

kplayer 是什么

kplayer 为你提供最小化成本搭建视频推流功能的工具,最优的推流方案 OBS 或其他软件依赖与 xWindow 或图形化界面的需要,不适合在服务端与云服务器上进行部署。KPlayer 无需依赖图形化界面,您可以使用任意一款你喜欢的发行版本即可实现多视频资源无缝推流的方案。

只需要定义您的配置文件,针对定制化的修改。即可达成想要的结果。并且可以 24 小时无人值守的方式运行它。

有什么特性

  1. 多视频资源无缝推流 媒体资源推流,通常是单个资源文件连续推流。如果你有这方面的经验,那么肯定使用过ffmpeg或者obs的方案来进行推流直播。
  1. 预生成缓存,节省硬件资源 如果你的场景是循环推流,并不需要进行实时编码。KPlayer 提供缓存机制,将上一次推流的数据缓存下来。下一次直接使用缓存文件,这将极大的降低你的机器 CPU 与内存占用量,仅使用较小的资源可以完成不间断推流。

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

  1. 支持多输出资源 KPlayer 不仅支持输入资源的定义,对输出资源也允许定义多个输出资源并行推流。这意味着,你可以在不同的推流平台上显示一致的视频画面。

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

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

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

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

并且支持你开发自定义插件提供给其他人使用。

什么样的设计

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

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

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

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

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

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

未来会支持什么

  1. 提供更多的插件
  2. 提供更多的辅助工具降低入门成本
  3. 完善的辅助文档
1349 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX