Pregunta El cliente de Android con transmisión en vivo RTSP 1080p recibe un error (100,0)


Mi nueva cámara de vigilancia acaba de llegar, así que estoy tratando de escribir una aplicación para transmitir en vivo el video.

Como básicamente no tenía documentación, instalé la aplicación para Android 'onvifer' que le permite navegar por las capacidades de la cámara. Esta aplicación funciona bien: obtiene el video y permite los controles PTZ, etc. Informa la URL de transmisión como:

 rtsp://192.1.0.193:554/mpeg4

Probé la transmisión en el cliente de Windows de VLC, y también puedo transmitir video desde esa URL. Esto me hace sentir cómodo de que la red funciona bien.

La cámara indica que la alimentación será 1920x1080; VLC confirma esto.

El código básico en mi actividad:

VideoView videoView = (VideoView)this.findViewById(R.id.VideoView);
videoView.setVideoURI(Uri.parse("rtsp://192.1.0.193:554/mpeg4"));
videoView.requestFocus();
videoView.start();

También le he dado a la aplicación permisos de INTERNET en AndroidManifest.xml, desactivé la autenticación en la cámara y estoy corriendo en un dispositivo real (no en el emulador).

Cuando ejecuto la aplicación, LogCat muestra esto de inmediato:

setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: rtsp://192.1.0.193:554/mpeg4
at android.content.ContentResolver.openTypedAssetFileDescriptor (ContentResolver.java).

Alrededor de 15 segundos después, la aplicación muestra un cuadro de diálogo modal "No se puede reproducir este video" y se agrega a LogCat:

MediaPlayer      error (100, 0)
AudioSystem      AudioFlinger server died!
MediaPlayer      error (100, 0)
VideoView        Error: 100,0

He buscado en Google todo lo que puedo pensar, pero no he encontrado nada útil.

¿Alguna idea?


6
2017-08-09 06:03


origen


Respuestas:


wild-ass-guess en tu logcat y el RC = 100 ... Ningún archivo SDP o equivalente para RTSP del bloque 'moov atom' requerido para negociar los detalles del stream / container / codec / format ... Puedes obtener el código AOSP para mediaPlayer / videoView y grep el valor RC en la fuente.

RTSP es difícil de depurar (tenga en cuenta los enlaces de herramientas) y no se garantiza que se ejecute dentro de una red NAT debido a problemas de UDP. Entonces, para obtener un mejor resultado, es posible que tenga que buscar forzar su configuración para hacer un canal de datos en TCP y no en UDP. O podrían ser otros temas, de los cuales hay muchos.

Si realmente quieres investigar, algunas herramientas posibles a continuación:

Usar linea de comando y Cliente CURL para solicitar su transmisión:

Androide  - Paquete de gestión de sesión de Java RTSP en Git

Volcados de protocolo para las sesiones de CLI RTSP a las secuencias de Youtube RTSP / SDP

Para resolver el problema, es posible que tenga que acceder a las malas hierbas con herramientas de depuración que rastrean los detalles de la negociación del protocolo que precede al MediaPlayer que realmente comienza a reproducirse en la transmisión. Eso incluiría aprender el RFP y los detalles del protocolo.


2
2017-08-24 15:28



  1. videoView.setVideoURI (“rtsp: //192.1.0.193: 554 / mpeg4”);
  2. Prueba tu aplicación en otro teléfono.
    Puede encontrar que el problema es sobre el dispositivo móvil.
  3. Prueba esto ruta de acceso: "rtsp: //218.204.223.237: 554 / mobile / 1 / 4C024DFE77DC717D / onnuvesj43xj7t26.sdp".
    Ver si el código tiene algo mal.

0
2017-08-24 09:24