Cómo reproducir vídeos en android desde la carpeta de activos o la carpeta en bruto?

Estoy tratando de reproducir un video en el emulador de Android Tengo el video en mi carpeta de activos, así como la carpeta en bruto Pero después de hacer algunas investigaciones aún no puedo reproducir vídeo en mi emulador estoy trabajando en Android 2.1 Mi formato de vídeo es mp4 así que i No creo que debería ser un problema ¿Podría alguien simplemente darme un código de ejemplo para que pueda entender un poco más?

El problema es que el VideoView que necesito para mostrar el video tomará sólo un URI o una ruta de acceso de archivo para apuntar al vídeo.

Si guardo el video en la carpeta raw o assets solo puedo obtener un flujo de entrada o un descriptor de archivo y parece que nada de eso se puede usar para inicializar el VideoView.

Actualizar

Eché un vistazo más de cerca al ejemplo MediaPlayer y trató de iniciar un MediaPlayer con un FileDescriptor a los archivos de activos como en el código de abajo:

SurfaceView videoView = (SurfaceView) findViewById(gettingStarted) SurfaceHolder holder = videoView.getHolder(); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); final MediaPlayer player = new MediaPlayer(); player.setDisplay(holder); player.setDataSource(getAssets().openFd(fileName).getFileDescriptor()); player.prepareAsync(); player.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); 

Ahora tengo una excepción:

 java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed 

Parece que no hay otra manera de copiar el archivo a la tarjeta sd en el inicio y que parece una pérdida de tiempo y memoria.

## Perfectamente trabajando desde Android 1.6 ##

 getWindow().setFormat(PixelFormat.TRANSLUCENT); VideoView videoHolder = new VideoView(this); //if you want the controls to appear videoHolder.setMediaController(new MediaController(this)); Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.your_raw_file); //do not add any extension //if your file is named sherif.mp4 and placed in /raw //use R.raw.sherif videoHolder.setVideoURI(video); setContentView(videoHolder); videoHolder.start(); 

## Compruebe el tutorial completo ##

Tratar:

 AssetFileDescriptor afd = getAssets().openFd(fileName); player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength()); 
 String UrlPath="android.resource://"+getPackageName()+"/"+R.raw.ur file name; videocontainer.setVideoURI(Uri.parse(UrlPath)); videocontainer.start(); 

Donde videocontainer del tipo videoview.

PlayVideoActivity.java:

 public class PlayVideoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_play_video); VideoView videoView = (VideoView) findViewById(R.id.video_view); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setMediaController(mediaController); videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.documentariesandyou)); videoView.start(); } } 

Activity_play_video.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="match_parent" > </VideoView> </LinearLayout> 

Si recuerdo bien, tuve el mismo tipo de problema al cargar cosas de la carpeta de activos pero con una base de datos. Parece que las cosas en su carpeta de activos pueden tener 2 estadísticas: comprimido o no.
Si se comprime, se le permite 1 Mo de memoria para descomprimirlo, de lo contrario obtendrá este tipo de excepción. Hay varios reportes de errores sobre eso porque la documentación no está clara. Así que si todavía quieres usar tu formato, debes utilizar una versión sin comprimir, o dar una extensión como .mp3 o .png a tu archivo. Sé que es un poco loco pero carga una base de datos con una extensión .mp3 y funciona perfectamente bien. Esta otra solución es empaquetar su aplicación con una opción especial para indicarle que no comprima una determinada extensión. Pero entonces usted necesita para construir su aplicación manualmente y agregar "zip -0" opción.
La ventaja de un assest sin comprimir es que la fase de zip-align antes de la publicación de una aplicación alineará los datos correctamente de modo que cuando se cargue en la memoria pueda ser mapeada directamente.

Por lo tanto, las soluciones:

  • Cambiar la extensión del archivo a .mp3 o .png y ver si funciona
  • Construya su aplicación manualmente y use la opción zip-0

