Android 2.2 VideoView problema
Quiero reproducir una película de mi tarjeta sd. He intentado usar el código siguiente:
VideoView videoView = (VideoView) findViewById(R.id.videoView); final String MEDIA_PATH = new String("/sdcard/robot.avi"); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setVideoPath(MEDIA_PATH); videoView.setMediaController(mediaController); videoView.start();
Pero cuando estoy intentando jugar el archivo consigo un mensaje de error. "Video no encontrado" o algo similar. Cuando traté de streaming desde la web, el video funcionó, pero fue muy laggy. ¿Cuál es la mejor manera de reproducir vídeos en mi aplicación?
- VideoView con cookies (o encabezados)
- Detectar cuándo la reproducción de vídeo deja de reproducirse
- Cómo detectar si VideoView está reproduciendo video o Buffering?
- Cómo modificar el ancho de videoview programatically
- Android: ¿Por qué no puedo dar un onClickListener a un VideoView?
Gracias
- No se pudo abrir el archivo en el lado del cliente, intentando el lado del servidor Error en Android
- Android VideoView inicia muchos videos secuencialmente
- Reproducir vídeo en parte de la pantalla
- ¿Cómo ejecutar varios videos con diferentes VideoViews en una actividad en android 2.2?
- Reproducción de archivos de vídeo cifrados mediante VideoView
- Cómo reproducir vídeos desde la tarjeta SD
- Mostrar y ocultar un botón de reproducción sobre un VideoView en Android
- Cómo configurar la imagen de vista previa en videoview antes de jugar
Prueba esto…
VideoView videoView = (VideoView) findViewById(R.id.videoView); final String MEDIA_PATH = new String(Environment.getExternalStorageDirectory()+"/sdcard/robot.avi"); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setVideoPath(MEDIA_PATH); videoView.setMediaController(mediaController); videoView.start();
Se observa que setVideoPath()
falla, mientras que setVideoURI()
funciona bien tanto para Web como Local así que insisto en que utilice esto.
VideoView videoView = (VideoView) findViewById(R.id.videoView); final String MEDIA_PATH = new String("file:///sdcard/robot.avi"); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setVideoURI(MEDIA_PATH); videoView.setMediaController(mediaController); videoView.start();
Utilice este código. Espero que funcione
public class VideoPlayActivity extends Activity { private VideoView video; private MediaController ctlr; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); File clip=new File(Environment.getExternalStorageDirectory(), "haha.mp4"); if (clip.exists()) { video=(VideoView)findViewById(R.id.video); video.setVideoPath(clip.getAbsolutePath()); ctlr=new MediaController(this); ctlr.setMediaPlayer(video); video.setMediaController(ctlr); video.requestFocus(); video.start(); } } }
Intentar con
video_view.setVideoURI(Uri.parse(path));
No puede pasar directamente como una ruta de cadena si está intentando establecerlo como un uri. El código que funciona bien para mí:
path = Environment.getExternalStorageDirectory() + "/file_name"; // Add controls to a MediaPlayer like play, pause. MediaController mc = new MediaController(this); video_view.setMediaController(mc); // Set the path of Video or URI. video_view.setVideoURI(Uri.parse(path)); // Set the focus. video_view.requestFocus(); video_view.start();
Su problema es que la ruta de vídeo no está configurada de la manera correcta:
Basta con cambiar a este código:
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/robot.avi";
Que resolverá su problema si el video "robot.avi" existe en la carpeta raíz de la tarjeta sd
Estás reproduciendo tu video en tu propio VideoView
, pero si no tienes nada que personalizar y solo quieres mostrar el video en la pantalla, ¿por qué no usas el reproductor predeterminado para reproducir el video.
File imgFile = new File(Environment.getExternalStorageDirectory()+"FileName"); //make sure the video is in SDCard, //if its located in any folder care to pass full absolute path Intent tostart = new Intent(Intent.ACTION_VIEW); tostart.setDataAndType(Uri.parse(imgFile.getPath()), "video/*"); startActivity(tostart);
Puede ser avi no soporta en android.convert en mp4 o wmv o 3gp. Prueba este código
public class VideoPlayActivity extends Activity { private VideoView video; private MediaController ctlr; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); File clip=new File(Environment.getExternalStorageDirectory(), "robot.mp4"); if (clip.exists()) { video=(VideoView)findViewById(R.id.video); video.setVideoPath(clip.getAbsolutePath()); ctlr=new MediaController(this); ctlr.setMediaPlayer(video); video.setMediaController(ctlr); video.requestFocus(); video.start(); } } }
- Emulador para galaxia s3
- Importar 3 SDKs, obtiene el error: Se han encontrado 3 versiones de android-support-v4.jar