sábado, 23 de abril de 2016

Experimento random: Que ocurre cuando desconectas la camara interna de tu telefono + Añadir tu logo transparente a un video con ffmpeg


Pequeño experimento realizado por puro aburrimiento en mi antiguo Nokia 5800.
En este experimento desarmo mi móvil, extraigo la cámara frontal del movil, vuelvo a armarlo sin la cámara, e intento hacer fotos con ella.

FAQs:
P: ¿Song name?
R: Darude - Sandstorm

P: ¿Como conseguiste el destornillador especial para nokia?
R: No lo conseguí, simplemente utilicé un destornillador linea de precisión, el cual sorprendentemente encajaba a la perfección.

P: ¿Volvía a funcionar la cámara tras volver a conectarla y rearmar el móvil?
R: Si

P:¿Porque la cámara tiene esa forma tan rara?
R: Lo que veis extraído es un modulo que se conecta a la placa base del móvil y lleva la cámara frontal, el detector de proximidad, y el conector del altavoz de llamadas, que es ese trozo de metal que veis también en la mesa

P: ¿Porque la cámara delantera y no la trasera?
R: En el nokia 5800 la camara trasera va soldada a la placa.

P: ¿Y esa foto tan cutre en la esquina?
R: Es otro pequeño experimento con ffmpeg, en el cual añado un PNG con transparencia a un video. El comando para añadirlo sería:
ffmpeg -i mivideo.mp4 -i miimagen.png -filter_complex overlay=0:0 salida.mp4
Aquí 0:0 son las coordenadas donde colocas la imagen, en este caso en la esquina superior izquierda.

domingo, 17 de abril de 2016

Como crear un video a partir de un GIF y un audio para subirlo a Youtube (Por ejemplo)

Bueno, pues en esta ocasión os traigo un shell-script para windows (Archivo .bat) que si tenéis descargado el programa FFMPEG y lo colocáis en el mismo directorio en el que tenéis el ejecutable, os permitirá obtener un vídeo con un GIF que se repite el tiempo que queráis con el audio que queráis de fondo.


Versión nueva optimizada 2018:
Para crear el archivo .bat debéis abrir el bloc de notas y pegar el contenido a continuación:

@echo off
cls
echo INTRODUZCA GIF
ECHO _______________
set /p gif="-> "
echo.
echo INTRODUZCA CANCION
ECHO ___________________
set /p cancion="-> "
echo.
echo INTRODUZCA FRAMERATE PARA EL VIDEO
ECHO __________________________________________
set /p rate="-> "
ffmpeg -r %rate% -i %gif% -filter_complex "loop=-1:32767,setpts=N/%rate%/TB" -i %cancion% -acodec copy -shortest salida.mkv

Lo guardáis con extensión .bat y lo ejecutáis.
Os preguntara que introduzcáis el GIF y la canción. Para ello, basta con arrastrar el archivo a la terminal y pulsar intro, o si se encuentra en el mismo directorio también podéis escribir su nombre.
También os pregunta el framerate, para que podais elegir la velocidad a la que quereis que se reproduzca el GIF. Poned un valor numérico como por ejemplo 24. A mayor valor mas velocidad.

Versión antigua 2016:
No hagais caso a esta versión, la conservo solo por motivos historicos.

@echo off
cls
echo INTRODUZCA GIF
ECHO _______________
set /p gif="-> "
echo.
echo INTRODUZCA CANCION
ECHO ___________________
set /p cancion="-> "
echo.
echo INTRODUZCA DURACION VIDEO (Sec / Min:Sec)
ECHO __________________________________________
set /p dura="-> "

del temp.ts temp.mp4 salida.mp4
ffmpeg -i %gif% -c libx264 -preset ultrafast -qp 0 -g 0 -r 60 temp.ts
ffmpeg -stream_loop -1 -i temp.ts -t %dura% -preset veryfast temp.mp4
ffmpeg -i %cancion% -i temp.mp4 -c copy -shortest salida.mp4
del temp.ts temp.mp4

Ahora lo guardáis con extensión .bat y lo ejecutáis.
Os preguntara que introduzcáis el GIF y la canción. Para ello, basta con arrastrar el archivo a la terminal y pulsar intro, o si se encuentra en el mismo directorio también podéis escribir su nombre.
También os pregunta la duración del vídeo, que será lo máximo que dure el vídeo: Si introducís un tiempo menor a la duración del audio, el vídeo solo durará ese tiempo. Si introducís un tiempo mayor al audio, el video resultante tendrá la duracion que tenga el audio. Si esto es lo que queréis, introducid 5 segundos mas de lo que dura el audio por ejemplo, ya que el tiempo introducido sera el tiempo de vídeo a codificar.
Por ejemplo: si tenéis una canción de 3 minutos e introducís 50 minutos, el vídeo resultante tendrá 3 minutos pero el ordenador se quedará procesando durante muchísimo mas tiempo que si ponéis 3:05.

