0

我在想是否有可能为 Android 编写一个应用程序,它允许用户从网站下载 Flash 视频,而无需让用户在浏览器中手动开始播放每个视频。该应用程序还应该适用于任何播放 Flash 视频的网站,而不仅仅是某些特定网站。该应用程序不需要root。

在做了很多功课和谷歌搜索之后,我得出的结论是这样的应用程序是不可能的,但我只是希望更有经验的人来确认这一点(或者如果我错了,可能会建议解决方法)。

这样的应用程序如何(理论上,理想地)工作:

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

  2. 该服务加载视频所在的网页(html文件)

  3. 该应用程序解析页面以找到通常播放视频的 .swf 文件

  4. 该应用程序以某种方式向 swf 文件中的操作脚本发送虚假点击,就好像用户按下“播放”一样

  5. 片刻之后,应用程序检查 webview 的缓存(但是,没有向用户显示任何活动)。如果缓存中有任何 .flv 文件,它会将它们复制到 SD 卡上的某个文件夹中

在这个方案中,很多事情可能会失败:

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

在 4:网络缓存存储在 /data/data/app_package_name/cache/webViewCacheChromium 下,即使应用程序本身(?)也无法访问此文件夹,除非手机已植根。

我想就是这样,所以应该不可能制作这样的应用程序。

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

谢谢!

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

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

4

1 回答 1

0

我认为这是可能的:

1:“网站”从何而来?当用户打开他的浏览器并输入网站时,你会捕捉到吗?如果是这样,这是不可能的。

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


2您不需要模拟播放按钮:您只需要 .flv 文件。使用任何可用的工具从网站上抓取 .swf 文件非常容易。你可以试试jsoup


3有时,swf 以通常的参数方法获取此文件。例如<embed bla bla link="http://website/file">,您只需要抓取并获取此文件。


4现在,如果该文件的链接不可用,您将不得不反编译该 swf 文件。这是具有挑战性的部分。在此处查看一些可用的工具。通过努力,你可能会得到结果。我这么说是因为已经有很多工具可以做你想做的事。例如,Keepvid 在 java中。

于 2013-09-25T14:47:27.850 回答