如何使用java从http url下载视频文件(视频流链接)?

时间:2011-03-08 20:49:48

标签: java youtube video-streaming download youtube-api

  

可能重复:
  how to get video link from of live streaming videos using java?

大家好!

我必须开发一个应用程序,将任何视频文件从http url(视频流)下载到本地系统。这有免费的api吗?还有像youtube这样的网站。这里没有可用于视频文件的直接链接。在这种情况下,我如何获得确切的视频文件链接。 另外我需要java源来保存来自url的视频文件。

谢谢!

2 个答案:

答案 0 :(得分:10)

您大多需要考虑以下情况:

的Youtube

有一些工具可以生成一个链接到youtube视频的原始源文件的链接(您可以下载,例如,作为h.264编码的.mp4文件) 尝试找到其中的一些,例如Userscripts,他们将拥有大量的源代码,您可以重复使用这些源代码来查找URL。这是an example。也许在Stackoverflow上也有一些关于这个的问题,我没看过。那是你的工作。

Flash视频

嵌入Flash视频的网站使用的Flash播放器(duh)由一些选项提供,主要是硬编码或JavaScript。这意味着在网站源代码的某处,有一个指向视频文件的链接,可能是.mp4或.flv文件。

您必须找到该链接(它可以加密,URL转义,包装在JSON中,等等),然后下载原始文件。

示例: This website从源代码中某处的JSON字符串中提取其Flash播放器。我能够对其进行解码并生成一个允许您下载原始视频的网站。在PHP中,这是worked like so

原始文件

某些网址会公开该文件,例如http://www.test.com/video.mp4。要从URL保存这样的文件,它归结为只是“下载”它。有很多教程,包括this one

结论

编写一个可在所有网站上工作的视频下载应用程序并非如此简单。专注于“简单”的那些,例如Youtube和那些你可以直接提取文件的网站。

答案 1 :(得分:4)

(免责声明:我是Resty的作者)。

以下是有关如何将Google地图图片直接下载到磁盘的代码示例:

Resty r = new Resty();
File f = r.bytes("http://maps.google.com/maps/api/staticmap?size=512x512" +
  "&maptype=hybrid&markers=size:mid%7Ccolor:red%7C37.815649,-122.477646&sensor=false").
  save(File.createTempFile("google", ".png"));