1 #LyX 1.1 created this file. For more info see http://www.lyx.org/
14 \paperorientation portrait
17 \paragraph_separation indent
19 \quotes_language english
23 \paperpagestyle default
29 Creación de (S)VCDs en GNU/Linux
34 Leandro Lucarella <luca@lugmen.org.ar>
40 \begin_inset LatexCommand \tableofcontents{}
59 Este proyecto nace gracias a la repetición de
64 Como tengo una placa para ver TV (capturadora), una grabadora de CDs y
65 un reproductor de DVD (VCD y SVCD) externo para mi TV de 29', me dije,
66 por que en vez de grabarlo en VHS que pierde calidad, si puedo grabarlo
67 en (S)VCD, y hasta me sale mas barato ($1 el CD a $3 el cassette? ni idea,
68 hace mucho que no compro...
70 Bueno, pase por varios problemas y fui encontrando sus soluciones y como
71 soy bueno me dije: "Vamos a escribir un documento y ahorrarle dolores de
72 cabeza a otra gente de esta maravillosa comunidad!"
82 El objetivo principal de este documento es explicar el proceso de creación
83 de (S)VCDs en GNU/Linux para poder reproducirlos en cualquier reproductor
85 También se comenta brevemente el proceso de captura de video con una placa
86 de TV compatible con V4L y el proceso de creación de menús interactivos
87 para el PBC (PlayBack Control) de los (S)VCD.
97 Hay que tener en cuenta que para capturar una hora de video con NuppelVideo
98 \begin_inset LatexCommand \ref{soft}
106 ) con buena calidad y una resolución de 352x288@25Hz (PAL) se necesita alrededor
108 La captura de video para SVCD (480x576@25Hz PAL) de una hora de duración
109 llega a los 5GB con las opciones por defecto de calidad (que es lo suficienteme
110 nte buena como para no necesitar más).
111 A esto hay que agregarle el video en formato MPEG, que ronda en los 600MB
112 por hora en calidad decente pero puede llegar a 1GB por hora en buena calidad
114 Es por esto que tener un buen pedazo del disco duro libre es fundamental.
120 \begin_inset LatexCommand \label{soft}
129 Son varios los programas que utilizo:
135 \begin_inset LatexCommand \htmlurl[VCDImager]{http://www.gnu.org/software/vcdimager/}
139 Es el encargado de hacer las imágenes de (S)VCD a través de un video MPEG
146 \begin_inset LatexCommand \htmlurl[MJPEG Tools]{http://mjpeg.sourceforge.net/}
150 Es el encargado de "encodear" el video capturado en MPEG.
151 En el momento de escribir este documento, es más que recomendado bajar
152 la versión en desarrollo del CVS (1.5.x) porque la actual (1.4.x) no soporta
153 MPEG Stills (para hacer menús interactivos).
159 \begin_inset LatexCommand \htmlurl[toolame]{http://toolame.sourceforge.net/}
163 Compresor de streams de audio MPEG I Layer 2.
169 \begin_inset LatexCommand \htmlurl[NuppelVideo]{http://mars.tuwien.ac.at/~roman/nuppelvideo/}
173 NuppelVideo Programa para capturar video con V4L.
174 En particular yo lo uso con una placa bttv (Leadtek WinView 601TV).
180 \begin_inset LatexCommand \htmlurl[exportvideo]{http://131.130.199.155/~aoe/mystuff/mpeg2_movie-avipatch/mpeg2_movie-avi.html}
184 Este programa exporta el video capturado por el NuppelVideo a un formato
185 que entiende las MJPEG Tools (YUV4MPEG).
186 Además exporta otros formatos como AVI y no se que otros más.
192 \begin_inset LatexCommand \htmlurl[cdrdao]{http://www.gnu.org/software/cdrdao/}
196 Programa para tostar CDs en modo DAO (Disk At Once), necesario para tostar
197 las imágenes generadas por el VCDImager.
202 Hay otros programas que pueden resultar útiles:
208 \begin_inset LatexCommand \htmlurl[mplayer]{http://mplayer.sourceforge.net/}
212 Para ver el video (ya sea el grabado en (S)VCD o el MPEG antes de ser tostado),
213 es sin dudas el mejor.
219 \begin_inset LatexCommand \htmlurl[xawtv]{http://bytesex.org/xawtv/}
223 Programa para ver TV.
224 También puede capturar video pero yo siempre tuve problemas.
230 \begin_inset LatexCommand \htmlurl[libmpeg3]{http://heroines.sourceforge.net/}
234 Librería y utilidades para descompresión de MPEG.
235 En particular uso el mpeg3cat para unir streams de MPEG.
236 Desde que encontré la forma de unir streams antes de comprimirlos, este
237 programa no lo uso, pero nunca esta de mas tenerlo.
243 \begin_inset LatexCommand \htmlurl[transcode]{http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/}
247 Programa que permite editar algunos aspectos de un video y convertirlo
248 a formatos como DivX, OpenDivX y DivX4.
249 He tenido mis problemas para usarlo y todavía no tengo éxito pero es sin
250 duda un programa a tener en cuenta.
256 \begin_inset LatexCommand \htmlurl[Linux Video Studio]{http://ronald.bitfreak.net/}
260 Es un estudio de captura/edición/compresión de video que pinta muy cool.
261 El problema es que todavía no soporta V4L (al menos la serie bttv, anda
262 con placas de captura de verdad, como las Miro).
269 \begin_inset LatexCommand \htmlurl[Main Actor]{http://www.mainconcept.com/}
273 Otro suite de captura/edición/compresión de video, pero este es comercial.
274 Por lo poco que lo probé me resulto lento e inestable, aunque debo reconocer
275 que mucha paciencia no le tuve.
280 Breve descripción de VCD/SVCD
285 El (Super) Video CD es un disco compacto con ciertas caraterísticas especiales
286 pero que en escencia contiene video en formato MPEG.
287 Este tipo de video es anterior al DVD pero puede ser leido practicamente
288 por cualquier lectora de DVD en el mercado, lo que nos permite capturar
289 y guardar video con calidad digital (= copiarlo cuantas veces quieras sin
290 perder calidad) a bajo costo y con la posibilidad de verlo en cualquier
291 reproductor de DVD con un televisor común y corriente.
292 En la actualidad hay 3 formatos estandarizados: Video CD 1.1 (VCD 1.1), Video
293 CD 2.0 (VCD 2.0) y Super Video CD 1.0 (SVCD 1.0).
294 \layout Subsubsection
303 Está compuesto por hasta 98 tracks de MPEG I o Audio CD.
304 Cada MPEG está compuesto por un stream de audio y uno de video.
305 Además puede tener hasta 500 Entry Points.
306 Los entry points sirven para dividir un track en Capítulos.
307 El stream de audio debe ser MPEG I Layer II, de 224Kbps, 44.1Hz y con un
308 canal estéreo o dos canales mono.
309 El stream de video debe ser MPEG I de como máximo 1152Kbps, pero de flujo
311 Para que funcione de forma correcta en reproductores externos (como un
312 DVD) es necesario que tenga GOPs (Group Of Pictures) y una cabecera de
313 secuencia por cada GOP.
314 Esto permite que los reproductores puedan avanzar y retroceder correctamente
315 y en caso de tener Capítulos, poder pasar de uno a otro sin problemas (un
316 entry point puede empezar sólo en donde empieza un sequence header de un
318 El video multiplexado debe tener tener un flujo de bits constante de 174300
319 bytes (1394400 bits) por segundo.
320 Esto permite dos resoluciones:
325 352 x 240 @ 29.97 Hz (frames por segundo) - NTSC SIF
330 352 x 240 @ 23.976 Hz (frames por segundo) - FILM SIF
331 \layout Subsubsection
340 Es igual que el VCD 1.1 pero con las siguientes mejoras:
345 Soporte de MPEG Segment Play Items (SPI) que consisten en imágenes estáticas,
346 video con o sin audio, o sólo audio.
351 Soporte de PBC (PlayBack Control) para hacer videos interactivos.
356 Soporte de listas de reproducción enlazadas.
361 Soporte de Closed Caption Posibilidad de mezclar contenidos en NTSC y PAL.
366 Al agregar soporte para PAL, se agrego la siguiente resolución:
371 352 x 288 @ 25 Hz (frames por segundo) - PAL SIF
376 Los SPI soportan los siguientes formatos:
381 Audio estéreo, joint estéreo o de doble canal de 128, 192, 224 o 384 kbps
386 Audio mono de 64, 96 o 192 kbps
391 También es posible tener audio sobre imágenes estáticas.
392 El flujo de datos del video multiplezado no debe superar los 174300 bytes
393 por segundo para que funcione en lectoras de simple velocidad.
394 \layout Subsubsection
403 Lo más importante del SVCD es que pasa de MPEG I de flujo constante -CBR-
404 a MPEG II de flujo variable -VBR- (al igual que el DVD).
405 Además se agregaron las siguientes mejoras al VCD 2.0:
410 Soporte de audio MPEG 1 de flujo variable (VBR).
411 Puede ir entre 1152 y 2500 kbps.
416 Resoluciones mayores (ver abajo).
421 Hasta 4 canales de capas de graficos o texto (OGT) para mostrar subtítulos.
426 Lista de comandos para controlar la máquina virtual de SVCD.
431 El Super Video CD soporta sólo dos resoluciones para video y para imágenes
432 estáticas (de baja resolución):
437 480 x 480 @ 29.97 Hz (frames por segundo) - NTSC 2/3 D-2
442 480 x 572 @ 25 Hz (frames por segundo) - PAL 2/3 D-2
447 Resoluciones superiores pueden llegar a usarse pero resultaria en un SVCD
448 que no se ajusta a las especificaciones.
458 De aquí en más, siempre que diga 'VCD', me voy a referir a VCD 2.0.Como he
459 dicho, este no es el objetivo principal de este documento, por lo que será
460 explicado brevemente.
465 Inicialización de la placa de TV
470 Esto es tan simple como abrir el
474 , elegir el canal, la norma, el brillo y el resto de las cosas como a uno
476 Luego de que este todo lindo, cerramos el
490 La captura de video se realiza con el comando
495 Hay algunas cosas que hay que especificar.
503 nuvrec [opciones] archivo (sin extension!)
509 Ancho [352 PAL, 352 NTSC] para VCD
513 Alto [288 PAL, 240 NTSC] para VCD
517 Tiempo (si no se especifica, captura hasta recibir un Ctrl-C)
521 Entrada de la placa (0 Televison) [0]
525 Dispositivo de video [/dev/video0]
529 Dispositivo de audio [/dev/dsp]
533 Volumen (de placa bttv)
550 Para mas opciones use '
555 Una llamada clásica para capturar video para pasar a VCD en PAL seria:
558 nuvrec -a65535 -t1 captura_vcd
563 Esto produce una salida como la siguiente:
566 copied=0 buf=51 f#=1495 ratio=7.38 lzor=1.02 effdsp=4413969
576 copied indica la cantidad de frames copiados (que no pudieron ser capturados).
577 Esta es supuestamente una de las mejores características del nuvrec, al
578 parecer permite capturar en PC lentas (al menos creo que eso dicen).
583 f# es la cantidad de frames capturados en total.
588 ratio es el nivel de compresión que se alcanzo (depende de las opciones
589 de calidad de captura, yo siempre uso las defaults) y del video que estemos
590 capturando (mucho o poco movimiento, colores, etc).
591 Esto indica que tan grande sera el archivo capturado.
596 El resto no sé bien que es, excepto el ultimo que sé que tiene que ver con
598 Esto genera un archivo '
602 ' luego de capturar video durante 1 minuto.
603 En mi caso el tamaño del archivo resulto 39MB.
604 Para capturar video para pasar a SVCD se puede hacer lo siguiente:
607 nuvrec -a65535 -t1 -W480 -H576 captura_svcd
612 Esto produce también una salida similar:
615 copied=0 buf=45 f#=1495 ratio=6.48 lzor=1.03 effdsp=4413837
624 ' de 77MB para 1 minuto de captura.
625 Si el audio de la placa de TV queda abierto se puede usar un comando del
638 Edición y reproducción del video capturado
643 Para esto están las utilidades de NuppelVideo
652 Ambas utilidades son experimentales por lo que pueden no funcinar del todo
658 no me funciona el audio.
659 Lo más interesante es el
664 Es una utilidad gráfica y se invoca de la siguiente forma:
672 Luego de esto se abren 2 ventanas, una del
676 en la que se visualiza el video y otra con controles clásicos de reproducción,
677 avance, etc, incluyendo dos botones para edición:
686 Estos sirven para marcar el inicio y fin (respectivamente) de una escena
687 que querramos sacar del video capturado por medio del botón
692 Lo que hace este programa es muy simple: crea un archivo de texto llamado
697 que contiene en cada linea el principio y el fin de cada escena a cortar,
699 El nuvedit es solo una ayuda gráfica para crear este archivo.
706 archivo svcd.nuv.edit
717 Un archivo como este quitaría de nuestro video
721 los frames que van desde el 1543 hasta el 2320 y los que van del 20223
723 Esto es muy útil para sacar publicidades (o escenas que nos son de nuestro
724 agrado) de los videos antes de comprimirlos y ahorrar tiempo.
729 es interpretado luego por las utilidades para comprimir el audio y video
730 a MPEG (o divx, pero este no es nuestro caso).
740 Esta etapa se divide en 3, pero el NuppelVideo trae un par de scripts para
741 hacerlo en un sólo paso.
742 De todas maneras, acá también vamos a ver lo pasos por separados.
743 \layout Subsubsection
747 Scripts de NuppelVideo
752 El NuppelVideo trae dos scripts para convertir un video
773 para hacer un video compatible con VCD y mucho menos con SVCD.
778 se autoproclama compatible con VCD, pero no tiene la vieja opción -s del
783 , lo que resulta en un VCD que no puede adelantar o atrasar el video en
784 cualquier reproductor ni saltar de un capítulo a otro.
785 Recomiendo que modifiquen estos scripts o que creen los suyos (en caso
786 de querer un video compatible con SVCD) para que tengan la opción -s si
787 utilizan las MJPEG Tools 1.4.x.
788 Si usan las del CVS, es probable que ni siquiquiera funcione porque cambiaron
790 \layout Subsubsection
799 Este paso se hace con
803 (parte del NuppelVideo) y
808 Acá solamente voy a dar los comandos para VCD y SVCD.
809 Para mas información sobre las opciones de toolame:
819 nuvplay -e | toolame -s44.1 -b224 -p2 -ms /dev/stdin vcd.mp2
824 -s44.1 Frecuencia de 44.1Hz
829 -b224 Bitrate de 224Kbps
839 -p2 Modelo acustico 2
844 Para tener un stream de audio compatible con VCD, deben usarse estas opciones.