One Year, One Second Every Day

Hi, my name is Jaime G. Wong and I'm from Ica, Peru. On August 2013 I started my "One Year, One Second Every Day" project, a video compiling one second a day for a year. The project is now complete and the video is compiled and finished.

I'm not the first one to do this. I was inspired by César Kuriyama's video, which I also linked on my blog. Then I decided I wanted to do the same, but told no one except my wife, who helped and supported me a lot thru all the year. I was afraid to fail. Also, I wanted to give everyone a huge surprise if I succeeded.

This project is a big victory and a huge personal motivator. Thru this video one can see the growth of my daughter and several events which, as time goes by, will become even more valuable. Michelle has little hair and can't even crawl. To see her grow from there is amazing. Time really flies by. There is a lot of details in every second that I could write abundantly. But time is short. :)

Hola, mi nombre es Jaime G. Wong y soy de Ica, Perú. En Agosto del 2013 empecé mi proyecto "One Year, One Second Every Day," un video recopilando un segundo al día durante un año. El proyecto está ahora completo y el video ha sido compilado y terminado.

No soy el primero en hacer esto. Fui inspirado por el video de César Kuriyama, el cual también enlazé en mi blog. Luego decidí que quería hacer lo mismo, pero no se lo dije a nadie excepto mi esposa, quien me ayudó y apoyó mucho durante todo el año. Tenía miedo de fallar. Al mismo tiempo, quería darle a todos una gran sopresa si tenía éxito.

Este proyecto es una gran victoria y una enorme motivación personal. A través de este video se puede ver el crecimiento de mi hija y diversos eventos que, con el transcurso del tiempo, serán vez más valiosos. Michelle tiene poco cabello y no puede ni gatear. Verla crecer a partir de allí es asombroso. Realmente el tiempo se pasa volando. Hay muchos detalles en cada segundo de los que podría escribir en abundancia. Pero el tiempo es corto. :)

Technical stuff

I used a Nokia Lumia 520 smartphone to record all the videos. Onedrive was valuable as a backup and when I ran out of space.

The video was compiled in Linux using mencoder, ffmpeg and little scripts I wrote in Ruby. I didn't use a video editor because all ran slow on my machine. Also because I'm a control freak who wants to do it all by himself.

Cosas técnicas

Usé un smartphone Nokia Lumia 520 para grabar todos los videos. Onedrive fue valioso como backup y cuando se me acababa el espacio.

El video fue armado en Linux usando mencoder, ffmpeg y pequeños scripts que escribí en Ruby. No usé un editor de video porque todos corrían lentos en mi máquina. Eso y porque soy un control freak que todo lo quiere hacer por sí mismo.

Music

All music tracks are mine, I composed them many years ago using Impulse Tracker.

Música

Todas las pistas musicales son mías que compuse hace muchos años atrás usando Impulse Tracker.

Lessons learned

Graduality is powerful.

I'm lately fascinated with the idea of how much you can do with a little of time every day. I put an app on my smartphone's home screen to show me how many days have elapsed. It was motivating in the beginning to celebrate the 7, 30 and 90 days. Then I changed the counter to show me the countdown instead. Seeing that number turn from 275 days to 1 is incredible.

Graduality's power has also been true when compiling the video. Due to work and being a new Dad I don't have much time left, so I worked on the video 30 minutes or so a day. My computer is not fast, so whenever I left my home office, I put the machine to batch process the videos, only to discover I made a mistake and had to repeat the process the next day.

Something dividing inside me is that I didn't record certain important events, like my daughter's first birthday or Christmas. And it's because I was living those moments, without remembering to be recording my second of video. On one hand I'm happy I haven't turned into one of the represented on I Forgot my Phone, but on the other side, at the end of the year, I don't have a video record of that day. I think in part that having it recorded for posterity in this project would have been highly valuable, and in part I think I'm happy and satisfied to have fully lived that day celebrating with my family, instead of observing everything thru an screen, capturing something for the future, present and absent at the same time.

