2013-09-05 320 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