# Video4Share
## Motivación

Este proyecto surge a finales de febrero, con motivo de la asignatura TMI, en la parte de la asignatura se basaba en la realización de un proyecto relacionado con la asignatura. Tras un par de semanas de investigación, decidí decantarme por una aplicación de transformación y conversión de video para Android.

## ¿Qué es Video4Share?

Video4Share es una aplicación que te permite realizar todo tipo de transformaciones y conversiones de un video para que después puedas compartirlo donde quieras. Todo ello con una interfaz limpia e intuitiva. Con Video4Share podrás:
Convertir video a lo que quieras:
Extraer lo que quieras del video:
Y más:
La idea es proporcionar al usuario una aplicación que sirva para poder transformar un video en lo que el usuario desee, para luego compartirlo donde y con quien quiera.

## Dificultades durante el desarrollo

La realización del proyecto no ha sido fácil. El hecho de ser solo una persona en el equipo de desarrollo, aumenta mucho la carga de trabajo. Algunas de las dificultades encontradas durante la realización del proyecto han sido:
* Soporte para video en Android: Android no proporciona soporte para trabajar con video en Android, por lo que me vi obligado a realizar un trabajo de investigación bastante potente. El resultado de esta fase fue decidir usar FFMPEG.
* FFMPEG en Android: Un verdadero dolor de cabeza. Al principio pensé en compilarlo con el NDK de Android, algo que requiere de grandes conocimientos. Después pasé a investigar librerías y proyectos ya construidos para Android. Probé muchos sin éxito, hasta que di con un proyecto en Git que me iba bien.
* Reproductor de video: Aunque Android incluye una vista "VideoView", hacer que funcione como tu quieres en la aplicación lleva bastante tiempo.
* Sistema de ficheros de Android: El multimedia generado por la aplicación se almacena en el sistema de ficheros de Android. Tuve que investigar bastante para guardar correctamente los ficheros generados.

## Base de la aplicación: FFMPEG

Para realizar todas las conversiones y transformaciones se utiliza FFMPEG."FFmpeg es una colección de software libre que puede grabar, convertir (transcodificar) y hacer streaming de audio y vídeo. Incluye libavcodec, una biblioteca de códecs. FFmpeg está desarrollado en GNU/Linux, pero puede ser compilado en la mayoría de los sistemas operativos, incluyendo Windows." Para este proyecto se utilizó una adaptación para Android:
* https://github.com/hiteshsondhi88/ffmpeg-android-java

## Áreas a mejorar

Esta claro que la aplicación no podía ser perfecta. A continuación detallo algunos de los inconvenientes de la app. Podrían solucionarse con más tiempo o con un equipo de desarrollo más numeroso:
* Tamaño de la APP: La app ocupa más de 25 megas, un tamaño demasiado grande para una aplicación de este estilo. La solución estaría en recompilar los binarios de FFMPEG con lo justo y necesario para que la app pueda funcionar.
* Tiempos de ejecución: Los tiempos de ejecución de conversión son bastante elevados, dependiendo del móvil tardará más o menos.
* Videos de WhatsApp: Actualmente no se pueden seleccionar videos de WhatsApp. La ruta de la carpeta de videos de whatsapp tiene espacios, lo que hace que la librería utilizada no coja la ruta correctamente. Actualmente no hay solución y estaría en colaborar en el desarrollo de la librería en GitHub.

## Relación con TMI

La aplicación encaja perfectamente dentro de la asignatura TMI. De esta manera se pueden destacar los siguientes aspectos:
* Formatos: En la aplicación se trabaja con multiples formatos, tanto de audio como de imagen y de video:
Formatos de video
* AVI
* MP4
* MOV
Formatos de audio
* AAC
Formatos de imagen
* JPEG
* GIF
Acciones realizadas:
* Conversión a multiples formatos
* Extracción de multimedia de un video.
* Interacción con el sistema de archivos
Interacción:
* Aplicación simple con una interfaz clara e intuitiva
* Reproductor de video integrado
* Posibilidad de interactuar con otras aplicaciones a través de menú compartir

## Descarga de la aplicación y Código Fuente

El código fuente está disponible en GitHub en el siguiente enlace:
https://github.com/JesusMartinAlonso/Video4Share
La aplicación se puede descargar en el siguiente link:
https://github.com/JesusMartinAlonso/Video4Share/releases/download/1.1/app-release.apk

## Conclusiones

Ha sido un proyecto muy interesante, a pesar de las dificultades, donde he podido investigar sobre diversos formatos y trabajar con video en Android, algo que tenía pensado desde hace tiempo. Creo que el resultado es satisfactorio y me servirá en un futuro.

## Alumnos implicados

* Jesús Martín Alonso