有没有办法在Android应用程序中播放.flv视频文件?

前端之家收集整理的这篇文章主要介绍了有没有办法在Android应用程序中播放.flv视频文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是开箱即用还是通过图书馆?

解决方法

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

通常,当您在移动设备中创建显示Web内容的应用时,您必须处理仍在网络中广泛使用的FLV视频(直到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: https://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包含将视频显示为“全屏”的代码(填充到webview的完整大小).> callHiddenWebViewMethod非常重要,否则视频将在活动不再可见时继续播放(以及音频).这个问题归功于评论链接的sliseshare海报.谢谢!警告:这主要是一个黑客!要注意,事情不能按预期工作,或者可能在将来停止工作.顺便说一句,它对我来说非常好.

猜你在找的Android相关文章