Aqui teneis un ejemplo obtenido con el script y este GIF:


A continuación detalles técnicos para informáticos:

En las ultimas versiones de FFMPEG se introdujo la opción -stream_loop para hacer un bucle con la señal de entrada y asi obtener una señal de salida en bucle. No obstante, esta función es nueva y tiene un gran problema, y es que no procesa nada, simplemente copia y pega el contenido del archivo sucesivamente. Esto significa que esta señal de entrada para que funcione, debe estar en formato *.ts y no debe contener i-frames (opción -g 0).
En este script, se pasa el archivo GIF a un archivo de vídeo .ts temporal con el contenido sin perdidas o lossless (opcion -qp 0), el cual va a ser la entrada en bucle del vídeo temp.mp4 a obtener durante el tiempo establecido. A este video finalmente se le añade el audio y obtenemos la salida.

Mis programas de hacker ❤

Tanto para hacer mis pequeños experimentos de informática como para usos mas importantes, hay gran cantidad de programas a los que uno se acostumbra, y que si por alguna razon se me formatease el ordenador o simplemente me lo cambiase, lo primero que haría sería instalarmelos de nuevo.

En este post quiero compartir con vosotros programas que seguramente no conozcáis y a los que yo en gran cantidad de ocasiones he dado mucha utilidad. Pienso que esto puede ser de gran interés para vosotros, no voy a enumerarlos todos, pero si a los que no podrían faltar en mi equipo:

Multimedia:

VLC: Gran conocido par muchos de vosotros, actualmente es la mejor alternativa de reproductor multimedia por todas sus opciones y características, y aun mas teniendo en cuenta que últimamente reproductores como Windows Media player le tienen fobia a los nuevos formatos como OGG Vorbis o H265.

Audacity: Este programa en realidad no es tan desconocido. Me sirve entre otras cosas para grabar desde el micrófono con gran cantidad de opciones, para detectar grabaciones de audio en ROMs, o simplemente sonidos RAW dentro de los archivos con la opción "importar audio en bruto", y como no, su función principal: para hacer cualquier tipo de edición de audio, desde las mas simples como acelerar velocidad, ritmo o volumen, recortar el audio, hasta opciones mas complejas como eliminación de ruido o filtrar las voces en las canciones.

FFmpeg: Este programa a pesar de funcionar exclusivamente en linea de comandos... Es lo mejor que existe en cuanto a multimedia. Os explico: De forma resumida, este programa permite convertir cualquier formato de audio, imagen, o vídeo, a cualquier otro con la calidad que se quiera, con gran cantidad de opciones de filtro (como cambiar la velocidad del audio, cambiar la resolucion del video, invertir video horizontalmente,...) Tambien puede importar/exportar multimedia desde internet ya sea por http ,rtmp,.... desde dispositivos de hardware como la webcam... ¡Lo hace todo! Con el hasta se puede convertir un video mp4 a GIF... O viceversa, como os quiero explicar en mi proximo post ;)

Compresión:

7zip: ¿De verdad no lo esperabais? No solo permite comprimir en 7z, sino que a la hora de comprimir en formato ZIP es el programa mas eficiente y permite descomprimir gran cantidad de archivos, como los *.DEB, los *.IMG,... Incluso puede extraer archivos de algunos .EXE autoextraibles.

WinRar: vale... ¿Y para que necesito WinRar instalado teniendo 7zip? Aunque 7zip me permita descomprimir los RAR, WinRar es el único programa capaz de comprimir en RAR debido a su licencia. 7zip va mejor, vale, pero tampoco viene mal tener instalado una alternativa ;)

Offzip: Pues este es otro programa que solo funciona en linea de comandos. ¿Que hace? Imaginaos que teneis un archivo de una aplicación Shockwave, un firmware de un aparato (como los de LG) ... Lo que sea, lo abris en un editor hexadecimal por ejemplo y no veis nada ademas de bytes dispersos, lo que parece contenido comprimido. 7zip no lo va a abrir, porque el contenido comprimido no es el archivo... Esta dentro del archivo. Offzip lo que hace es buscar dentro de archivos contenido comprimido en zip o deflate. Muchas veces solo os sacará archivos de pocos bytes con m**rda, pero si realmente ese fichero tiene contenido comprimido, lo sacará sin errores.

