0

我需要扩展基本的 netty HTTP 文件服务器(https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/http/file)以通过流式传输视频在我对视频进行了一些自定义编码之后的 HTTP。我打算编写一个使用 vlcj 重现流的 Java 应用程序。

但是,即使在开始扩展文件服务器之前,我也遇到了一种奇怪的行为。当我使用 VLC(版本 2.0.6)播放文件时,通过使用基本服务器示例(使用 netty 3.6.5 和 netty 4.0.0.CR1),会发生以下情况:

  • VLC 能够开始复制文件
  • 一旦我多次搜索文件,我就会收到以下错误:java.io.IOException: Connection reset by peer

在使用 mpc-hc ( http://mpc-hc.org/ )播放相同的流时,我没有遇到这个问题。

我是否需要以某种特定方式配置服务器以允许 VLC 正确播放流?我在 VLC 和 VLCJ 网站/论坛中都没有找到任何特定信息。

接受任何提示/建议。

4

1 回答 1

2

不幸的是,仅仅启动一个基本的 http 文件服务器以将视频流式传输到 VLCj 播放器是不够的。

服务器必须能够处理“范围请求”。在范围请求期间,VLC 播放器请求它接下来要播放的视频的特定部分(字节范围,例如字节 3212-5678)。即使初始请求是针对所有字节的,视频播放器也会在播放期间重复发出范围请求。

当您搜索时,视频播放器将向您的服务器发出范围请求以获取文件的下一部分。如果您的服务器无法处理该请求,则播放器将具有您描述的行为。(即连接由对等方休息)

希望有帮助。

于 2013-05-11T22:06:27.267 回答