Recepción de flujo de vídeo desde una cámara IP en android

Tengo una cámara IP que es de streaming de vídeo en formato MJPEG. Ahora mi objetivo es recibirlo y mostrarlo en mi propia aplicación Android personalizada. Para esto tengo tres alternativas de programación en la plataforma android:

  1. Uso de la clase incorporada de Anrdroid MediaPlayer
  2. Utilizar la biblioteca FFMPEG en C nativo y acceder a ella a través de JNI
  3. Uso del puerto GStreamer en android para recibir el flujo

Así que por favor sugerir una mejor solución?

No tengo experiencia con FFMPEG o GStreamer. Entonces, ¿cuál es la viabilidad de hacer esto?

Utilice gstreamer para ello.

He utilizado gstreamer en beagleboard que tiene 1GHz procesador para tomar la imagen de 2 cámaras en 30 fps con muy bajo poder de procesamiento de la CPU.

Gstreamer capaz de combinar imágenes, agregar cadenas, cambiar de formato. Y te presenta lo que quieres fácilmente en stream. Lo único que tienes que hacer es agregar cajas negras entre sí.

Puede agregar casillas negras tanto dinámicamente como estáticamente.

Si no va a cambiar su flujo depende de la entrada en su programa, sugiero que use una estática . Pero no estoy seguro de si funciona en android ..

Para probar la tercera opción (gstreamer), puedes usar esta aplicación: https://play.google.com/store/apps/details?id=pl.effisoft.rpicamviewer2 . También puede abrir la vista previa de gstreamer desde su código usando el código siguiente:

Intent intent = new Intent("pl.effisoft.rpicamviewer2.PREVIEW"); int camera =0; //--------- Basic settings intent.putExtra("full_screen", true); intent.putExtra("name"+camera, "My pipeline name"); intent.putExtra("host"+camera, "192.168.0.1"); intent.putExtra("port"+camera, 5000); intent.putExtra("description"+camera, "My pipeline description"); intent.putExtra("uuid"+camera, UUID.randomUUID().toString() ); intent.putExtra("aspectRatio"+camera, 1.6); intent.putExtra("autoplay"+camera, true); //--------- Enable advanced mode intent.putExtra("advanced"+camera, true); //when advanced=true, then custom_pipeline will be played //when advanced=false, then pipeline will be generated from host, port (use only for backward compatibility with previous versions) intent.putExtra("custom_pipeline"+camera, "videotestsrc ! warptv ! autovideosink"); //--------- Enable application extra features intent.putExtra("extraFeaturesEnabled"+camera, false); //--------- Add autoaudiosink to featured pipeline intent.putExtra("extraFeaturesSoundEnabled"+camera, false); //--------- Scale Video Stream option intent.putExtra("extraResizeVideoEnabled"+camera, false); intent.putExtra("width"+camera, 320); //used only when extraResizeVideoEnabled=true intent.putExtra("height"+camera, 200); //used only when extraResizeVideoEnabled=true //--------- Add plugins ArrayList<String> plugins = new ArrayList<String>(); intent.putExtra("plugins"+camera, plugins); intent.setPackage("pl.effisoft.rpicamviewer2"); startActivityForResult(intent, 0); 
  • Falta el complemento para GStreamer para Android SDK
  • No se puede crear GStreamer para Android Tutoritals
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.