Imagenes y unidades de disco:

OSFMount: Olvidaos de Daemon Tools y todo ese rollo que siempre buscais tutoriales de como piratear. Este programa es gratuito, y sirve no solo para montar imagenes ISO como dispositivo virtual. Tambien permite montar imagenes de discos duros (ejemplo imagenes IMG), ya sea como solo lectura o tambien de escritura como si estuviesen conectados al ordenador. Tambien os permite montar unidades virtuales... ¡En la RAM! Puedes por ejemplo reservar 1 GB de RAM a una unidad virtual cuyos archivos se leeran y escribirán, como no, a una velocidad enorme, y cuando ya no te valga lo que tengas alli, desmontarla, y recuperar la RAM.

Recuva: Explora el sistema de archivos de un disco duro o pen drive en busca de archivos eliminados que se puedan recuperar. Te permite incluso recuperar información borrada de una unidad formateada.

ISOBuster: Sirve entre otras cosas para explorar archivos de imagen, ver y extraer sus archivos, ver que sectores ocupan sus archivos, propiedades,... Tambien sirve para extraer ficheros desde CDs dañados. Esto me fue muy util con un CD en el que tenia dos copias en muy mal estado con gran cantidad sectores irrecuperables en cada uno (Casi siempre sectores distintos). Gracias a un programa que hice en c y a Isobuster, pude recuperar el 99,9% del contenido.

Imagenes (Me refiero a dibujos/fotos):

Gimp: Muchas veces he tenido la intención de pasarme a Photoshop por el hecho de que lo veo mas profesional, pero de momento sigo usando Gimp, ya que es el programa al que estoy acostumbrado y a fin de cuentas lo hace practicamente lo mismo que photshop.

BPG: Herramientas de codificación y decodificación de ficheros BPG. No me hace mucha utilidad actualmente, pero considero que tampoco hace ningun mal tenerlo. Como visteis en la comparativa, es un formato de imagen que comprime mejor que JPG.


Internet y redes:

Axel: Acelerador de descargas que funciona en terminal del cual ya hablé en este otro post.

Miniweb: Si buscais un servidor web para publicar contenido en internnet probablemente opteis por Apache o similares. Pero si lo que quereis es simplemente un servidor web pequeño para vuestras probaturas, que no necesite ficheros de configuración, al que únicamente le pasais la carpeta raiz por consola de comandos (funciona en consola) Miniweb es una buena opcion. Por alguna razon solo esta disponible para Windows.

Fiddler: Ademas de capturar el trafico http como haria Wireshark, Fiddler lo muestra de una forma mas "limpia", ya que funciona mediante un proxy interno y simplemente muestra el contenido de las respuestas http, pudiendo mostrar el contenido en formato texto, imagen,.. Ademas de poder descargar los elementos web obtenidos en un archivo.
Otra de las funciones mas potentes de Fiddler, es la de poder programarlo para sobreescribir ciertas respuestas web con otras que tu le indiques. Por ejemplo: Lo puedes programar para que todas las imagenes provenientes de la URL: www.google.es sean una imagen que tienes almacenada en tu ordenador.
Ademas, puede mostrar y descifrar respuestas https y capturar trafico de otros dispositivos si les configuras un proxy hacia la IP de tu ordenador.

Wireshark: Este es un clasico, permite analizar el trafico de red, mostrar el contenido del trafico, mostrar estadisticas, etc,etc.

Putty: Para realizar conexiones SSH y Telnet.

WinSCP: Para manejar archivos remotos en servidores SFTP, SCP,...

Otros:

Notepad++: Al contrario que el Notepad clasico de windows, si abres un fichero binario para cambiar una linea de texto, no te destroza el archivo. Ademas, es muy intuitivo cuando abres un fichero con codigo, ya que te colorea los distintos elementos para poder diferenciarlos facilmente. Es el editor de texto que utilicé cuando hice el codigo de mis ROMs de GameBoy.

HexWorkshop: Todo jakar debe tener instalado un editor hexadecimal. Este es el que uso yo. Entre otras cosas permite aplicar operaciones aritmeticas a los bytes seleccionados de un archivo (ej: incrementar en x, invertir,...) permite visualizar los archivos como mapa de bits, comparar archivos (herramienta muy potente), extraer cadenas de texto, o simplemente hacer busquedas dentro del archivo.

jueves, 14 de abril de 2016

Como ocultar o quitar la publicidad del reproductor de música SCM player

