2013-09-05 145 views
0

我正在考虑是否可以编写Android应用程序,该应用程序允许用户从网站下载Flash视频,而无需用户在浏览器中手动开始播放每个视频。该应用程序应该也适用于任何网站播放Flash视频,而不仅仅是一些特定的网站。该应用程序不应该需要root。无法在Android上下载FLV文件?

在做了我的功课和google搜寻之后,我得出了这样一个结论:这样的应用程序是不可能的,但我只是想让更多有经验的人来证实这一点(或者如果我错了,也许会提出解决方法)。

如何这样的应用程序可以(理论上,理想情况下)工作:

  1. 的应用程序启动运行在后台线程,甚至不需要打开活动相关的服务。

  2. 服务加载的网页(HTML文件),其中视频

  3. 应用解析页面,找到.swf文件通常播放视频

  4. 应用程序以某种方式发送假的点击swf文件中的动作脚本,就好像用户按下了“Play”一样。

  5. 在一段时间后,应用程序检查webview的缓存(但没有显示给用户的活动)。如果有任何的FLV文件的缓存,它复制它们,比方说,到某个文件夹SD卡

上。在此方案多件事情可能会失败:

在3:我不是当然,我们可以模仿swf文件的Play按钮点击,特别是如果我们不知道我们在哪个网站上(我们希望应用程序可以在任何网站上运行),并且网站使用他们自己的自定义编写的swf flash播放器。另外我不确定.swf文件甚至会处于可以接收输入的状态,如果我们甚至没有运行活动

in 4:web缓存存储在/ data/data/app_package_name /缓存/ webViewCacheChromium和该文件夹即使对于应用程序本身(?)也是不可访问的,除非电话是植根的。

我想就是这样,所以它不应该是可以做出这样的应用程序。

顺便说一下,谷歌浏览器的FVD扩展是否通过扫描Chrome浏览器缓存来获取FLV文件?

谢谢!

编辑:我知道Youtube现在使用html5,我不想下载Youtube视频。

编辑:我见过与特定网站(例如Youtube)合作的应用程序,但制作此类应用程序并不可行,因为网站会改变他们提供flv文件作为基本防御的方式。我的问题是关于开始假回放和获取已经在缓存中的视频文件。

回答

0

我认为这是可能的:

:哪里的 “网站” 从何而来?当用户打开浏览器并在网站中输入内容时,你会捕获吗?如果是这样,这是不可能的。

我想你会从某个地方得到“网站”。


你并不需要效仿的播放按钮:你只需要的FLV文件。使用任何可用的工具来刮取.swf文件的网站是相当容易的。 You can try jsoup


有时候,SWF得到在平时PARAM方法这个文件。例如<embed bla bla link="http://website/file">你只需要抓取这个文件。


现在,如果链接到文件不可用,你将不得不反编译SWF文件。这是具有挑战性的部分。 Check some of the available tools here。努力工作,你可能会得到一个结果。我这么说是因为已经有很多工具可以满足你的需求。例如,Keepvid is in java

+0

谢谢!要点1-3似乎很容易,难的部分来自反编译swf。由于每个swf都可以以不同的方式工作,所以我仍然无法为所有网站编写通用解决方案。相反,我必须先从每个网站(例如youtube,4shared,5min ..)反编译swf,然后查看它是如何工作的并实现特定于网站的方式来获取flv。这是一个解决方案,但代价很大。这样的应用程序将很难支持。一旦我的目标网站之一更改了他们的swf文件,我已经看到1星评论与“不工作”评论堆积如山。 – iseeall

+0

@iseeall。我必须说我不擅长这类应用程序。但是由于我使用的应用程序可以从很多网站获取下载链接,我总是想知道他们是如何做到的。这就是我得到的。我相信这很难。在获取链接之前,我认为让swf反编译库在Android上工作并不是直接的。如果是这样,你可能不得不想出一些可以从这些代码中获取链接的算法(也许是一些AI)。我只能假设这将是多么乏味。如果有的话,我希望有人来一个更简单的方法。 –

+0

:)无论如何,我给你的回复奖金金额。是的,它似乎是在网站上使用Flash视频而不是通常的视频文件的目的 - 使下载变得非常困难。我可能只专注于几个Flash网站,看看他们如何获取他们的FLV的 – iseeall