Yes. While writing this I conclude I'm satisfied.

Lecciones aprendidas

La gradualidad es poderosa.

Ultimamente estoy fascinado con la idea de cuánto se puede lograr con un poquito de tiempo al día. Puse una app en la pantalla de inicio de mi smartphone para mostrarme cuántos días habían transcurrido. Al principio era motivador celebrar los 7, 30 y 90 días. Luego cambién el contador para mostrarme una cuenta regresiva. Ver ese número transformarse de 275 días a 1 es increíble.

El poder de la gradualidad también ha sido cierto al compilar este video. Debido a mi empleo y ser un nuevo Papá no tengo mucho tiempo de sobra, así que trabajé en el video aproximadamente 30 minutos cada día. Mi computadora no es rápida. Cada vez que dejaba mi oficina en casa ponía la máquina a procesar en lotes los videos, sólo para descubrir que cometí un error y debía repetir el proceso el día siguiente.

Algo divisivo en mí es que no grabé un video de ciertos eventos importantes, como el primer cumpleaños de mi hija o Navidad. Y es que estuve viviendo aquellos momentos, sin recordar que debería grabar mi segundo de video. Por un lado estoy contento de no haberme convertido en uno de los representados en I Forgot my Phone, pero por otro lado, al final del año, no tengo un video recordatorio de aquel día. Pienso en parte que de tenerlo grabado para la posteridad en este proyecto hubiera sido valiosísimo, y en parte pienso que estoy contento y satisfecho con haber vivido de lleno ese día celebrando con mi familia, en lugar de observarlo todo a través de una pantalla, capturando algo para el futuro, presente y al mismo tiempo ausente.

Sí. Concluyo, al escribir esto, que estoy satisfecho.

Advice

