19 votos

rendimiento de vídeo RTSP como navegador activa vs intención mi intención de aplicación activada

Hola estoy creando una aplicación que va a jugar livestream.com's rtsp canal en vivo. Estoy lanzando el jugador intención dentro de mi aplicación lo siguiente:

            iPlayer = new Intent(Intent.ACTION_VIEW); 
            //iPlayer.setType("video/*");
            iPlayer.setData(Uri.parse(videoUrl));  
            startActivity(iPlayer); 

Cuando el reproductor está en marcha a través de mi Aplicación, el rendimiento de video es muy baja. Se detiene el almacenamiento en búfer cada pocos segundos, suena por unos segundos y se detiene durante el almacenamiento en búfer de nuevo.

POR otro lado, Si abro la url en el navegador de android (por ejemplo. http://m.livestream.com/abcalbania) tiene una etiqueta de vídeo en la página y desencadena el reproductor de vídeo. ESTA vez, el video corre muy suave.

Alguna Idea de por qué puede suceder? Y cómo este puede ser fijo?

  • No quiero lanzar la URL del navegador como la intención.
  • Esto se hace en Atmel de la corteza A9 del chipset con Android 2.3.4

1voto

user3848825 Puntos 89

Creo que el video juego de forma asincrónica para un mejor rendimiento. Mi código es:

   private class myAsync extends AsyncTask<Void, Integer, Void> {
       int duration = 0;
    //int current = 0;
    @Override
    protected Void doInBackground(Void... params) {
        videoView.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                progressDialog.dismiss();
                videoView.seekTo(check);
                videoView.start();
                duration = videoView.getDuration();
            }
        });

        do {


            current = videoView.getCurrentPosition();
            System.out.println("duration - " + duration + " current- "
                    + current);


        }

            if (sync.isCancelled())
                break;

        } while (current != duration || current == 0);

        return null;
    }

}

0voto

Varun kumar Puntos 63

Usa este código para la suave corriente

String videoUrl = "rtmp://mystream";
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse(videoUrl), "video/*");
startActivity(i);

0voto

jitain sharma Puntos 180

Por qué no jugar a este en su propia actividad, generar actividad y renderizar el video ver como

privado String ruta2 = "rtsp: / /...";
Video de URI = Uri.parse(path2);

mVideoView.setVideoURI(video);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.postInvalidateDelayed(100);
mVideoView.start();

También puede búfer antes de comience a jugar tal vez 5 segundos y que el almacenamiento en búfer sucesivas será rápido. puede controlar lo más por su cuenta.

0voto

Elenasys Puntos 23268

El problema es causado por los codecs que probablemente no son compatibles con el reproductor.

por ejemplo yo tengo un video creado con MPEG Audio codec junto con el H. 264 códec de vídeo.

si puedo iniciar el vídeo a través de mi Aplicación en el video se ejecuta sin problemas, pero si me lanzamiento de un vídeo en Ooyala Gancho Jugador tiene un rendimiento muy deficiente, se reproduce el vídeo cada 3 segundos, la razón es que la secuencia de uso de MPEG audio codec en lugar de códec de Audio AAC que es compatible.

Encontrarás la respuesta con:

lo de los codecs que se utilizan para crear de video, y lo que son apoyados por su jugador?

0voto

Dalvik Puntos 643

Android MediaPlayer manejar muy bien RTSP - no abrir una aplicación externa - que no es necesario y producto-sabia mal.

Acerca de su pregunta - el explorador puede enviar otro de los parámetros para el reproductor de video que ayuda a reproducir el vídeo liso, yo no ver, pero suena como la única opción posible para lo que usted está describiendo. Ejemplo para el extra param podría ser la resolución de vídeo / codificación / tamaño .. usted puede conseguir todos ellos fácilmente usando MediaMetaDataRetriever.

Si usted no desea utilizar el nativo VideoView o MediaPlayer usted puede agregar siempre reproductor externo para su la aplicación, como libVLC o Vitamio.

Recomiendo de uso de Vitamio, es realmente fácil de usar y de integrar. LibVLC es en código nativo, que significa que usted tendrá que construir usando ndk y agregar sus librerías para su proyecto. Usted puede encontrar aquí cómo hacerlo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: