Editar videos con mencoder y Windows.

En días pasados publiqué una entrada sobre ferromodelismo y anexé un video, que en realidad fueron diferentes videos convertidos a uno solo. Dada la inexperiencia de grabar videos con el celular, cometí algunos errores como, no girar el celular y el video no quedó como yo quería.

Yo sé que usando software libre podía solucionar estos inconvenientes y realmente no quería invertir tanto tiempo investigando los comandos y opciones además de que existen infinidad de páginas web que explican como hacerlo con linux, es problable que la mayoría de las personas usen alguna versión de Windows, por lo que me enfoqué a buscar opciones para dicho sistema operativo.

Muchas referencias existen para usar "ffmpeg", pero me llamó la atención que podría usar "mencoder", haciendo una búsqueda de como editar/rotar los videos me encontré el siguiente artículo:


De allí tomé el comando para rotarlo:

"mencoder -vf rotate=1 -o OUTPUT.AVI -oac copy -ovc lavc INPUT.AVI
The -vf is for "Video Filter" and you can chain them, like -vf rotate=1,flip,scale=640:480 if you like. The -oac and -ovc are the audio and video outputs. In this case, I "copy" the audio over, and use the "libavcodecs" for the output."

Aunque no dí con opciones de como evitar editar el audio, sí me encontre con el siguiente problema: "libavcodec". El codec no venía con el paquete descargado de mencoder para windows, pero les digo que se puede descargar de aquí: 



Ya resuelta esa parte, ahora me doy cuenta de que el nuevo archivo se pixeleaba demasiado, una búsqueda nueva y encontré la solución:



PASAR DE MP4 A AVI
mencoder fichero.mp4 -of avi -oac lavc -ovc lavc -lavcopts codec=ac3:abitrate=192:vcodec=mpeg4:v4mv:keyint=100:vbitrate=2000 -o fichero.avi

PASAR DE MP4 A MPEG
mencoder fichero.mp4 -of mpeg -oac lavc -ovc lavc -lavcopts acodec=ac3:abitrate=192:vcodec=mpeg2video:vhq:keyint=32:vbitrate=2000 -ofps 25 -o fichero.mpeg


La clave fue usar "vbirate" y adios video pixeleado, un problema más resuelto. Ahora, ¿cómo hacer para que todos los videos fueran uno solo en lugar de tener doce o catorce videos?

Pues he aquí como:

mencoder video1 video2 video10 videoN -oac codecaudio -ovc codecvideo -of formato_de_salida -o video_resultante 


A pesar de todo lo anterior, seguía obteniendo un mensaje de error:

Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.


Buscando de nuevo, la solución apareció en: http://www.duncanelliot.com/blog/?p=94


Al comando/opciones anteriores agregamos: -force-avi-aspect 1.777


Termino por ahora con éste comando después de checar todo lo anterior:

mencoder.exe C:\Ferromodelismo\VID_20130804_131736.mp4 -of avi -vf rotate=1 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=10000  -o ouput.avi -oac pcm -force-avi-aspect 1.777


El problema ahora es.... que al finalizar de subir a youtube, el video se ve estirado horizontalmente.

Tendremos que arreglar la resolución del video, así que da click aquí para conocer más sobre resoluciones, aspectos, etc.:

https://support.google.com/youtube/answer/1722171?hl=en



las sugerencias no me han funcionado para lo del aspecto agregando al comando usado: -xy 720.

El video una vez procesado por youtube, quedó pixeleado y estirado. De nueva cuenta a buscar y lo que sí me funcionó fue lo que explican en: 

http://www.calcmaster.net/youtube/upload-high-quality-youtube-videos-4x3/

Usar:  "expand=:::::4/3,scale=960:720"

Al fin, el comando quedó así:

mencoder.exe C:\Vids\my_vid.mp4 -of avi -vf rotate=1,expand=:::::4/3,scale=960:720 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=10000  -o ouput.avi -oac pcm -force-avi-aspect 1.777

La salida del comando:

cm -force-avi-aspect 1.777
MEncoder Redxii-SVN-r36396-4.6.3 (C) 2000-2013 MPlayer Team
Compiled against FFmpeg version N-55218-g61af627
Build date: Sat Aug  3 23:33:29 EDT 2013

success: format: 0  data: 0x0 - 0x755803
libavformat version 55.13.101 (internal)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1280x720  24bpp  30.000 fps  8290.0 kbps (1012.0 kbyte/s)
[V] filefmt:44  fourcc:0x34363248  size:1280x720  fps:30.000  ftime:=0.0333
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 55.20.100 (internal)
AUDIO: 48000 Hz, 1 ch, floatle, 96.1 kbit/6.26% (ratio: 12014->192000)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [scale w=960 h=720]
Opening video filter: [expand aspect=4/3]
Expand: -1 x -1, -1 ; -1, osd: 0, aspect: 1.333333, round: 1
Opening video filter: [rotate=1]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Movie-Aspect is undefined - no prescaling applied.
Specified x offset not supported for YUV, reduced to 492.
[swscaler @ 000000000223bf80]BICUBIC scaler, from yuv420p to yuv420p using MMXEX
T
videocodec: libavcodec (960x720 fourcc=3267706d [mpg2])
[swscaler @ 000000000223bf80]Warning: data is not aligned! This can lead to a sp
eedloss
Pos:   0.0s      1f (15%)  0.00fps Trem:   0min   0mb  A-V:0.000 [0:0]
Writing header...
ODML: vprp aspect is 16:9.
Writing header...
ODML: vprp aspect is 16:9.
Pos:   6.9s    208f (100%) 61.68fps Trem:   0min   6mb  A-V:0.024 [7013:768]

Skipping frame!
Pos:   6.9s    209f (100%) 61.91fps Trem:   0min   6mb  A-V:0.023 [7013:768]

Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 16:9.

Video stream: 7046.968 kbit/s  (880870 B/s)  size: 6107372 bytes  6.933 secs  20
9 frames

Audio stream:  768.000 kbit/s  (96000 B/s)  size: 677888 bytes  7.061 secs
Assertion v>0 && v<=(1 ? 32 : 16) failed at libavutil/mem.c:204

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


Desafortunadamente no creo que pueda arreglar el último mensaje de error ya que el video procesado dura tan solo siete segundos y no es tan importante para mí.

Ahora, para mejorar el video:

mencoder.exe f2.mp4 -of avi -vf rotate=1,expand=:::::4/3,scale=1280:720  -ovc lavc
-lavcopts vcodec=mpeg2video:vbitrate=8000  -o f2.avi -oac pcm -force-avi-aspect 1.777


Para los videos que se grabaron con el celular en la posición correcta:

mencoder.exe f3.mp4 -of avi -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=8000 -o f3.avi -oac pcm


Para tener todos los videos en uno solo:

mencoder.exe -oac copy -ovc copy -idx -o Full_Video.avi  f1.avi  f2.avi  f3.avi


Debo mencionar que las "mejoras" a los videos que YouTube realizan no siempre dan los resultados esperados, por lo que es mejor dejar el video tal cual y lo han procesado ustedes.

Ojalá les sea de ayuda.
Previous
Next Post »