[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: conversión de formatos de video



Ipsissima verba trujo:
> ID_VIDEO_FPS=14,987
> ¿es muy exotico?

Simón, bastante.  ¿Así sale, con una coma?
¿Serán quince o quince mil?

> >  http://zebra.fh-weingarten.de/~maxi/html/mplayer-users/2002-07/msg01161.html
> me da no disponible

Curioso.  Acabo de probar el URI, y desde aquí baja bien.

> Mi idea es crear unb scriptpara pasarlo cadavez que descarge fotos
> de la camara (que captura pequeñas secuencias de video) y me las
> convierta automaticamente antes de grabar el cd, por heso no he
> preguntado por "factorias de cine" como lvs o cinerela

Ah, bien.  Una disculpa, en todo caso, por si sentiste que te traté
con condescendencia.  A veces tiendo a asumir la microsoftización por
defecto en la gente...  :-(

Para generar MPEG apropiado para VCD PAL, el proceso del video es mas
o menos así:

 i.   Se extrae del video original un stream de video en formato
      YUV4MPEG
 ii.  Se ajusta el tamaño de los cuadros del stream al tamaño adecuado
      para VCD PAL (352x288), si es necesario
 iii. Se ajusta el framerate a 25 fps, si es necesario
 iv.  Se comprime como video MPEG-1 usando parámetros para VCD
      (detalles abajo, y en el manual de mpeg2enc)

El proceso del audio es:

 v.   Se extrae del MOV un stream PCM (WAV)
 vi.  Se ajusta el samplerate a 44100 samples/s, si es necesario
 vii. Se comprime como audio MPEG-1 layer 2 (MP2)

Teniendo el video y audio comprimidos, se combinan (se "multiplexan")
en lo que se llama un "program/system stream".  Este stream es el
video VCD final, que le puedes dar de comer a vcdimager para que él se
lo de a cdrdao, o lo que sea.

Para SVCD, el proceso es similar, excepto porque el tamaño de los
cuadros es distinto (480x576) y la compresión del video es MPEG-2.

Siguen ejemplos, muy parecidos a los de hace unos meses.  Los streams
YUV4MPEG y PCM son video/audio *sin* compresión, y pueden crecer
muchísimo.  Por eso tanto baile con FIFOs: para no tener que
almacenarlos en el disco.

------------------------------------------------------------------------
cd /tmp
mkfifo stream.yuv
mkfifo audiodump.wav

# Proceso del video.  Esto asume que no hay necesidad de mover el
# "aspect ratio", y el video original está a quince fps.  Quizá
# deberías usar -s 15000:1001 o incluso 14987:1000, no sé.  No creo
# que importe, a menos que el video sea muy largo.

cat stream.yuv | yuvscaler -n p -M BICUBIC -O VCD | \
 yuvfps -s 15:1 -r 25:1 | \
 mpeg2enc -a 2 -n p -F 3 -4 2 -2 1 -B 250 -s -f 1 -o out.m1v &

# Proceso del audio.  Si no tienes toolame, puedes usar mp2enc,
# incluido con mjpegtools.

cat audiodump.wav | sox -t wav - -t wav -r 44100 - resample -ql |\
 toolame -s 44.1 -b 224 -m s -p 2 /dev/stdin out.mp2 &

# En este punto, las dos pipelines anteriores están bloqueadas
# esperando datos en los FIFOs.  Esto arranca la conversion:

mplayer -vo yuv4mpeg -ao pcm fichero.mov

# Finalmente, cuando la conversion termina, combinas el video con
# el audio.  Usa -O n si el audio y el video salen defasados.

mplex -f 1 -o out.mpg out.m1v out.mp2

# Si todo marcha bien, todo ésto ya es basura:

rm stream.yuv audiodump.wav out.m1v out.mp2

------------------------------------------------------------------------

Eso fue casi un script.  Falta solo comprobar errores y parametrizar
cosas.

Nota que estoy usando parámetros para calidad alta (léase, eso va a
correr lento).  Cambia la cuantización de mpeg2enc y el modo de
resample de sox para agilizar las cosas.

Para SVCD, cambia los parámetros de yuvscaler y mpeg2enc como indican
los manuales (-O SVCD / -f 4).

Si el framerate te da problemas (si no eran quince fps, después de
todo), puedes intentar generar un AVI temporal con mencoder...

 mencoder -ovc copy -nosound -ofps 25 -o temp.avi

...y usarlo como origen de video para mplayer, brincándote el paso por
yuvfps en el pipeline.  El audio lo puedes tomar del MOV original.
Nota que "-ovc copy" a veces mete ruido.  Si eso te pasa, entonces, si
tienes mucho espacio en disco, usa "-ovc rawrgb".  De lo contrario,
"-ovc lavc -lavcopts vcodec=mjpeg:vhq:vqscale=2" (esto último causa
una recompresión que degradará la calidad de tu video; trata de
evitarlo).

Espero que algo de esto te sirva.

 -CR



Reply to: