Limitaciones de la captura de video en la brecha del teléfono + complementos nativos

Estoy desarrollando una aplicación para móviles orientada a las plataformas iOS y Android. La aplicación consistirá en:

  1. Un tipo de interfaz de usuario / registro y listado de elementos de base de datos relativamente sencillo, alimentado por un servicio web ya creado y una aplicación web existente.

  2. Una función de captura y carga de video que utiliza complementos nativos.

He hecho una extensa investigación sobre PhoneGap durante la última semana, y he determinado que incluso teniendo en cuenta los problemas bien documentados y las limitaciones de PhoneGap, es adecuado para la primera parte de mi aplicación.

Sin embargo, dadas las limitaciones de la API de Captura de PhoneGap (org.apache.cordova.media-capture), no es apropiada para capturar video para subir, principalmente debido a la falta de control sobre las especificaciones de video. (En la mayoría de los dispositivos, las capturas de vídeo serán enormes archivos HD que no son adecuados para cargar, ni siquiera en Wifi, y ciertamente no más de 3g / 4g).

Teniendo en cuenta mis recursos y la línea de tiempo, he determinado que la creación de aplicaciones nativas en Java y ObjC son poco prácticas, al menos por ahora. Tengo muy poca experiencia de ObjC y de Java, pero soy bastante confidente e impaciente aprender estos idiomas si es necesario.

Dicho esto, estoy considerando 2 opciones:

  1. La primera, y probablemente la más racional, es que recojo la plataforma con la mayor cuota de mercado de mi base de usuarios existente (iOS), lo absorbo y vuelvo a ser nativo.

  2. La segunda, y tal vez la opción más alta, es que desarrollar una aplicación híbrida en PhoneGap, dirigido a ambas plataformas, y eludir las limitaciones de mi capacidad de captura de vídeo mediante la construcción de complementos nativos para Java y ObjC utilizando PhoneGap plugin API, reduciendo así el tiempo de desarrollo en el Resto de la aplicación, y el uso de código nativo sólo donde es necesario.

Los requisitos de mi complemento de captura de video serían los siguientes:

  1. Tener control completo sobre las especificaciones del video grabado, lo más importante es resolución y velocidad de bits. (Presumiblemente con AVFoundation, y similares en Adroid SDK).

  2. Controlar la interfaz de usuario de la función de captura de vídeo.

Obviamente, soy consciente de que estas tareas son muy posibles en ambas plataformas cuando se desarrollan en los api nativos como es evidente por las aplicaciones existentes en el mercado. (Vid, etc.).

Mi verdadera pregunta, ¿ cuáles son las limitaciones, y los problemas con la ampliación de la funcionalidad nativa a través de la API Plugin de PhoneGap? Casi no hay ejemplos de trabajo realizado en PhoneGap con este nivel de implementación nativa de captura de video. El ejemplo que he encontrado es este complemento, VideoCapturePlus , que aunque no he podido llegar al trabajo, parece prometedor.

Estoy especialmente interesado en saber si alguien por ahí ha implementado exitosamente plugins nativos en PhoneGap con este nivel de complejidad, o si es un agujero de conejo que desearía no haber bajado.

He llegado esencialmente a la parte inferior de esta pregunta, que estoy seguro de que otros son y se enfrentarán. Voy a abordar el tema en 3 partes:

¿Puedo hacer algo en PhoneGap (en contraposición a iOS nativo o Android SDK)?

Esta es una pregunta que me imagino que muchos desarrolladores considerando el marco PhoneGap se encuentran preguntando, al igual que yo. La respuesta corta es SI, PROBABLEMENTE PUEDES.

¿Cómo hago [algo] en PhoneGap?

Plugins! Aquí está el problema: Cordova (PhoneGap) en todo su brillo es extremadamente limitado en la forma en que accede a las características de hardware nativo, especialmente cuando se entra en la captura de video / foto / audio.

Aquí es donde los plugins entran. Hay miles de plugins PhoneGap en este momento. Muchos son tan simples como 4 líneas de Java y Objetivo C para superar algunas cosas simples que PhoneGap simplemente no va a hacer. Otros son grandes proyectos con ciclos de vida propios.

En mi caso, se hizo muy claro muy pronto que no iba a ser capaz de construir mi aplicación con las funciones de captura de vídeo que existían en PhoneGap. Dicho esto, me fui de compras para plugins. Al final de mi proyecto había tomado 2 complementos que ampliaron la funcionalidad de video y otros cuatro para hacer otras pequeñas cosas diferentes que necesitaba. En algunos casos, los complementos que encontré no tenían todo lo que necesitaba, y terminé contribuyendo bits de código. Si los proyectos están activos en GitHub, recomiendo altamente esto.

Al final, había cosas que quería hacer para las que no podía encontrar complementos. Todavía tengo planes de construir algunos de los míos, pero todavía no estoy allí. En pocas palabras: Fuera de los juegos y otras aplicaciones de renderizado 3D, tendrás dificultades para encontrar algo que no se puede lograr con un complemento de PhoneGap.

Para los interesados ​​específicamente en la captura de video, estos son los 2 complementos que me han sobrepasado en mi proyecto:

VideoCapturePlus

Video Captura de pantalla

¿Debo construir mi aplicación que hace [algo] en PhoneGap?

Por supuesto, esta pregunta depende de cada desarrollador, y cuáles son los objetivos de la aplicación. En mi caso, una aplicación sencilla que entre otras cosas captura y carga fotos y videos cortos era muy posible. Ciertamente hay casos en los que los parámetros y objetivos de la aplicación hacen que el desarrollo nativo sea la mejor opción.

Dicho esto, para la mayoría de los desarrolladores solos o pequeños equipos con recursos limitados y poca o ninguna experiencia en Java o ObjC, la respuesta a la pregunta "¿Debo considerar PhoneGap?", Sería [en mi mejor voz de Jim Halpert], "Absolutely you debería". Como ventaja añadida, diré lo siguiente: En mi caso, los diseños de HTML5 y gran parte de los JS front-end que se usaron tanto para las versiones para Android como para iOS de mi aplicación son en gran parte reutilizables para la versión web para móviles de mi aplicación. Ser capaz de mantener una base de código única para esas tres cosas ofrece eficiencia que aún más grandes organizaciones con recursos no deben pasar por alto.

  • Android: onSeekCompleteListener con VideoView
  • Buscando en YouTube HTML5 video sobre Android WebView
  • Android: cómo reproducir video mp4 desde la URL?
  • Phonegap: ¿Es posible reproducir varios videos simultáneamente en la misma página usando etiqueta de vídeo html5?
  • Problema de compatibilidad de vídeo: el video grabado en Android no se reproduce en el iPhone
  • Buffer de vídeo circular Android con sonido
  • Mover el archivo de video capturado por la cámara usando cordova (phonegap) no es refrescante galería thumbnail
  • Procesamiento de vídeo de Android marco por cuadro durante la grabación
  • Reproducir un archivo m3u8 local en android mostrando setDataSourceFD failed .: status = 0x80000000
  • Detectar la máxima resolución de vídeo compatible con un dispositivo móvil en un sitio web que responda
  • Cómo jugar video HTML5 en línea con Phonegap para Android 4.1.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.