2013-12-12 50 views
3

我正在更新一個2.2/2.3 Android應用程序,該應用程序在webview中使用全屏HTML5視頻,並試圖在最新的4.4平臺上實現內聯視頻。在閱讀了新的Chromium webview對HTML5功能的支持後,我認爲HTML5視頻標籤的功能與Chrome瀏覽器的功能類似。愚蠢的我。在Android 4.4上播放內聯本地HTML5視頻文件的問題Chromium webview

在努力獲得內聯視頻工作後,我能夠這樣做。正如其他文章所述,內聯視頻對本地文件的支持僅適用於位於SD卡上的外部視頻文件。像以前一樣,我無法從資產文件夾或原始資源文件訪問我的視頻文件。我還必須將READ_EXTERNAL_STORAGE權限添加到我的應用程序的清單中。以下是視頻標記和權限標記:

<video id="video1" class="div-centered-content" controls preload="none" src="/sdcard/gizmo.mp4" type="video/mp4"></video> 

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

下面是我從我的努力中得出的一些其他結論。如果您不知道,請將其視爲需要正確答案的問題。

  1. 自動播放 HTML5視頻標籤屬性不起作用。

  2. 全屏默認播放器控件中的按鈕不起作用。

  3. 新的webview對src屬性的處理不會自動分析和處理位於Res/Raw文件夾中的資產視頻文件和/或資源。由於資源和資源是在.apk中壓縮的,因此無法通過HTML5視頻的src屬性直接加載資源和資源。

  4. onShowCustomView僅當用戶觸摸播放器控件上的全屏按鈕時纔會調用處理函數。當通過javascript播放視頻時,從一開始就沒有一種明顯的方式來攔截和手動處理Android內的視頻。我不知道是否有一種方法可以通過javascript和橋樑來手動調用VideoView並以類似於2.2中的方式處理它。如果這實際上可以完成,沒有示例代碼說明了這樣做的最佳方式。 (我想這個選項,因爲我可以再從我的資產/資源加載視頻文件,並且還提供了全屏功能。)

如果有,如何解決上述問題的任何簡明的例子,我確保webview用戶社區會欣賞這些信息。仍然不能相信2年後,Android webview團隊無法完全支持HTML5視頻標籤,也無法提供任何幫助開發人員更輕鬆地實現包含視頻的webview應用程序的文檔。

+0

你如何獲得的路徑(在你的情況下'「/sdcard/gizmo.mp4」'從文件URI當我用'「文件:// ...」?'我得到一個「不準打文件「錯誤,所以我想我需要使用一個相對的.. –

回答

0

讓我們看看我們能否互相幫助。我遇到了類似的問題,但在測試了幾個瀏覽器後,我發現UCBrowser完美地與我的目標平臺一起工作。另外我得到的另一個線索是,雖然我正在開發我的解決方案來運行類似Chromecast的內容,但我發現它似乎適用於我的Galaxy Tab2。我正在看我的Logcat,並注意到在Tab2 Chrome和UCBrowser不起作用。

我注意到通過Logcat Chrome和UCBrowser似乎有一點區別,當它到MediaPlayer級別。這是我們無法控制的,因爲它是由Webview觸發的。

這是有趣的部分。我決定讓Tab2成爲一個web服務器來託管相同的html頁面和視頻文件,然後賓果!現在Chrome可以顯示圖片,並且我的JavaScript可以按預期工作。因此,在我看來,只有當我們傳遞像「file:///mnt/sdcard/download/videos.html」這樣的url並且我的所有視頻都存儲在同一個SD卡上時,問題才呈現。我認爲這種配置可以讓Webview更好地避免使用帶寬。

對於什麼是值得我的問題似乎只要我保持我的HTML文件和視頻文件遠程解決。但UCBrowser似乎沒有這個問題,所以我想知道他們在做什麼不同。