If you are interested on doing something like this, I strongly recommend you to do so. Here's some advice:
  • Use alarms. One would think that after so many months doing this it would be impossible to forget, but it's not like that. In more than one occasion my alarm reminded me to record my video. For my routine and time, my alarm was setup at 5:30 PM.

  • Record a safety video at the beginning of the day The best way not to fail in this project is to record a video as early as possible. There's always the chance to record something more interesting that happens thru the day, but at least your homework is done.

  • Not every day is a work of art. Accept it. Tomorrow you'll do better. On the other side, consider that even the most boring video can be interesting twenty years from now. That chocolate wrapper that appears on your video won't exist in the future. That friend doing nothing can be gone tomorrow. There's beauty in the ordinary. Celebrate it.

  • If you fail, keep going. As you may have already seen, there are black days because I didn't record a video. Instead of giving up and feeling sorry, I decided to keep going on with the project. We're all humans. We forget. We get sick. On a wedding day I forgot my cellphone at home. On the last days of finishing the project, even with all the excitement, I forgot to record one day. I thought I already did it. Don't get frustrated, just keep going.

  • Reduce friction. I call "friction" to any step that slows you down or makes your task difficult. In this case, recording a video. I could have made a higher quality video using my DSLR camera, but I wouldn't have taken it everywhere. My cellphone, on the other hand, is always with me, always ready in my pocket. I didn't worry on how to build the videos. Just record and upload later to Onedrive. The idea is to simplify so you can do your task as easy as possible without interruptions. The more movable parts, the less probable success is.

  • Record more than one second. If you have an iPhone, the 1 Second Everyday app by César Kuriyama makes all the ugly work for you (AND IT'S UGLY, SERIOUSLY). In my case, I have a Windows Phone without any similar app. What I did was record more than one second, around two and later when editing pick the best one.

Consejos

Si estás interesado en intentar algo igual, te recomiendo altamente que lo hagas. Aquí algunos consejos:
  • Utiliza alarmas. Uno pensaría que luego de varios meses de hacer esto todos los días ya no sería posible olvidarse, pero no es así. En más de una ocasión mi alarma me ha hecho recordar que debo grabar mi video. Por mi rutina y tiempo, mi alarma estaba puesta a las 5:30 PM.

  • Graba un video de seguridad al inicio del día La mejor manera de no fallar en este proyecto es grabar un video lo más temprano posible. Siempre hay la posibilidad de grabar otra cosa interesante que suceda en el transcurso del día, pero al menos ya tienes la tarea hecha.

  • No todos los días serán obras de arte. Acéptalo. Mañana podrás hacerlo mejor. Por otro lado, considera que aún el video más aburrido puede ser muy interesante de aquí a veinte años. La envoltura de chocolate que se ve en tu video no existirá en el futuro. Ese amigo haciendo nada podría irse mañana. Hay belleza en lo ordinario. Celébralo.

  • Si fallas, sigue adelante. Como habrán visto, hay días que salen en negro porque esos días no grabé un video. En lugar de rendirme y lamentarme, decidí seguir adelante con el proyecto. Somos humanos. Nos olvidamos. Nos enfermamos. En un día de boda olvidé mi celular en casa. En los últimos días para terminar el proyecto, aún con toda la emoción, olvidé grabar. Pensé que lo había hecho. No te frustres, sólo sigue adelante.

  • Reduce la fricción. Llamo "fricción" a cualquier paso que te haga lento o te dificulte a hacer tu tarea. En este caso, grabar un video. Podría haber hecho este proyecto grabando en alta calidad con mi cámara DSLR, pero no la hubiera llevado conmigo a todos lados. Mi celular, en cambio, está siempre conmigo, siempre lista en mi celular. No me preocupaba acerca de cómo armar los videos. Sólo era grabar y posteriormente subir el video a Onedrive. La idea es simplificarlo todo de tal modo que puedas realizar tu tarea lo más fácil y sin interrupciones posible. Mientras más partes movibles, menos probable se hace el éxito.

  • Graba más de un segundo. Si tienes un iPhone, la app 1 Second Everyday de César Kuriyama, te hace todo el trabajo feo (Y ES FEO, EN SERIO). En mi caso, tengo un Windows Phone sin ninguna app similar. Lo que hice fue grabar más de un segundo cada día, casi dos para luego al editar elegir el segundo mejor representativo.

Now what?

Now that I've finished this project, I feel able to do bigger things. I haven't continued recording more clips for a second video, I want to try something different. I'll do A Photo a Day project and, following the same method, I'm programming the web little by little.

There were days where I recorded several videos. Choosing just one and then one second is an arduous editing work. On the other side, I have very precious videos of my daughter that I'll treasure forever. I'll join them all without trimming in another video. But that will have to wait. :)

¿Y ahora qué?

Ahora que he terminado este proyecto, me siento capaz de hacer cosas más grandes. No he continuado grabando más clips para un segundo video, quiero ahora intentar otra cosa distinta. Voy a hacer un proyecto A Photo a Day y, siguiendo con el mismo método, estoy programando la web poco a poco.

Hubieron días en los que grabé varios videos. Elegir sólo uno de ellos y tan sólo un segundo, es una labor ardua de edición. Por otro lado, tengo videos muy valiosos de mi hija que voy a atesorar siempre. Voy a juntarlos todos sin recortar en otro video. Pero eso tendrá que esperar. :)

Video edit and compiling

To build the video I had to research a lot, but a lot of things. I knew it would take very long to compile the video but it was much further than I thought. This, again, because I only dedicated an average of 30 minutes a day to it. You don't know how much frustration this has costed me. I share this information as help. You still need to read on your own anyway to understand how mencoder and ffmpeg work, mostly if you're going to use a differente codec.
What I mean to say is don't use this as copy-and-paste, but as a guide.

Keyframes
As I mentioned previously, I recorded more than one second with the idea of trimming the definitive second later. Nonetheless, for trimming the video with precision you need the video to have enough keyframes, otherwise you can't seek to an specific position nor cut to one exact second. To convert them do the following (I'm using the H.264 codec):

mencoder SOURCE_FILE -idx -nosound -fps FRAMES_PER_SECOND -ofps 24 -ovc x264 -x264encopts keyint=10:bitrate=10500 -o TARGET_FILE

