2014-03-06 63 views
2

我已經嘗試了幾天,現在通過一個科爾多瓦3.4應用程序播放本地視頻文件在我的星系選項卡4.2。科爾多瓦3.4 Android本地視頻文件沒有播放

當我使用絕對的http url時,視頻播放就好了。

這裏是我曾嘗試:

  1. 我把視頻文件中的資產/ RES /原始文件夾中的建議在這裏:Loading video failed on html5 phonegap

結果:當我點擊播放 - >旋轉加載圖標沒有視頻

  • 視頻在WWW文件夾:
  • 結果:同#1

    <video id="myvideo" controls="controls" width="400"> 
        <source src="file:///android_asset/www/gruppenruf.mp4" /> 
    </video> 
    

    結果:同#1

    我設置文件夾的所有權限777

    然後我試着用https://github.com/jaeger25/Html5Video插件

    安裝插件後我得到的是: 03-06 18:27:06.953:E/Web控制檯(22530):遺漏的類型錯誤:無法讀取屬性 'html5Video' 的不確定:37

    所有我我試圖做的是在Android上播放本地視頻文件。這真的很複雜嗎?

    任何幫助,將不勝感激。

    +0

    你確實需要一個插件來播放視頻,您使用的是一個可能與PhoneGap的3+兼容。你可以試試這個:https://github.com/dawsonloudon/VideoPlayer –

    +0

    檢查這個鏈接。 http://stackoverflow.com/questions/19007788/loading-video-failed-on-html5-phonegap/20660189?noredirect=1#comment33991200_20660189 –

    +0

    @DawsonLoudon我無法讓你的插件工作。我是phonegap的新手,我不確定如何實現您的插件。我無法弄清楚把VideoPlayer.java文件放在哪裏。 – jugg1es

    回答

    0

    您的代碼在Cordova 3.4.0中停止工作,因爲它們更改了文件路徑結構。而不是'file:///',你必須使用'cdvfile://'。

    還記得更新文件插件。

    1

    如果上面提到的選項不工作的嘗試:

    SRC = 「android.resource://com.example.hello/raw/Videofile」(保留擴展名爲」 .mp4" 什麼那麼)

    將您的視頻文件放入「.. \ platforms \ android \ res \ raw」 請注意,您不要在src中使用視頻文件的擴展名。

    我掙扎了很多這個問題,但是這個工作對我來說=]

    +0

    嗨,當我這樣做,視頻播放聲音,但沒有圖像!? (當我使用http調用視頻時,視頻正常工作)您有想法嗎?權限問題可能嗎?你的應用有什麼權限?非常感謝。 – tekilatexee

    2

    this後看看。 文件插件(至少< = v1.3.1)對Android設備有一個錯誤。另外,我不確定jaeger25/Html5Video插件是否仍在使用cordova 3.6.x.

    一種工作方法是以編程方式將您的視頻文件從www/gruppenruf.mp4複製到可在應用程序運行時供播放的位置。你可以使用file:///data/data/com.example.MyPackage/files/gruppenruf.mp4FileTransfer科爾多瓦插件將照顧這一點。

    var myFilename = "gruppenruf.mp4"; 
    var myUrl = cordova.file.applicationDirectory + "www/" + myFilename; 
    var fileTransfer = new FileTransfer(); 
    var filePath = cordova.file.dataDirectory + myFilename; 
    
    fileTransfer.download(encodeURI(myUrl), filePath, (function(entry) { 
        /* 
        res = "download complete:\n" 
        res += "fullPath: " + entry.fullPath + "\n" 
        res += "localURL: " + entry.localURL + "\n" 
        alert(res += "nativeURL: " + entry.nativeURL + "\n") 
        */ 
        var vid = document.getElementById("myvideo"); 
        vid.src = entry.nativeURL; 
        //vid.loop = true; 
    }), (function(error) { 
        alert("Video download error: source " + error.source); 
        alert("Video download error: target " + error.target); 
    }), true, { 
        headers: { 
        Authorization: "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
        } 
    }); 
    

    如果不打你可能要一個click事件偵聽器鏈接到它或vid.play();啓動視頻。

    1

    當我花一些時間與一個類似的問題,我覺得它值得分享:

    1. 如果你想顯示視頻全屏:不要使用HTML標記,因爲是針對媒體插件。如果你不需要離線播放:指向Web服務器的視頻src將會正常工作。
    2. 如果你需要發揮離線和視頻爲您的應用程序包的一部分,看看到https://github.com/jaeger25/Html5Video(它有助於自動將視頻文件拷貝在公共場所)
    3. 如果你需要播放動態下載的離線視頻(我的情況)
      • 使用文件傳輸插件
      • 在cordova.file.externalDataDirectory文件另存爲公共
      • 在某些情況下,你可能需要強制的文件是公開的
      • 你可以這樣做由addi ng'file.setReadable(true,false);'到FileTransfer.java線820

    乾杯