android - source - Video sin interrupciones Loop con VideoView
videoview android studio example (6)
Aquí hay amigos de respuesta, debes usar vv.resume
en la clase setOnCompletionListener
[ https://stackoverflow.com/a/27606389/3414469][1]
Tengo el siguiente código para tomar un video como recurso en bruto, iniciar el video y reproducirlo en bucle, pero necesito que el video se repita sin interrupciones a partir de ahora cuando se trata de un final del clip y comienza nuevamente el clip, la transición entre las causas parpadeo por una fracción de segundo, lo que realmente no puedo tener para mi aplicación.
public class Example extends Activity {
VideoView vv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vv = (VideoView)findViewById(R.id.VideoView01);
//Video Loop
vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
vv.start(); //need to make transition seamless.
}
});
Uri uri = Uri.parse("android.resource://com.example/"
+ R.raw.video);
vv.setVideoURI(uri);
vv.requestFocus();
vv.start();
}
}
El clip tiene solo 22 segundos de duración, pero se creó para ser transparente, por lo que es posible trabajar sin demora.
La pausa es para que MediaPlayer
subyacente actualice sus búferes. El tiempo que tomará dependerá de una serie de factores, muchos de los cuales están fuera de su control (por ejemplo, la velocidad de la CPU, la velocidad de almacenamiento flash a bordo).
Uno que puede controlar es sacar su video del recurso y dentro del sistema de archivos. Los recursos se almacenan en el APK, que es un archivo ZIP, por lo que extraer el video de esta manera probablemente lleve más tiempo.
Es posible que deba alejarse de VideoView
y usar SurfaceView
con dos MediaPlayers
, alternando entre ellos: uno está jugando mientras se prepara el siguiente, de modo que cuando finalice la reproducción, puede cambiar al nuevo reproductor. No lo he intentado, así que no sé cuáles podrían ser las ramificaciones. Sin embargo, sé que esta técnica se utiliza con frecuencia para la reproducción de audio para la transición de un clip a otro.
La respuesta a esto es eliminar el audio del video y convertirlo en un archivo .ogg
que se puede enlazar a la perfección y luego usar el video sin audio para dar vueltas y esto funciona.
No estoy seguro si esto ayuda años más tarde, pero utilicé
vv.start();
vv.setOnCompletionListener ( new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
vv.start();
}
});
y tiene un bucle sin interrupciones
Poco tarde, pero hay alguna razón por la que no puede usar lo siguiente?
MediaPlayer.setLooping(true);
Prueba esto, funcionará al 100%
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});