在HTML5 websocket服务器中切分媒体流用于基于网页的聊天/视频会议应用程序

29 投票
2 回答
56009 浏览
提问于 2025-04-16 07:26

我们现在正在开发一个聊天加(文件共享加)视频会议的应用,使用HTML5的websockets。为了让我们的应用更容易使用,我们想实现自适应流媒体,具体步骤如下:

  1. 客户端的原始音频/视频数据发送到服务器
  2. 将流分成每秒1个小块
  3. 对流进行不同带宽的编码
  4. 客户端接收一个描述可用片段的清单文件
  5. 使用普通的HTTP下载一个片段
  6. 下一个片段的带宽根据上一个片段的表现来选择
  7. 客户端可以从多个不同的备用流中选择,数据速率各不相同

那么,我们该如何用Python将音频/视频数据分块呢?

我们知道微软已经开发了Expression Encoder 2,它支持自适应流媒体,但它只支持Silverlight,这不是我们想要的。

补充一下:
还有一个叫FFmpeg的解决方案(对于Python还有一个PyFFmpeg的封装),但它只支持Apple的自适应流媒体。

2 个回答

2

我找到了一些不错的文章,这些文章讲述了其他人是如何为不同平台制作一个流分段器的,所以现在我们知道怎么用Python来制作一个了。

5

我觉得 ffmpeg 是你需要关注的主要工具。它已经成为最受支持的开源媒体处理工具。还有一个 Python的封装库 可以使用。虽然你也可以通过 subprocess模块来访问命令行

撰写回答