我试着把一个视频文件从SD卡传输到chrome cast设备上。我用下面的源码做了一个http服务器。
https://github.com/joinAero/AndroidWebServ
但是我不能流式传输超过50MB的视频文件。也无法查找流。我该如何解决这个问题?
发布于 2015-07-08 03:01:52
有关流媒体的背景知识(在讨论android相关问题之前)
客户端到服务器应在GET media请求中包含标头...
> Transfer-Encoding: chunked
> Content-Type: $Mimetype-for-media
> Expect: 100-continue服务器到客户端头和协议在打开时是不需要查看的( apache或nginx with http 1.1 )
nginx/apache会首先发送响应头部:
< Content-Type: $Mime
< Transfer-Encoding: chunked客户端和服务器将使用continue协议对分块编码达成一致:
* Done waiting for 100-continue然后服务器仅根据该协议执行io,直到它用对应于该协议的"END“信号告警的流结束为止。
有关服务器发送的指示$END的详细信息,请参阅wiki或阅读rfc ...
当您将媒体文件的最后一段写入服务器的输出时,根据协议发送一个END信号,用于“分块编码”……
private static final byte[] FINAL_CHUNK = new byte[] { '0', '\r', '\n', '\r', '\n' };
$myConnection.getResponse().getOutputStream().write(FINAL_CHUNK).如果您的android服务器实现了该协议,那么它将与apache/nginx在http上提供分块媒体服务没有任何不同。它会正常工作的。
https://stackoverflow.com/questions/31239621
复制相似问题