You need to know how many frames per second (FPS) your video has. It was a surprise to discover all my videos had different framerates, so I had to extract that data off each one and convert them with my script. I chose 24 FPS as the final framerate, for a cinematic effect. :)

To find the framerate, use ffmpeg:

ffmpeg -i FILE

Trimming
To trim the video to 1 second using mencoder:

mencoder -ss START_TIME -endpos 1 -of lavf -lavfopts format=mp4 -ovc copy -nosound SOURCE_FILE -o TARGET_FILE

START_TIME is the time in seconds from where to trim. I also removed the audio here (-nosound) because my final goal was to put a background music to the whole video.

Since I didn't use a video editor to trim the videos what I made was a Ruby script that, using the console, allowed me to go forward or rewind 0.5 seconds, 0.1 seconds or any number of seconds I manually entered. Then it showed me the video trimmed to one second using mplayer. Finally, it saved it. Here is the script, as I left it when it finished its utility. There's many commented lines that kept changing. Again, it's an starting point, it won't work just as it is.

Subtitles
Ok, about putting the date to each video. My choice was a semitransparent white font, with a black shadow to be readable, located on the lower left corner.

This command is broken in several lines. Join the lines at the + signs:

ffmpeg -i SOURCE_FILE -vcodec libx264 -f mp4 -vf +
drawtext="fontfile=FONT_FILE:text='TEXT':+
fontcolor=white@0.5:fontsize=36:x=20:y=main_h-66:+
shadowx=2:shadowy=2:shadowcolor=black@0.5" TARGET_FILE


Where FONT_FILE is a Truetype font.

Also, be aware this command is for a video frame size of 1280x720.

Intro and Ending texts
For the opening and closing texts, I made an image for each as a PNG. I copied them 24 times multiplied by the amount of seconds I calculated they needed to appear (24 frames per second). Then, to render them into a video I did:

mencoder mf://*png -o TARGET_FILE -ofps 24 -ovc x264 -x264encopts keyint=10:bitrate=10500 -of lavf -lavfopts format=mp4

But beware, all the other videos were subtitled using ffmpeg, which does a different encoding than mencoder. It's a requirement that all videos have the same encoding, FPS, bitrate, etc. to join them, so an extra additional step was to reencode the opening and closing videos with ffmpeg:

ffmpeg -i SOURCE_FILE -vcodec libx264 -f mp4 TARGET_FILE

See how complicated this is? That's how days went by. :)

Final build of the video
What I had now were a lot of videos edited to one second, subtitled with the date. In my specific case I had three background songs, so I first joined the videos (including the opening and ending text clips) in three parts, one for each song.

mencoder -noskip -o TARGET_FILE -oac copy -audiofile SONG -ovc copy VIDEOS

Where SONG is an MP3 file.

Finally, I joined all three parts:

mencoder -noskip -o final.avi -oac copy -ovc copy part1-a.avi part2-a.avi part3-a.avi

Edición y compilado del video

Para armar el video he tenido que averigüar un montón, pero un montón de cosas. Sabía que me tomaría bastante tiempo compilar el video pero fue mucho más de lo que pensé. Esto, otra vez, debido a que sólo le dedicaba un promedio de 30 minutos al día. No saben cuánta frustración me ha costado. Les comparto esta información como ayuda. De todos modos tienes que leer un poco por tu parte para entender bien cómo funciona mencoder y ffmpeg, sobre todo si vas a usar un codec distinto.
Lo que quiero decir es que no uses esto copiando y pegando, sino como guía.

Keyframes
Como comenté antes, yo grababa más de un segundo con la idea de recortar el segundo definitivo después. Sin embargo, para poder recortar el video con precisión se necesita que el video tenga suficientes keyframes, de lo contrario no vas a poder ubicar cierta posición específica ni mucho menos recortarlo a un segundo exacto. Para convertirlos haz lo siguiente (estoy usando el codec H.264):

