Autor Tema: Mi mejora en los scripts de vídeo  (Leído 2856 veces)

Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Mi mejora en los scripts de vídeo
« on: 13 jun 2013, 18:53 pm »
Vista la mala calidad de los últimos vídeos subidos he decidido revisar el proceso para preparar los vídeos MTS que me da la la cámara de vídeo y poder editarlos posteriormente (openshot no pilla bien los MTS).

El primer paso es convertir los vídeos a AVI. Para eso seguí el manual de Tat: convertir vídeos .MTS a .AVI en GNU/linux. Con este tutorial llegamos a un script como este:
Código: [Seleccionar]
#!/bin/bash

for a in `ls *.MTS` ; do ffmpeg -i $a -vcodec libxvid -b 12000k -acodec libmp3lame -ac 2 -ab 256k -deinterlace -s 1440×1080 `echo “$a” | cut -d’.’ -f1`.avi ; done

exit
Lo malo es que este script no deja el vídeo fino y da fallos en openshot, por lo que lo tengo que pasar a .MP4 usando la siguiente línea:
Código: [Seleccionar]
ffmpeg -i <input file> -sameq <output file>Con eso ya tengo el vídeo listo para editarlo…. Casi, el otro día la opción -deinterlace comenzó a fallar y me dejaba el vídeo con unas barras muy feas. Investigué y vi que ffmpeg tiene otra opción para “deinterlazar” :
Código: [Seleccionar]
-vf “yadif=0:-1:0″
Al mismo tiempo quería realizar todo en un comando, por lo que con la ayuda de Redy (vale, casi todo él), llegamos a este script:
Código: [Seleccionar]
#! /bin/bash

for a in *.MTS ;

do nombre=${a%.*}

ffmpeg -i ${nombre}.MTS -vcodec libxvid -b 12000k -acodec libmp3lame -ac 2 -ab 256k -vf “yadif=0:-1:0″ -s 1920×1080 ${nombre}.avi

ffmpeg -i ${nombre}.avi -sameq ${nombre}.mp4

rm -f ${nombre}.avi

done

Con esto tenemos los vídeos pasados a .MP4 y ya podemos trabajar con ellos. Pero en algunos casos sacamos vídeos con algo de movimiento, y es posible eliminarlo. El comando ffmpeg tiene un filtro llamado deshake pero, incluso instalando la última versión, tal y como indica el manual de Tat, no he conseguido hacerlo funcionar. Para conseguir esto he tenido que usar el comando transcode. Basándome en el script de Redy, he escrito este otro:
Código: [Seleccionar]
#! /bin/bash
for a in *.mp4 ;
do nombre=${a%.*}
transcode -J stabilize -i ${nombre}.mp4
transcode -J transform -i ${nombre}.mp4 -y xvid4 -o ${nombre}_stable.mp4
rm -f ${nombre}.mp4.trf
done

Tenemos tres líneas. En la primera se genera un fichero con las correcciones a aplicar, en la segunda se recodifica el vídeo en base a este fichero y en la tercera borramos el fichero de corrección creado.

Lo primero que hay que tener claro es que al reducir el movimiento del vídeo perderemos calidad en el mismo. Por otro lado, la codificación usada comprime el vídeo (sigo investigando cómo mantener la calidad original). Si sumamos los dos efectos el resultado es que el vídeo se estabiliza pero pierde calidad. Mientras sigo buscando una solución hay que pensar si compensa o no sacrificar esa calidad por la estabilización.

 

Por otro lado es posible que transcode nos de algún problema de codecs si loo usamos tal y como viene. En ese caso deberemos descargarnos unos ficheros extras desde esta web.

Cita
Version 0.96, binary files (linux 32bit), for transcode with 1.1.X (thanks to Caleb for compilation)

Version 0.96, binary files (linux 64bit x86_64), for transcode with 1.1.X

Seleccionaremos la que mejor nos venga según nuestro procesador (o una versión posterior si tenemos una nueva). Al abrirlo encontraremos varios ficheros *.so, los cuales copiaremos al direcotrio: /usr/lib/transcode/ (viene con un ejecutable install.sh que no siempre funciona).
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Re: Mi mejora en los scripts de vídeo
« Respuesta #1 on: 14 jun 2013, 16:29 pm »
Segunda versión de estabilizado, ahora no se pierde calidad, pero se genera un fichero intermedio 100 veces mayor que el vídeo original (luego se borra)

Código: [Seleccionar]
#! /bin/bash
for a in *.mp4 ;
  do  nombre=${a%.*}
        transcode -J stabilize -i ${nombre}.mp4
        transcode -J transform -i ${nombre}.mp4 -y raw -o  ${nombre}_raw.mp4
ffmpeg -i ${nombre}_raw.mp4 -sameq ${nombre}_stable.mp4
       rm -f ${nombre}_raw.mp4
       rm -f ${nombre}.mp4.trf
  done

Sigo depurando  :nota:
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

Manolo

  • Bimilenari@
  • **
  • Mensajes: 2876
  • No dejes que la realidad te arruine una buena foto
    • Mi galeria en Ipernity
Re: Mi mejora en los scripts de vídeo
« Respuesta #2 on: 14 jun 2013, 16:44 pm »
Sólo una curiosidad: ¿por qué ffmpeg y no mencoder?

Sin que venga quizá muy a cuento, os voy a "copipegar" unas recetillas que tengo yo para vídeo, pensadas más bien para cambiar la pista de audio:

Código: [Seleccionar]

* Extraer audio del vídeo:

 mplayer -vo null -vc dump -ao pcm:file="nombreaudio.wav" "nombrevideo.avi"
       
* Extraer sólo vídeo

 mencoder -ovc copy -idx -nosound "video.avi" -o "solo-video.avi"
       
* Incorporar audio a vídeo

 mencoder "solo-video.avi" -o "video-final.avi" -ovc copy -oac copy -audiofile "audio.mp3"
 
 * Unir dos vídeos en uno
 
  mencoder -oac copy -ovc copy -forceidx foo1.avi foo2.avi -o foo.avi


El audio que se extrae del vídeo se abre con audacity; en ese mismo proyecto, se abre una nueva pista con el audio externo. Sincronizas éste último con el del vídeo y lo recortas para que queden exactamente iguales. Con el audio externo sincronizado lo incorporas al vídeo siguiendo estas recetillas.
Ubuntu & Debian, Nikon D40X Nikon D5100
ufraw, photivo, imagemagick, gimp, pantools
Artículos y fotos bajo licencia CC-BY

Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Re: Mi mejora en los scripts de vídeo
« Respuesta #3 on: 14 jun 2013, 19:52 pm »
¿Sabes que si abres un vídeo con audacity te extrae el audio? Yo para montarlo uso openshot
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Mi mejora en los scripts de vídeo
« Respuesta #4 on: 16 jun 2013, 08:45 am »
Me lo apunto por si lo necesito en el futuro... para que me lo recuerdes cuando te llame.  :-b
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]