開箱即用或通過圖書館是可能的嗎?有沒有辦法在Android應用中播放.flv視頻文件?
回答
不,這是不可能的。在Android上提供媒體播放的OpenCORE媒體庫不支持.flv文件。
您可以找到支持的媒體格式列表here。通用Android支持這些格式。在同一頁面上,您可以找到T-Mobile G1支持的其他一些格式。
當然,在特定設備上可能支持其他媒體格式。但是這可能因設備而異。
HTC Hero內置Flash運行時,但不能播放獨立的FLV文件。 – 2010-01-06 14:09:15
Nexus One顯然也有Flash 10.1,但我不知道它是否可以播放獨立的FLV文件。 – CommonsWare 2010-01-06 14:22:43
這是不正確的。對的,這是可能的。我曾爲一家爲其硬件構建流式高清視頻軟件的公司工作,可在iOS,Android和Web瀏覽器中使用FLV進行查看。不幸的是,不能共享代碼,但我可以說這絕對是可行的。 – jungledev 2017-02-27 16:57:30
你可以在WebView中使用Flash插件播放FLV。請參閱此處:http://www.synesthesia.it/playing-flash-flv-videos-in-android-applications
通常,當您創建在移動設備中顯示網頁內容的應用程序時,您必須處理仍在網絡中廣泛使用的FLV視頻(直到HTML5將統治世界)。最好的辦法是用一些轉換器(如ffmpeg)轉換它們,但如果您無法訪問原始視頻或出於某些其他原因無法使用其他合適的格式進行轉換,您可以在這裏找到有關如何在Android應用程序中嵌入和播放Flash FLV視頻的快速教程。
這是通過使用WebView,能夠播放FLV的SWF播放器,以及安裝Android的Flash插件來完成的。
首先,創建一個web視圖的佈局XML,像這樣:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<WebView android:layout_width="fill_parent" android:id="@+id/webview" android:layout_height="fill_parent"></WebView> </LinearLayout>
然後,創建活動類,這裏是一個摘錄:
package it.synesthesia.flvplayer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
public class ViewVideo extends Activity {
WebView webView;
String htmlPre = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"></head><body style='margin:0; pading:0; background-color: black;'>";
String htmlCode =
" <embed style='width:100%; height:100%' src='http://www.platipus.nl/flvplayer/download/1.0/FLVPlayer.swf?fullscreen=true&[email protected]@' " +
" autoplay='true' " +
" quality='high' bgcolor='#000000' " +
" name='VideoPlayer' align='middle'" + // width='640' height='480'
" allowScriptAccess='*' allowFullScreen='true'" +
" type='application/x-shockwave-flash' " +
" pluginspage='http://www.macromedia.com/go/getflashplayer' />" +
"";
String htmlPost = "</body></html>";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_video);
webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setPluginsEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); //thanks Patrick!
htmlCode = htmlCode.replaceAll("@[email protected]", video_link);
webView.loadDataWithBaseURL("fake://fake/fake", htmlPre+htmlCode+htmlPost, "text/html", "UTF-8", null);
}
@Override
protected void onPause(){
super.onPause();
callHiddenWebViewMethod("onPause");
webView.pauseTimers();
if(isFinishing()){
webView.loadUrl("about:blank");
setContentView(new FrameLayout(this));
}
}
@Override
protected void onResume(){
super.onResume();
callHiddenWebViewMethod("onResume");
webView.resumeTimers();
}
private void callHiddenWebViewMethod(String name){
// credits: http://stackoverflow.com/questions/3431351/how-do-i-pause-flash-content-in-an-android-webview-when-my-activity-isnt-visible
if(webView != null){
try {
Method method = WebView.class.getMethod(name);
method.invoke(webView);
} catch (NoSuchMethodException e) {
Lo.g("No such method: " + name + e);
} catch (IllegalAccessException e) {
Lo.g("Illegal Access: " + name + e);
} catch (InvocationTargetException e) {
Lo.g("Invocation Target Exception: " + name + e);
}
}
}
}
一些解釋:
- 如上所述,你需要一個FLV播放器。我用了很棒的&免費FLVPlayer http://www.platipus.nl/flvplayer/download/1.0/
- FLV播放器必須駐留在網絡上的網站上。我嘗試將.swf放在應用程序的/ assets文件夾中,並從那裏調用它,但未能加載FLV視頻。如果有人能解決這個問題,請讓我知道!
- htmlCode包含將視頻顯示爲「全屏」(填充到全尺寸的web視圖)的代碼。
- callHiddenWebViewMethod非常重要,否則視頻將在活動不再可見(以及音頻)時繼續播放。對此的信任去評論中鏈接的sliseshare海報。謝謝!警告:這主要是一個黑客!注意,事情不能按預期工作,或者可能在將來停止工作。順便說一句,它對我來說非常好。
儘管這可能會回答這個問題,但[這將是更可取的](http://meta.stackoverflow.com/q/8259)在此包含更多答案的基本部分,並提供了供參考的鏈接。 – 2015-11-26 00:24:02
我複製粘貼在答案的文章。 – FrancescoR 2015-12-11 08:48:16
似乎不起作用。 – NarendraJi 2017-07-12 10:54:53
嘗試vitamio。它是一個類似於mediaplayer的庫,它可以很容易地導入到你的項目中。唯一的是它也支持flv視頻文件。
- 1. 有沒有辦法在Android上播放.mxf視頻?
- 2. iOS ooyala視頻播放器:有沒有辦法播放視頻列表?
- 3. 在android中播放flv視頻
- 4. 播放多個音頻文件rails'audio_tag:有沒有辦法播放一個播放器中的所有文件?
- 5. 在mediaelement.js中播放FLV視頻
- 6. 在ShadowBox中播放FLV視頻
- 7. 在SWFobject中播放FLV視頻
- 8. 在JSP/Java EE中播放FLV視頻
- 9. 有沒有辦法在NAudio中同步播放WAV文件?
- 10. 有沒有方法在Android API中播放原始音頻/視頻流?
- 11. 在ImageView中播放Flash(flv)文件android
- 12. Android應用播放視頻
- 13. 在Android應用中播放YouTube視頻
- 14. 有沒有辦法播放?當用戶在android
- 15. Android MediaPlayer - 有時即使播放音頻也沒有播放視頻
- 16. 如何在C++應用程序中播放和播放Youtube/FLV視頻?
- 17. 有沒有辦法在位DailyMotion玩家公測新版本播放YouTube視頻
- 18. 有沒有什麼辦法讓YouTube androidPlayer API中播放的視頻質量?
- 19. html5視頻不能在沒有控件的android上播放
- 20. 視頻沒有在全屏播放?
- 21. 播放的FLV文件中的android
- 22. 有沒有辦法制作一個只能播放一次的音頻文件?
- 23. 播放FLV文件
- 24. 有沒有辦法讓VideoView繼續在Android應用程序的後臺播放?
- 25. Android:無法播放視頻
- 26. 在視頻播放中播放視頻
- 27. Android即時應用播放視頻失敗,顯示「無法播放此視頻」。
- 28. 有沒有辦法使用批處理文件在目錄中播放mp4
- 29. 無法在TextureView中播放視頻Android
- 30. 無法在android中播放管視頻
有一個解決方法,它也允許你從本地資產資源中玩,請閱讀我對這個類似問題的答案以獲得完整的解決方案:http://stackoverflow.com/questions/6596243/problem-to-load -flv-video-in-webview/6855609#6855609 – Merlin 2011-07-31 13:37:43