java - Java NanoHTTPD 服务 HTTP Live Streaming 的范围错误

标签 java http-live-streaming m3u8 nanohttpd

Java NanoHTTPD 服务 HTTP Live Streaming 时出现范围错误

我正在尝试使用基于 Java 的 NanoHTTPD HTTP 服务器来提供 HLS 视频流。我还使用 VLC 播放 .m3u8 文件。有趣的是,VLC 能够播放我的视频,但 NanoHTTPD 抛出“java.net.SocketException”。我正在使用 NanoHTTPD 附带的 SimpleWebServer.java

这是我的 .m3u8 文件

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
sample_320k-1.ts
#EXTINF:10,
sample_320k-2.ts
#EXTINF:10,
sample_320k-3.ts
#EXTINF:10,
sample_320k-4.ts
#EXTINF:11,
sample_320k-5.ts
#EXTINF:11,
sample_320k-6.ts
#EXTINF:11,
sample_320k-7.ts
#EXTINF:11,
sample_320k-8.ts
#EXTINF:10,
sample_320k-9.ts
#EXTINF:11,
sample_320k-10.ts
#EXTINF:11,
sample_320k-11.ts
#EXTINF:10,
sample_320k-12.ts
#EXTINF:10,
sample_320k-13.ts
#EXTINF:10,
sample_320k-14.ts
#EXTINF:10,
sample_320k-15.ts
#EXTINF:11,
sample_320k-16.ts
#EXTINF:9,
sample_320k-17.ts
#EXT-X-ENDLIST

这是我的 Eclipse 控制台 服务器已启动,按 Enter 停止。

GET '/' 
  HDR: 'connection' = 'keep-alive'
  HDR: 'accept-language' = 'en-US,en;q=0.8'
  HDR: 'host' = '127.0.0.1:8080'
  HDR: 'accept' = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
  HDR: 'user-agent' = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31'
  HDR: 'accept-encoding' = 'gzip,deflate,sdch'
  HDR: 'accept-charset' = 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
GET '/favicon.ico' 
  HDR: 'connection' = 'keep-alive'
  HDR: 'accept-language' = 'en-US,en;q=0.8'
  HDR: 'host' = '127.0.0.1:8080'
  HDR: 'accept' = '*/*'
  HDR: 'user-agent' = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31'
  HDR: 'accept-encoding' = 'gzip,deflate,sdch'
  HDR: 'accept-charset' = 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
GET '/Http_Live_Streaming/vodhls/stream-local.m3u8' 
  HDR: 'connection' = 'close'
  HDR: 'host' = 'localhost:8080'
  HDR: 'range' = 'bytes=0-'
  HDR: 'icy-metadata' = '1'
  HDR: 'user-agent' = 'VLC/2.0.7 LibVLC/2.0.7'
GET '/Http_Live_Streaming/vodhls/sample_320k-1.ts' 
  HDR: 'connection' = 'close'
  HDR: 'host' = 'localhost:8080'
  HDR: 'range' = 'bytes=0-'
  HDR: 'icy-metadata' = '1'
  HDR: 'user-agent' = 'VLC/2.0.7 LibVLC/2.0.7'
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
GET '/Http_Live_Streaming/vodhls/sample_320k-2.ts' 
  HDR: 'connection' = 'close'
  HDR: 'host' = 'localhost:8080'
  HDR: 'range' = 'bytes=0-'
  HDR: 'icy-metadata' = '1'
  HDR: 'user-agent' = 'VLC/2.0.7 LibVLC/2.0.7'
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
GET '/Http_Live_Streaming/vodhls/sample_320k-3.ts' 
  HDR: 'connection' = 'close'
  HDR: 'host' = 'localhost:8080'
  HDR: 'range' = 'bytes=0-'
  HDR: 'icy-metadata' = '1'
  HDR: 'user-agent' = 'VLC/2.0.7 LibVLC/2.0.7'
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
GET '/Http_Live_Streaming/vodhls/sample_320k-4.ts' 
  HDR: 'connection' = 'close'
  HDR: 'host' = 'localhost:8080'
  HDR: 'range' = 'bytes=0-'
  HDR: 'icy-metadata' = '1'
  HDR: 'user-agent' = 'VLC/2.0.7 LibVLC/2.0.7'
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)
java.net.SocketException
    at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:662)
    at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:124)
    at java.lang.Thread.run(Thread.java:722)

Server stopped.

最佳答案

您使用的是哪个版本的 NanoHttpd?我可能认为最近对该项目的提交已经为您带来了一些改进,并且支持了 HTTP 1.1 协议(protocol)(即连接处理的“保持 Activity ”部分)。

我很想知道您是否在使用最新版本的 NanoHttpd(2.0.3)时遇到问题。

此外,我将了解 NanoHttpd 处理“范围”请求的方式 - 特别是像堆栈跟踪指示的开放式范围正在发送。

谢谢!

关于java - Java NanoHTTPD 服务 HTTP Live Streaming 的范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254505/

相关文章:

由于 .ts 文件损坏,ffmpeg HLS 计时中断

ios - iOS:使用AES-128加密播放离线HLS

python - 访问没有 cookie 的 m3u8 文件

javascript - 使用 jwplayer 无法播放视频文件

java - 创建文件后立即将其放入 S3

java - 如何在Eclipse中查看maven项目的web内容

java - 如何获取被点击的JButton的索引?

ffmpeg - 哪个版本的 FFMPEG 支持 HLS v4

ffmpeg - 使用 ffmpeg 将 mp3 文件编码为 m3u8 时仅生成一个 .ts 文件

java - 如何在不关闭cmd提示符的情况下关闭Java中的框架?