如何使用java(在Tomcat上)流式传输和转码媒体文件?

时间:2011-03-16 15:32:26

标签: java tomcat streaming ffmpeg transcoding

这已在here之前讨论过。使用Java,我在Tomcat上为媒体库开发了我的Web服务。我想为流媒体添加功能,同时根据移动客户端动态转码它们。我正在思考的问题很少:

  1. 如何精确流式传输文件(包括音频和视频)?我遇到了很多流媒体服务器 - 但是我希望Tomcat本身可以对我的代码做些什么。我是否需要再安装一台服务器,即流媒体服务器 - 然后将流式传输请求从Tomcat重定向到该服务器?

  2. 动态转码真的是个好主意吗?静态转码意味着我们必须以'N'格式复制相同的文件 - 这是空间消耗的,我不想要的。那么有出路吗?

  3. 是否可以“转码”流式传输数据......也就是说,我不想在转码完成时开始流式传输(因为它会引入延迟) - 而是我想要转码转码产生的数据字节。如果这是一个荒谬的要求,我道歉...我没有转码或流媒体的经验。

  4. 其他替代方案,如ffmpeg,Xuggler和其他提及here的技术 - 它们是否能更好地完成工作?

  5. 我不想使用任何基于专有/成本的替代方案来实现这一目标,我也希望这在生产环境中工作。希望能在这里得到一些帮助......

    非常感谢!

2 个答案:

答案 0 :(得分:1)

Red5是另一种可能的解决方案。它的开源,实质上是Tomcat,增加了一些功能。我不知道从Tomcat代码库中分离出来的时间有多远,但基础知识都存在(和源代码 - 所以你可以修补缺少的东西)。

Xuggler是ffmpeg的lib'前端',与Red5很好地配合。如果你打算进行大量的转码,你可能会遇到这个代码。

在这两个项目之间,您可以更改A / V格式并流式传输各种媒体。

答案 1 :(得分:0)

除非你真的需要自己动手,否则我会推荐一个有良好社区支持的OSS项目。

对于你的问题:

1。)这是标准空间与性能之间的权衡。在生成哈希表和其他计算成本高昂的操作时,您会看到同样的事情。如果空间问题比处理器时间大,那么动态转码是您唯一的出路。

2。)是的,您可以在转码过程中进行流式传输。 VLC http://www.videolan.org/vlc/就是这样做的。

3。)如果我是你,我真的会关注VLC。