【发布时间】:2015-12-11 16:47:33
【问题描述】:
是否可以开箱即用或通过库?
【问题讨论】:
-
有一种解决方法,它还允许您从本地资产资源中播放,请阅读我对这个类似问题的回答以获得完整的解决方案:stackoverflow.com/questions/6596243/…
标签: android
是否可以开箱即用或通过库?
【问题讨论】:
标签: android
您可以在 WebView 中使用 Flash 插件播放 FLV。看这里:http://www.synesthesia.it/playing-flash-flv-videos-in-android-applications
通常,当您在移动设备上创建一个显示 Web 内容的应用程序时,您必须处理 FLV 视频,该视频仍然在 Web 中广泛使用(直到 HTML5 将统治世界)。最好的办法是使用一些转换器(如 ffmpeg)进行转换,但如果您无法访问原始视频或由于其他原因您无法以其他合适的格式进行转换,您可以在此处找到关于如何在 Android 应用程序中嵌入和播放 Flash FLV 视频的快速教程。
这是通过使用 WebView、能够播放 FLV 的 SWF 播放器以及安装的 Android 版 Flash 插件来完成的。
首先,使用 WebView 创建一个布局 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>
然后,创建 Activity 类,这里是一个摘录:
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);
}
}
}
}
一些解释:
【讨论】:
不,这是不可能的。在 Android 上提供媒体播放的 OpenCORE 媒体库不支持 .flv 文件。
您可以找到支持的媒体格式列表here。这些格式在通用 Android 上受支持。在同一页面上,您会发现 T-Mobile G1 支持的一些其他格式。
当然,在特定设备上可能支持其他媒体格式。但这可能因设备而异。
【讨论】:
试试vitamio。它是一个类似于 mediaplayer 的库,可以很容易地导入到您的项目中。唯一的一点是它也支持flv视频文件。
【讨论】: