有没有办法在android应用程序中播放.flvvideo文件?

是开箱即用还是通过图书馆?

Solutions Collecting From Web of "有没有办法在android应用程序中播放.flvvideo文件?"

您可以在WebView中使用Flash插件播放FLV。 看到这里: http : //www.synesthesia.it/playing-flash-flv-videos-in-android-applications

通常,当您创build一个在移动设备上显示网页内容的应用程序时,您必须处理仍然在networking中广泛使用的FLVvideo(直到HTML5将统治世界)。 最好的办法是用一些转换器(如ffmpeg)转换它们,但如果你不能访问原始video或其他原因,你不能以其他合适的格式进行转换,在这里你可以find有关如何在Android应用程序中embedded和播放Flash FLVvideo的快速教程。

这是通过使用WebView,能够播放FLV的SWF播放器,以及安装Android的Flash插件来完成的。

首先,用WebView创build一个布局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> 

然后,创buildActivity类,这里是一个摘录:

 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&video=@VIDEO@' " + " 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("@VIDEO@", 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播放器必须驻留在networking上的网站上。 我尝试将.swf放在应用程序的/ assets文件夹中,然后从那里调用它,但无法加载FLVvideo。 如果有人能解决这个问题,请让我知道!
  • htmlCode包含将video显示为“全屏”(填充到全尺寸的web视图)的代码。
  • callHiddenWebViewMethod非常重要,否则当活动不再可见时(以及audio),video将继续播放。 对此的信任去评论中链接的sliseshare海报。 谢谢! 警告:这主要是一个黑客! 注意,事情不能按预期工作,或者可能在将来停止工作。 顺便说一句,它对我来说非常好。

不,这是不可能的。 在Android上提供媒体播放的OpenCORE媒体库不支持.flv文件。

您可以在这里find支持的媒体格式列表。 通用Android支持这些格式。 在同一页面上,您可以findT-Mobile G1支持的其他一些格式。

当然,在特定设备上可能支持更多的媒体格式。 但是这可能因设备而异。

尝试维生素 。 这是一个类似mediaplayer的图书馆,可以很容易地导入到您的项目。 唯一的是它也支持flvvideo文件。