我的目標:Android:無法播放視頻解壓後或在webview中複製
下載包含視頻和JS文件的zip文件。創建一個運行JS文件的webview(其中包含一個視頻標籤來播放該視頻文件)。
問題:當我嘗試播放視頻我得到一個錯誤說「抱歉,該視頻無法播放」。在logcat的獲取:錯誤(1,-2147483648)
這裏是解壓文件的代碼:
String path = context.getFilesDir().getPath()+"/";
InputStream is;
ZipInputStream zis;
try {
is = new FileInputStream(zip file);
zis = new ZipInputStream(new BufferedInputStream(is));
ZipEntry ze = null;
while ((ze = zis.getNextEntry()) != null) {
String filename = ze.getName();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count;
FileOutputStream fout =
_context.openFileOutput(path + filename, Context.MODE_WORLD_READABLE);
while ((count = zis.read(buffer)) != -1) {
baos.write(buffer, 0, count);
baos.toByteArray();
fout.write(baos.toByteArray());
baos.reset();
}
fout.close();
zis.closeEntry();
baos.close();
}
zis.close();
}
要顯示的視頻我重寫MraidWebChromeClient.onShowCustomView:
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout) {
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView) {
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
Activity a = (Activity)getContext();
a.setContentView(video);
video.setOnCompletionListener(this);
video.setOnErrorListener(this);
video.start();
}
}
我不相信有與視頻文件的錯誤,尋路或JS因爲:
- 如果包含一個視頻正常播放是一種資源或者外部http鏈接流。
- 當加載js文件我使用loadDataWithBaseURL和所有其他圖像元素顯示正常。
- 我已經將文件從res複製到本地應用程序文件夾(使用與解壓縮代碼類似的代碼),併發生相同的錯誤。
我想要麼:
- 文件被損壞,而其正解壓縮/複製
- 存在權限問題從網頁視圖播放本地視頻(我甚至後設置文件world_readable。(此鏈接WebView NOT opening android default video player?)
任何見解這個問題,將不勝感激!
ķ
PS:有沒有人知道爲什麼在正常的網頁瀏覽器,將下載的MP4鏈接,而在其他情況下,它會嘗試和流呢?
編輯: 研究這兩個職位後,似乎表明,Android有安全,防止這樣的: Android - Load video from private folder of app Playing an app local video (.mp4) in a webview 將文件複製到公共外部工作的罰款。
而且與問候到PS:爲什麼一些視頻流和一些下載,安卓3不支持從https流等都將下載的文件。
要縮小問題範圍,請嘗試將其放在外部存儲上作爲測試。這也可以讓你使用另一個應用程序作爲額外的有效性測試來播放已寫出的文件。 –
是的,我們提取的文件到外部存儲,併發揮很好。我們認爲它是一個Android安全問題。 – iakiak
logcat中的任何內容無法從內部存儲播放? –