2011-01-03 12 views
11

Quiero reproducir una película desde mi tarjeta SD. He intentado utilizar el siguiente código:Android 2.2 problema de VideoView

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 tratando de reproducir el archivo me sale un mensaje de error. "video no encontrado" o algo similar. Cuando intenté transmitir desde la web, el video funcionó, pero fue muy lento. ¿Cuál es la mejor manera de reproducir videos en mi aplicación?

Gracias

Respuesta

2

Puede ser avi no es compatible en android.convert en MP4 o WMV o 3GP. probar 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(); 
} 
} 
} 
+0

dos respuestas para una pregunta. solo debe actualizarlo – Ishu

3

Utilice esta code.Hope que funcionará

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

Está reproduciendo el vídeo en su propia VideoView, Pero si no tiene nada de personalizar y sólo quiere mostrar la video en la pantalla, ¿por qué no usa 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); 
5

Se observa que setVideoPath() falla, mientras setVideoURI() funciona bien tanto para Web y Local por lo que insisten 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(); 
9

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(); 
3

intento con

video_view.setVideoURI(Uri.parse(path)); 

no se puede pasar directamente como un camino del hilo, si usted está tratando de establecer como un URI. El código que está trabajando muy 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(); 
3

su problema es que el camino de vídeo no se establece de la manera correcta:

acaba de cambiar a este código:

final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/robot.avi"; 

que va a resolver su problema si el video "robot.avi" existe en la carpeta raíz de la tarjeta sd

Cuestiones relacionadas