Lista de reproducción actualizada b*tx!!
Y en esta ocasión después de tener mi reproductor tanto tiempo (desde que abrí mi blog) y con el reciente incremento de visitas, llegó la hora de darle una mejor imagen quitando la molesta publicidad que aparecia en el reproductor de música.

Por si habia alguna duda al respecto de esta, la publicidad que veiais no me beneficiaba a mi de ninguna manera, sino que era la manera de financiar el mantenimiento de los servidores del reproductor SCM.

Pues bien, a pesar de esto SCM es de codigo abierto, y por lo tanto la manera que proponen de tener el reproductor sin publicidad es descargando el codigo fuente, realizandole los cambios necesarios para quitarla, y alojandola en un servidor propio.

Pero no todo el mundo tiene su propio servidor a disposicion de los visitantes del blog, por eso yo he aprovechado una vulnerabilidad de los temas, si se le puede llamar asi, que consiste en aprovechando todas las posibilidades que me ofrece CSS (Lenguaje en el que estan codificados los temas) mover el campo de visión de la publicidad por debajo de la pantalla donde no se puede ver. ¿Que significa esto? significa que la publi se descarga, ya que CSS que es un lenguaje orientado a la interfaz y no puede hacer nada al respecto, pero en cambio, CSS si me deja ocultarla, y eso es lo que he hecho, simplemente añadiendo las lineas

#playlist .odd{bottom:-250px !important;} #playlist .items{bottom: 0 !important;}

al final del CSS. Lo primero hace que las entradas de la lista impares, lo que incluye la publi (tengo un numero de canciones pares) se desplace 250 pixeles por debajo de la pantalla (250 es la altura del anuncio) y lo segundo estira la lista de reproducción hasta la parte de abajo de la pantalla llenando el hueco vacio. Para asegurarme de que esto va a ser siempre así y no va a ser sobreescrito por ningun otro CSS les pongo !important al final.

Pues bien, simplemente he partido del tema cyber, le he añadido las dos lineas, y he subido mi tema CSS resultante a Google Drive. desde ahi le comprimo la url con bit.ly y... ¡Aqui esta el resultado! SCM player sin publicidad ;)

lunes, 4 de abril de 2016

El mejor formato de compresion del mundo (desarrollado por mi) es un fracaso :')

Hace ya tiempo publiqué un post en el que me adelantaba a deciros que estaba desarrollando un formato de compresión que combinaría rar, 7z y flac (este último fue descartado) para conseguir los mejores resultados de compresión hasta el momento. Bien... Aunque en Enero ya estaba terminado, por motivos académicos he tenido el blog un poco abandonado últimamente.

En el formato *.mc el compresor separa un fichero en varios fragmentos del mismo tamaño y les aplica a cada uno compresión rápida en cada uno de los formatos (rar y 7z) para determinar cual es el mas potente con ese fragmento de archivo. Una vez hecho esto, todos los fragmentos que se comprimen mejor en 7z se unen en un único archivo, lo mismo con los fragmentos para rar. Estos archivos se comprimen con máxima compresión y se unen al fichero mc... Va, lo veréis mejor con una imagen:





Y ya que estamos también os adjunto el formato de la cabecera que decidí utilizar para mc:


El formato fue un fracaso, por lo que no os adjunto ni el compresor ni decompresor (A menos que realmente tengáis interés en este proyecto y me lo pidáis por comentario) ya que aunque en la teoría todo cuadra, en la practica usar varios formatos a la vez y separar el archivo en fragmentos muchas veces complica las cosas a los compresores, ya que entre otras cosas se pierde eficiencia debido a la localidad espacial. No solo eso, sino que ademas en muchos archivos, la compresión 7z ofrece mejor compresión en todos los fragmentos, haciendo que mc sea equivalente a comprimir en 7z añadiendo una cabecera adicional que aumenta el espacio.

Hice la prueba con el rom de Super Mario 64 y el buscaminas de Windows XP y estos fueron los resultados:

SM64
Tamaño original: 8192 Kb
RAR: 5726 Kb
7z: 5567 Kb
Mc: 5534 Kb

Winmine.exe
Tamaño original: 120.320 bytes
RAR: 63.646 bytes
7z: 66.762 bytes
Mc: 61.423 bytes

Ah... Se que es algo que se suele dar por hecho, pero todos los archivos comprimidos en mc son descomprimidos sin problemas.

Os adjunto el fichero winmine.mc por si queréis echarle un vistazo a la estructura, aunque si lo haceis os comento que en vez de usar 7z he usado xz que viene a ser lo mismo pero para un único archivo y con menos cabecera. Recordad que me podéis comentar abajo lo que queráis. Yo me quedaré aquí llorando un poco :'')