2010-01-06 16 views

Respuesta

2

No, no es posible. La biblioteca de medios OpenCORE que proporciona la reproducción multimedia en Android no admite archivos .flv.

Puede encontrar una lista de formatos de medios compatibles here. Estos formatos son compatibles con Android genérico. En la misma página, encontrará algunos formatos adicionales compatibles con T-Mobile G1.

Por supuesto, es posible admitir formatos de medios adicionales en dispositivos específicos. Pero esto puede variar de un dispositivo a otro.

+0

El HTC Hero tiene un tiempo de ejecución de Flash incorporado, sin embargo, esto no reproduce archivos FLV independientes. –

+0

El Nexus One también tiene aparentemente Flash 10.1, pero no sé si puede reproducir archivos FLV independientes. – CommonsWare

+0

Esto es incorrecto. Sí, es posible. Trabajé para una empresa que creó software de transmisión de video HD para su hardware, visible en iOS, Android y en un navegador web, usando FLV. Lamentablemente, no puedo compartir el código, pero puedo decir que definitivamente es factible. – jungledev

3

puede jugar FLV usando el complemento flash dentro de una WebView. vea aquí: http://www.synesthesia.it/playing-flash-flv-videos-in-android-applications

A menudo, cuando crea una aplicación que muestra contenido web en un dispositivo móvil, debe lidiar con videos FLV, aún ampliamente utilizados en la web (hasta que HTML5 domine el mundo). Lo mejor que puedes hacer es convertirlos con algún conversor (como ffmpeg), pero si no tienes acceso a videos originales o por alguna otra razón no puedes hacer la conversión en algún otro formato adecuado, aquí puedes encontrar un tutorial rápido sobre cómo incrustar y reproducir videos Flash FLV en una aplicación de Android.

Esto se hace mediante el uso de un WebView, un reproductor SWF capaz de reproducir archivos FLV y, por supuesto, el complemento Flash para Android instalado.

En primer lugar, crear un xml diseño con una vista Web, así:

<?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> 

a continuación, crear la clase de actividad, aquí es un extracto:

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); 
      } 
     } 
    } 

} 

algunas explicaciones:

  • como dije, necesitas un reproductor FLV. Utilicé el gran & FLVPlayer gratis http://www.platipus.nl/flvplayer/download/1.0/
  • El reproductor FLV debe residir en un sitio web en la red. Intenté poner el archivo .swf en la carpeta/assets de la aplicación y llamarlo desde allí, pero no pudo cargar el video FLV. si alguien puede arreglar esto, por favor avíseme!
  • htmlCode contiene el código para mostrar el video como "pantalla completa" (completando el tamaño completo de la vista web).
  • callHiddenWebViewMethod es muy importante, de lo contrario el video continuará reproduciéndose cuando la actividad ya no esté visible (y audio también). Credis a esto va al cartel de sliseshare vinculado en el comentario. ¡Gracias! ADVERTENCIA: ¡esto es principalmente un truco! tenga cuidado, las cosas no podrían funcionar como se espera o pueden dejar de funcionar en el futuro. Por cierto, funcionó muy bien para mí.
+1

Si bien esto puede responder a la pregunta, [sería preferible] (http://meta.stackoverflow.com/q/8259) incluir aquí más partes esenciales de la respuesta y proporcionar el enlace de referencia. –

+0

copié el artículo en la respuesta. – FrancescoR

+0

parece que no funciona. – NarendraJi

1

Probar vitamio. Es una biblioteca similar a Mediaplayer que se puede importar a su proyecto muy fácilmente. Lo único es que también admite archivos de video flv.

Cuestiones relacionadas