mencoder FICHERO_ORIGEN -idx -nosound -fps FRAMES_POR_SEGUNDO -ofps 24 -ovc x264 -x264encopts keyint=10:bitrate=10500 -o FICHERO_DESTINO

Necesitas saber cuántos frames por segundo (FPS) tiene tu video. Fue una sorpresa descubrir que todos mis videos tenían framerates distintos, así que tuve que extraer ese dato de cada uno y convertirlos con mi script. Elegí 24 FPS como mi framerate final, para un efecto cinemático. :)

Para averigüar el framerate, usa ffmpeg:

ffmpeg -i FICHERO

Recorte
Para recortar el video a 1 segundo usando mencoder:

mencoder -ss TIEMPO_DE_INICIO -endpos 1 -of lavf -lavfopts format=mp4 -ovc copy -nosound FICHERO_ORIGEN -o FICHERO_DESTINO

TIEMPO_DE_INICIO es el tiempo en segundos desde donde quieres que empiece el recorte. Aquí también le quité el audio al video (-nosound) porque mi meta final era ponerle música de fondo a todo el video.

Ya que no usé un editor de video para recortar los videos lo que hice fue un script de Ruby que, utilizando la consola, me permitía avanzar o retroceder 0.5 segundos, 0.1 segundos o tantos segundos le indicase a mano. Luego me mostraba el video recortado a un segundo con mplayer. Finalmente, lo grababa. El script está aquí, tal cual ha quedado luego de realizar su labor. Hay varias cosas comentadas que fueron cambiando. Otra vez, es un punto de partida, no te va a funcionar tal cual está.

Subtítulos
Ok, en cuanto a ponerle la fecha a cada video. Mi elección fue una fuente de color blanco medio transparente, con sombra negra para que se lea bien, ubicada en la esquina inferior izquierda.

Este comando está partido en varias líneas. Une las líneas en los signos +:

ffmpeg -i FICHERO_ORIGEN -vcodec libx264 -f mp4 -vf +
drawtext="fontfile=FICHERO_DE_FUENTE:text='TEXTO':+
fontcolor=white@0.5:fontsize=36:x=20:y=main_h-66:+
shadowx=2:shadowy=2:shadowcolor=black@0.5" FICHERO_DESTINO


FICHERO_DE_FUENTE es la fuente (font) Truetype.

Ojo, este comando es para un cuadro de video de tamaño 1280x720.

Textos de Introducción y Fin
Para los textos de apertura y cierre, hice para cada uno una imagen en PNG con los textos. Lo copié 24 veces multiplicado por la cantidad de segundos que calculé debían aparecer (24 frames por segundo). Luego, para armarlos en un video hice:

mencoder mf://*png -o FICHERO_DESTINO -ofps 24 -ovc x264 -x264encopts keyint=10:bitrate=10500 -of lavf -lavfopts format=mp4

Pero ojo, los demás videos fueron subtitulados usando ffmpeg, el cual hace un encoding distinto al de mencoder. Es necesario que todos los videos tengan el mismo encoding, FPS, bitrate, etc. para poder unirlos, así que un paso extra adicional fue volver a hacerle encoding a los videos de apertura y cierre con ffmpeg:

ffmpeg -i FICHERO_ORIGEN -vcodec libx264 -f mp4 FICHERO_DESTINO

¿Ven lo complicado que es? Así se pasaban los días. :)

Armado final del video
Lo que tenía entonces eran un montón de videos editados a un segundo, con la fecha subtitulada. En mi caso específico tenía tres canciones de fondo, así que primero junté los videos (incluyendo los textos de inicio y final) en tres partes, una por cada canción.

mencoder -noskip -o FICHERO_DESTINO -oac copy -audiofile MUSICA -ovc copy VIDEOS

Donde MUSICA es un fichero MP3.

Finalmente, junté las tres partes:

mencoder -noskip -o final.avi -oac copy -ovc copy part1-a.avi part2-a.avi part3-a.avi