我正在为Android开发一个下载任何东西的应用程序,它在大多数情况下都工作得很好。
我曾经遇到过一些网站,其URL的末尾似乎有一个很长的散列签名(看起来)。但Android的标准视频应用程序,我的网络浏览器可以直接播放,流媒体。
我不知道如何将其流式传输到文件(渐进式下载?),这应该是可能的。'?‘后的URL参数是用来做某事的。正如Jessica指出的,下面的URL可能用于RTMP流://....
URL示例(主机域已编辑掉):
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在上面的网址中有一个指向mp4视频文件的链接。尝试使用这个较短的URL下载它不起作用:http://blush.im.54ca3830.919727.x.yesitisporn.com/videos/3gp/d/b/f/ filthysite.com_dbf7f0a9c3913d4d0e09a36fe8ab3aba.mp4。返回一个空文档。
由于流行的视频应用程序和浏览器会选择这些类型的HTTP链接进行回放,因此应该有一种标准的方法来获取字节流并将其写入文件。谢谢你的帮助!
发布于 2012-09-23 08:04:16
在回答最初提出的问题时:添加URL参数是很常见的,用问号将url从参数中分离出来,并用&号分隔参数。获取所有内容的子字符串,直到url中第一个未被覆盖的问号为止,如果有问号,则使用整个字符串。
基于新的反馈:正如我在我的评论中所说的那样,正如你在没有参数的情况下测试所证实的那样,我认为你找错了地方来试图改变。我怀疑你不能保存这些特定流的原因是文件格式或服务器配置与正常工作的文件格式或服务器配置不同。特别是,我的第一个想法是,这些URL可能是由流服务器(例如:Icecast)提供服务,而不是普通的基于文件的超文本传输协议服务器。流媒体服务器的优点包括能够即时提供不同带宽版本的流,以及即时搜索文件的任何部分等等,但对于试图构建下载任何应用程序的人来说,缺点是这些服务器不会将数据作为单个文件发送,它们以块的形式发送数据--尽量不要过于疯狂的技术,基本上,一个块可能有第一帧加上一大堆差异,在接下来的几帧中视频和音频重复。当它这样做时,它可以根据它看到的延迟或屏幕的分辨率来限制发送的质量,或者如果你调整窗口的大小,它会调整发送的内容,等等。这种流式传输对于现场活动特别有效,但对于记录的事件也不是没有优势--特别是随机搜索。使捕获数据的问题复杂化的是,一些流服务器实际上通过RTMP、RTSP或MMS协议而不是通过HTTP传输视频数据。与streaming via RTMP相比,保存HTTP Pseudo-streaming或直接下载HTTP将容易得多。有些流媒体类型你必须从单独的数据包重新创建文件,或者从屏幕上实时播放的内容对其进行代码转换。因此,您可能需要花一些时间学习不同的流协议,以找出保存您正在查看的特定流的最佳方法。
https://stackoverflow.com/questions/12548631
复制相似问题