¿Has intentado poner manualmente Video en SDCard e intentar reproducir video store en SDCard?

Si está funcionando puedes encontrar la manera de copiar de Raw a SDcard aquí:

Android-copy-rawfile-a-sdcard-video-mp4 .

Lo encontré :

 Uri raw_uri = Uri.parse(<package_name>/+R.raw.<video_file_name>); 

Personnaly Android encontró el recurso, pero no puede jugarlo por ahora. Mi archivo es .m4v

Pienso que usted necesita mirar esto – debe tener todo que usted desea.

EDIT: Si no quieres ver el enlace – esto resume bastante lo que te gustaría.

MediaPlayer mp = MediaPlayer.create (context, R.raw.sound_file_1); Mp.start ();

Pero todavía recomiendo leer la información en el enlace.

 VideoView myVideo = (VideoView) rootView.findViewById(R.id.definition_video_view); //Set video name (no extension) String myVideoName = "my_video"; //Set app package String myAppPackage = "com.myapp"; //Get video URI from raw directory Uri myVideoUri = Uri.parse("android.resource://"+myAppPackage+"/raw/"+myVideoName); //Set the video URI myVideo.setVideoURI(myVideoUri); //Play the video myVideo.start(); 

https://gist.github.com/jrejaud/b5eb1b013c27a1f3ae5f

Suena como si tuvieras el mismo problema que yo. En lugar de usar MP4, 3GPP es posible? Creo que he utilizado como HandBrake o algo así como el convertidor de vídeo … sólo tiene que asegurarse de que tiene el codificador de la derecha, como H.264x o algo así. Lo siento por ser un poco vago, ha sido un tiempo. Además, si es posible, no te molestes en preocuparte por el android 2.1 ya, y también, algo las cosas simplemente NO TRABAJARÁN EN EMULADOR. Así que si funciona en una gran cantidad de dispositivos, entonces sólo asumir que funciona (especialmente con diferentes fabricantes)

Aquí, puede leer mi problema y cómo he resuelto el problema (después de mucho tiempo y nadie tenía una respuesta). I explicado en mucho más detalle aquí: reproductor de medios android no funciona

En el fileName debe poner la ruta relativa al archivo (sin /asset ) por ejemplo:

 player.setDataSource( getAssets().openFd(**"media/video.mp4"**).getFileDescriptor() ); 

A- Utilice la API de MediaPlayer y el código de ejemplo.

B- Coloque el archivo multimedia en raw carpeta raw

C- obtener el file descriptor en el archivo

mediaplayer.setDataSource(fd,offset,length); – es un constructor de tres argumentos

E- entonces when onPreared , mediaplayer.start();

Código principal

 Uri raw_uri=Uri.parse("android.resource://<package_name>/+R.raw.<video_file_name>); myVideoView=(VideoView)findViewbyID(R.idV.Video_view); myVideoView.setVideoURI(raw_uri); myVideoView.setMediaController(new MediaController(this)); myVideoView.start(); myVideoView.requestFocus(); 

XML

 <?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="+@/Video_View" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 
  • Reproducir vídeo en el cuadro de diálogo android
  • La aplicación permite la reproducción de fondo de videos, problemas de Córdoba, Google Play rechaza aplicaciones
  • Reproducción de vídeo cuando la actividad está oculta
  • Buscando FFmpeg Wrappers para Android
  • Android: ¿Cómo volver a la actividad anterior cuando se detiene el video?
  • Android VideoView - Cómo reproducir vídeos en secuencia
  • Estiramiento para rellenar VideoView, relación de aspecto de VideoView
  • Procesar gráficos de superposición en vídeo de cámara
  • Stream de video de autorrotación TextureView en Nexus4 (pero no en Galaxy S4)
  • Cómo forzar mezcla alfa en un videoview
  • Grabación de vídeo de fondo en Android 4.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.