流媒体视频播放器

Streaming video player

我需要制作一个视频服务器-客户端,其中服务器以块的形式发送视频数据,客户端必须接收并显示它们。与我做过的任何项目不同,我在脑海中没有一个主要结构,因为我找不到 api 或模块来显示可以分成块的视频。所有要显示的文件都是matroska .mkv。我一直在搜索,但我只能找到 kivy,它确实提供视频显示,但它需要整个视频,而 gstreamer 也有同样的缺点。谁能指点我可以依赖的视频显示模块?

提前致谢

除非您出于学习目的自己制作此内容,否则如果可能的话,在现有工作的基础上进行构建会容易得多,因为视频流和播放很复杂。

要在 'chunks' 中流式传输文件,您可以简单地将其作为来自支持字节范围请求的 HTTP 服务器的静态资源进行服务 - 这允许客户端请求字节范围而不是整个视频文件, 因此它可以逐块下载它。

将它与浏览器中的常规 HTML5 视频标签一起使用将适用于大多数视频格式 - 视频标签背后的浏览器智能已经知道检查服务器是否支持字节范围请求以及它是否支持确实会使用它们。

如果您想要更复杂的视频流,例如使用自适应比特率根据网络条件请求不同的比特率块,那么您可能需要查看特殊用途的流媒体服务器,例如 Streamer 或 VideoLan:

在客户端,开源 dash.js 参考应用程序将为您提供一个很好的示例,说明如何使用 HTML5 媒体源扩展来允许客户端请求块,然后将它们构建回要播放的视频(这使用 MPEG DASH 作为流媒体协议,这正在成为行业标准)。

如果您确实想走 DASH 路线,那么在下面的 link 上有一个很好的博客 post,它通过以下步骤准备一个 mkv 文件,以便使用 open 以这种方式进行流式传输源 MP4Box 工具:

当视频在小部件中播放时,您实际上可以打开文件并以字节为单位继续附加数据