我在想是否有可能为Android编写一个应用程序,允许用户从网站下载Flash视频,而无需用户在浏览器中手动开始播放每个视频。该应用程序也应该适用于任何播放Flash视频的网站,而不仅仅是某些特定的网站。该应用程序不应该要求root。
在完成我的家庭作业和谷歌搜索之后,我得出的结论是这样的应用程序是不可能的,但我只是想让更有经验的人确认这一点(或者如果我错了可能会建议解决方法)。
这样的应用程序(理论上,理想情况下)如何工作:
该应用启动了一个在后台线程中运行的服务,甚至不需要打开活动。
该服务加载视频
应用程序解析页面以查找通常播放视频的.swf文件
应用程序以某种方式向swf文件中的动作脚本发送虚假点击,就像用户按下“播放”一样
一段时间后应用程序检查webview的缓存(但是,没有向用户显示任何活动)。如果缓存中有任何.flv文件,则将它们复制到SD卡上的某个文件夹
在这个方案中,有很多事情可能会失败:
3:我不确定是否可以模仿swf文件的“播放”按钮,特别是如果我们不知道我们在哪个网站(我们希望该应用在任何网站上工作)和网站使用自己定制的swf flash播放器。此外,我不确定.swf文件是否会处于可以接收输入的状态,如果我们甚至没有正在运行的活动
in 4:web缓存存储在/ data / data / app_package_name / cache / webViewCacheChromium下,即使应用程序本身(?)也无法访问此文件夹,除非手机已植根。
我想就是这样,所以不应该制作这样的应用程序。
顺便说一句,Google Chrome的FVD扩展程序是否通过扫描Chrome浏览器缓存来获取FLV文件?
谢谢!
编辑:我知道Youtube现在使用html5,我不打算下载Youtube视频。
编辑:我见过与特定网站合作的应用程序(例如Youtube),但制作这样的应用程序是不可行的,因为网站改变了他们提供flv文件作为基本防御的方式。我的问题是关于开始假播放和获取已经在缓存中的视频文件。答案 0 :(得分:0)
我认为这是可能的:
1 :“网站”来自哪里?当用户打开浏览器并输入网站时,您是否会抓到?如果是这样,这是不可能的。
我想你会从某个地方获得“网站”。
2 您无需模拟播放按钮:您只需要.flv文件。使用任何可用工具抓取.swf文件的网站非常容易。 You can try jsoup
3 有时候,swf会以通常的param方式获取此文件。例如<embed bla bla link="http://website/file">
您只需要抓取并获取此文件。
4 现在,如果该文件的链接不可用,则必须对swf文件进行反编译。这是具有挑战性的部分。 Check some of the available tools here。通过努力工作,您可能会得到一个结果。我是这么说的,因为那里已经有很多工具可以满足您的需求。例如Keepvid is in java。