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:
-
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.
- Transmisión en directo del reproductor RTMP / RTSP sin utilizar la visualización web (servidor WOWZA) en Android
- Mejor manera de desarrollar una aplicación de chat de video simple para Android e iOS
- Rtsp rendimiento de vídeo como navegador provocado intención vs mi intención activada por la aplicación
- Reproducción de vídeo a cámara lenta en android
- SeekTo en VideoView
-
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:
-
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.
-
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:
-
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).
-
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.
- ¿Cómo usar la decodificación acelerada por hardware en Android?
- Android MediaPlayer seekTo no funciona
- ¿Cómo reproducir varios vídeos en una vista de lista con MediaPlayer?
- Multiplexación de flujos de audio y vídeo en línea en android
- El video no se reproduce en la vista web de Android
- Reproducción de vídeos HTML5 en el navegador - ¿Qué funciona para la mayoría de los dispositivos Android?
- Tableta Android con vídeo incorporado pierde video en rotación
- Configuración de encabezados para streaming de vídeo mp4 y reproducción de archivos con Exoplayer
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.
- Ocultar el teclado EditTexts en Fragmentos
- Android Navegador textarea se desplaza por todo el lugar, es inutilizable