Hola,
Yo estoy presentando a mi nuevo reproductor de vídeo constituida un atmega32 microcontrolador y nokia LCD a color. Tengo un 65K color LCD de un viejo nokia 6030 celular. Yo directamente soldadas alambre de cobre esmaltado fino 10 desde el área cuadrada de 0,5 cm de la fina PWB flexible de la pantalla LCD a una franja de berg fijada en otro tablero. Para mí fue la parte más difícil de este proyecto porque no tengo cualquier soldador de punta pequeña y una toma de conexión (5 x 2) lcd conmigo.
Después de interfaz del lcd con el atmega32 a través del SPI. Luego inicializa el lcd y muestra algunos patrones de color y confirmado la pantalla LCD está trabajando.
Ahora mi siguiente paso es mostrar una imagen fija en la pantalla LCD. Utilicé la biblioteca de imágenes de python para extraer información de píxeles de cualquier archivo de imagen (jpeg, png, etc.) y transmiten a avr via uart con pyserial y visualiza la imagen correctamente en la pantalla con profundidad de color de 16 bits.
Después de usé una tarjeta SD para almacenar la información (132 x 132 * 2) pixel se puede convertir bytes/imagen. Entonces había conectado a la tarjeta SD con el mismo SPI del atmega32 y mostrar la imagen almacenada. He utilizado el sistema de archivos FAT16. La parte de tarjeta sd no es un problema para mí porque ya he hecho más proyectos en tarjetas SD/MMC y copié mi código anterior para.
Así que después de mostrar la imagen fija, pensé en hacer una presentación de diapositivas en la pantalla lcd. Por eso escribí un script en python para convertir todas las imágenes en una carpeta (en mi pc) 132 x 132 x 2 archivos byte que no es más que la información de píxeles sin comprimir como archivos nuevos. Luego copian todos esos archivos se puede convertir en tarjeta SD (file.lcd) y aparece como una demostración de diapositiva de imagen con la diferencia de tiempo de 1 segundo entre cada imagen.
Ya que lo hice con éxito la presentación de la imagen, entonces de repente la idea de hacer un reproductor de vídeo vino a mi mente. Porque el video es nada más que una presentación de diapositivas en la velocidad de fotogramas alta.
Desde aquí comienza este proyecto.
Entonces empecé a buscar en google, cómo convertir un video a Marcos todavía. Llegué a saber sobre el programa ffmpeg. Estoy utilizando linux siempre. He descargado el ffmpeg y convertir un vídeo de muestra en marcos a 15 fotogramas/segundo y 132 x 65 resolución. Luego usé mi script en python para convertir cada imágenes fijas a la información de píxeles a 16 bits/pixel. Aquí en vez de hacer pequeños archivos pequeños, sólo recopilé toda la información de la imagen de fotogramas adyacentes en un solo archivo y el nombre como my_video.lcd. Luego copiar ese archivo a la tarjeta de memoria y modifica el programa avr para mostrar en la pantalla LCD. Se accede al sistema de archivos FAT16 y luego buscar archivos *.lcd si encuentra, devuelve la puesta en marcha cluster dirección de ese archivo y luego transmitir ese racimo a la pantalla de LCD muy rápido. AHORA se juega VIDEO (sin audio)!!!!!! .... Casi la mitad del proyecto se termina...
Siguiente medio: (mezcla de audio)
Jugué 15 fps 16 bits/pixel en la pantalla lcd. Ahora viene el siguiente dolor de cabeza. El vídeo debe tener audio. :-(.... Entonces empecé a pensar cómo incluir el audio. Utilicé ffmpeg(in pc) para extraer audio de archivo de vídeo a wav mono de 8 bits. Wav es audio sin comprimir, es fácil de manejar con un microcontrolador con hardware PWM. Entonces modifiqué mi script en python. Acabo de abrir el archivo wav y descarta los primeros 44 bytes (encabezado wav) y entonces después de eso, leer la muestra de audio byte por byte inyectado entre la información de vídeo después de algunos cálculos (ver los cálculos a continuación) relacionadas con la velocidad de bits de audio y vídeo para decidir la proporción de mezcla.
Para la perfecta sincronización de audio video, implementó un código de corrección de error en el convertidor, que controla el error de sincronización y mezclar los bytes de audio y vídeo cuando el error alcanza el valor umbral mínimo (error de muestreo de audio de 1 byte), escribe una maniquí muestra de audio en lugar de real audio muestra y evita así la acumulación de error así perfecta sincronización de vídeo de audio se logra por horas continua de reproducción de vídeo...
Ahora he diseñado mi propio formato de vídeo ("video_with_audio.vin" para mi jugador;-). Ahora en avr, necesito extraer el audio y video y necesita enviar el audio a un audio buffer circular que se envíe a PWM usando una interrupción de timer y vídeo directamente al LCD. Si cualquier desajuste de byte único ocurrido entre el byte de vídeo y audio, cada cosa se consigue se derrumbó. Entonces modifiqué el código avr como arriba y finalmente jugué video con audio! :-)
Código fuente y más detalles, visita el enlace de mi blog:
http://blog.Vinu.co.in/2012/06/AVR-Video-Player-on-Nokia-color-LCD.html