Android文件下载。问题的媒体网址不以文件名和类型结尾

时间:2012-09-22 23:55:39

标签: java android http download video-streaming

我正在为Android开发一个下载任何应用程序,它在大多数情况下都能正常运行。

我遇到的网站的网址结尾有长哈希签名(似乎)。但Android的标准视频应用程序和我的网络浏览器能够直接播放,流媒体。

我不知道如何将其传输到文件(渐进式下载?),这应该是可能的。 '?'之后的URL参数用于某事。正如Jessica所指出的,下面的URL可能用于带有rtmp:// ....

的RTMP流

网址示例(主机域已删除):

 http://blush.im.54ca3830.919727.x.yesitisporn.com/videos/3gp/d/b/f/
      filthysite.com_dbf7f0a9c3913d4d0e09a36fe8ab3aba.mp4?e=1348368010&ri=1024&rs=85&h=c81c6707b13714ac65b651ba2939d94a

在上面的URL中有一个指向mp4视频文件的链接。尝试使用此较短的网址下载它不起作用:http://blush.im.54ca3830.919727.x.yesitisporn.com/videos/3gp/d/b/f/ filthysite.com_dbf7f0a9c3913d4d0e09a36fe8ab3aba.mp4。返回一个空文档。

由于流行的视频应用和浏览器选择了这些类型的HTTP链接,因此可以很好地播放;应该有一种获取字节流并将其写入文件的标准方法。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

回答原始提出的问题: 添加URL参数,将参数中的url与问号分开,并使用&符号分隔参数是很常见的。如果存在问号,则将所有内容的子字符串带到url中的第一个非esecaped问号,否则使用整个字符串。

根据新的反馈意见 就像我在评论中说的那样,并且在没有参数的测试中证实,我认为你正在咆哮错误的树来尝试更改URL。我怀疑你无法保存这些特定流的原因是文件格式或服务器配置有所不同,与工作的不同。特别是,我首先想到的可能是这些URL由Streaming Server(例如:Icecast)提供,而不是普通的基于文件的HTTP服务器。流媒体服务器的广告包括能够即时服务流的不同带宽版本,以及即时搜索文件的任何部分等等,但是试图构建下载任何应用程序的人的缺点是那些服务器没有将数据作为单个文件发送,他们以块的形式发送数据 - 尽量不要太疯狂技术,基本上,一个块可能有第一帧加上一堆差异,用于接下来几帧中的视频和音频,重复。正如它所做的那样,它可以根据所看到的延迟或屏幕的分辨率来限制发送的质量,或者如果调整窗口大小等等,则调整其发送的大小。这种流式传输特别适用于直播活动,但它也不仅没有记录事件的优势 - 特别是随机搜索。为了使捕获数据的问题复杂化,一些流服务器实际上通过RTMP,RTSP或MMS协议而不是通过HTTP传输视频数据。 HTTP Pseudo-streaming或直接HTTP下载比streaming via RTMP更容易保存。有些流媒体类型你几乎不得不从单个数据包中重新创建文件,或者从实时播放的屏幕上播放的内容中对其进行转码。因此,您可能需要花一些时间了解不同的流协议,以找出保存您正在查看的特定流的最佳方法。