在基于Web的聊天/视频会议应用中,HTML5 WebSocket服务器中如何分割媒体流

29
我们目前正在开发一个聊天+(文件共享+)视频会议应用程序,使用HTML5 websockets。为了使我们的应用程序更易于访问,我们想要实现自适应流媒体,使用以下顺序:
  1. 原始音频/视频数据客户端发送到服务器
  2. 将流分成1秒钟的块
  3. 对流进行编码以获得不同的带宽
  4. 客户端接收描述可用段的清单文件
  5. 使用正常的HTTP下载一个片段
  6. 下一个片段的带宽根据上一个片段的性能选择
  7. 客户端可以从多个不同的备选流中选择各种数据速率
那么...我们如何使用Python将我们的音频/视频数据分成块?
我们知道Microsoft已经构建了Expression Encoder 2,它启用了自适应流媒体,但它只支持Silverlight,这不是我们想要的。
编辑:
还有一种解决方案叫做FFmpeg(对于Python来说是一个PyFFmpeg包装器),但它只支持Apple自适应流媒体。

嘿,恩里科(莱斯利·尼尔森?)这个项目最终怎么样了?我发现自己也遇到了同样的问题,只不过比你晚一些 ;) 请随时告诉我任何进一步的细节。谢谢! - Mussser
2个回答

5

我认为你需要看的主要工具是ffmpeg。它已成为最受支持的开源媒体处理器。还有一个python封装。虽然也可以通过subprocess模块访问命令行


1
PyFFmpeg确实是一个编码器,但我现在看到它是我们流程中的第三步。 - Wouter Dorgelo
嗯,我本以为ffmpeg可以处理分割媒体的工作。我肯定会感兴趣看看你会发现什么或其他答案会出现什么。 - mjhm
FFmpeg/PyFFmpeg 只支持苹果自适应流媒体 :-( - Wouter Dorgelo
我们能否使用Javascript在网页上实时播放CCTV录制的视频? - Shaiju T

2

我找到了一些关于其他人如何在其他平台上构建流片段器的不错文章,所以现在我们知道如何使用Python构建一个。


1
已经过去十年了 :) 你能否给它加点调料,告诉我如何做到这一点?我在想是否有办法通过 HTML5 媒体 API 将视频流传输到服务器上的 WebSocket。目前,我正在从画布中获取 base64 图像数据并将其发送到服务器,然后从那里发送到查看器,这样可以快速创建视频效果,但它是基于 base64 图像的。 - user889030

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接