]> git.llucax.com Git - personal/documentos.git/blob - VCD-HOWTO.lyx
Traducir quote de George Constanza
[personal/documentos.git] / VCD-HOWTO.lyx
1 #LyX 1.1 created this file. For more info see http://www.lyx.org/
2 \lyxformat 218
3 \textclass article
4 \language spanish
5 \inputencoding auto
6 \fontscheme helvet
7 \graphics default
8 \paperfontsize default
9 \spacing single 
10 \papersize a4paper
11 \paperpackage a4
12 \use_geometry 0
13 \use_amsmath 0
14 \paperorientation portrait
15 \secnumdepth 3
16 \tocdepth 3
17 \paragraph_separation indent
18 \defskip medskip
19 \quotes_language english
20 \quotes_times 2
21 \papercolumns 1
22 \papersides 1
23 \paperpagestyle default
24
25 \layout Title
26
27
28 \family sans 
29 Creación de (S)VCDs en GNU/Linux
30 \layout Author
31
32
33 \family sans 
34 Leandro Lucarella <luca@lugmen.org.ar>
35 \layout Standard
36
37
38 \family sans 
39
40 \begin_inset LatexCommand \tableofcontents{}
41
42 \end_inset 
43
44
45 \layout Section
46
47
48 \family sans 
49 Introducción
50 \layout Subsection
51
52
53 \family sans 
54 Historia
55 \layout Standard
56
57
58 \family sans 
59 Este proyecto nace gracias a la repetición de 
60 \emph on 
61 Cha-Cha-Cha
62 \emph default 
63  en I-Sat.
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...
69  :).
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!"
73 \layout Subsection
74
75
76 \family sans 
77 Objetivo
78 \layout Standard
79
80
81 \family sans 
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
84  de (S)VCD o DVD.
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.
88 \layout Subsection
89
90
91 \family sans 
92 Aclaración
93 \layout Standard
94
95
96 \family sans 
97 Hay que tener en cuenta que para capturar una hora de video con NuppelVideo
98 \begin_inset LatexCommand \ref{soft}
99
100 \end_inset 
101
102  (
103 \family typewriter 
104 nuvrec
105 \family sans 
106 ) con buena calidad y una resolución de 352x288@25Hz (PAL) se necesita alrededor
107  de entre 2GB - 3GB.
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
113  de SVCD.
114  Es por esto que tener un buen pedazo del disco duro libre es fundamental.
115 \layout Subsection
116
117
118 \family sans 
119
120 \begin_inset LatexCommand \label{soft}
121
122 \end_inset 
123
124 Software Necesario
125 \layout Standard
126
127
128 \family sans 
129 Son varios los programas que utilizo:
130 \layout Description
131
132
133 \family sans 
134
135 \begin_inset LatexCommand \htmlurl[VCDImager]{http://www.gnu.org/software/vcdimager/}
136
137 \end_inset 
138
139  Es el encargado de hacer las imágenes de (S)VCD a través de un video MPEG
140  (como mínimo).
141 \layout Description
142
143
144 \family sans 
145
146 \begin_inset LatexCommand \htmlurl[MJPEG Tools]{http://mjpeg.sourceforge.net/}
147
148 \end_inset 
149
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).
154 \layout Description
155
156
157 \family sans 
158
159 \begin_inset LatexCommand \htmlurl[toolame]{http://toolame.sourceforge.net/}
160
161 \end_inset 
162
163  Compresor de streams de audio MPEG I Layer 2.
164 \layout Description
165
166
167 \family sans 
168
169 \begin_inset LatexCommand \htmlurl[NuppelVideo]{http://mars.tuwien.ac.at/~roman/nuppelvideo/}
170
171 \end_inset 
172
173  NuppelVideo Programa para capturar video con V4L.
174  En particular yo lo uso con una placa bttv (Leadtek WinView 601TV).
175 \layout Description
176
177
178 \family sans 
179
180 \begin_inset LatexCommand \htmlurl[exportvideo]{http://131.130.199.155/~aoe/mystuff/mpeg2_movie-avipatch/mpeg2_movie-avi.html}
181
182 \end_inset 
183
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.
187 \layout Description
188
189
190 \family sans 
191
192 \begin_inset LatexCommand \htmlurl[cdrdao]{http://www.gnu.org/software/cdrdao/}
193
194 \end_inset 
195
196  Programa para tostar CDs en modo DAO (Disk At Once), necesario para tostar
197  las imágenes generadas por el VCDImager.
198 \layout Standard
199
200
201 \family sans 
202 Hay otros programas que pueden resultar útiles:
203 \layout Description
204
205
206 \family sans 
207
208 \begin_inset LatexCommand \htmlurl[mplayer]{http://mplayer.sourceforge.net/}
209
210 \end_inset 
211
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.
214 \layout Description
215
216
217 \family sans 
218
219 \begin_inset LatexCommand \htmlurl[xawtv]{http://bytesex.org/xawtv/}
220
221 \end_inset 
222
223  Programa para ver TV.
224  También puede capturar video pero yo siempre tuve problemas.
225 \layout Description
226
227
228 \family sans 
229
230 \begin_inset LatexCommand \htmlurl[libmpeg3]{http://heroines.sourceforge.net/}
231
232 \end_inset 
233
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.
238 \layout Description
239
240
241 \family sans 
242
243 \begin_inset LatexCommand \htmlurl[transcode]{http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/}
244
245 \end_inset 
246
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.
251 \layout Description
252
253
254 \family sans 
255
256 \begin_inset LatexCommand \htmlurl[Linux Video Studio]{http://ronald.bitfreak.net/}
257
258 \end_inset 
259
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).
263  Pinta muy bien.
264 \layout Description
265
266
267 \family sans 
268
269 \begin_inset LatexCommand \htmlurl[Main Actor]{http://www.mainconcept.com/}
270
271 \end_inset 
272
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.
276 \layout Subsection
277
278
279 \family sans 
280 Breve descripción de VCD/SVCD
281 \layout Standard
282
283
284 \family sans 
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
295
296
297 \family sans 
298 VCD 1.1
299 \layout Standard
300
301
302 \family sans 
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
310  constante.
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
317  GOP).
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:
321 \layout Itemize
322
323
324 \family sans 
325 352 x 240 @ 29.97 Hz (frames por segundo) - NTSC SIF
326 \layout Itemize
327
328
329 \family sans 
330 352 x 240 @ 23.976 Hz (frames por segundo) - FILM SIF
331 \layout Subsubsection
332
333
334 \family sans 
335 VCD 2.0
336 \layout Standard
337
338
339 \family sans 
340 Es igual que el VCD 1.1 pero con las siguientes mejoras:
341 \layout Itemize
342
343
344 \family sans 
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.
347 \layout Itemize
348
349
350 \family sans 
351 Soporte de PBC (PlayBack Control) para hacer videos interactivos.
352 \layout Itemize
353
354
355 \family sans 
356 Soporte de listas de reproducción enlazadas.
357 \layout Itemize
358
359
360 \family sans 
361 Soporte de Closed Caption Posibilidad de mezclar contenidos en NTSC y PAL.
362 \layout Standard
363
364
365 \family sans 
366 Al agregar soporte para PAL, se agrego la siguiente resolución:
367 \layout Itemize
368
369
370 \family sans 
371 352 x 288 @ 25 Hz (frames por segundo) - PAL SIF
372 \layout Standard
373
374
375 \family sans 
376 Los SPI soportan los siguientes formatos:
377 \layout Itemize
378
379
380 \family sans 
381 Audio estéreo, joint estéreo o de doble canal de 128, 192, 224 o 384 kbps
382 \layout Itemize
383
384
385 \family sans 
386 Audio mono de 64, 96 o 192 kbps
387 \layout Standard
388
389
390 \family sans 
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
395
396
397 \family sans 
398 SVCD 1.0
399 \layout Standard
400
401
402 \family sans 
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:
406 \layout Itemize
407
408
409 \family sans 
410 Soporte de audio MPEG 1 de flujo variable (VBR).
411  Puede ir entre 1152 y 2500 kbps.
412 \layout Itemize
413
414
415 \family sans 
416 Resoluciones mayores (ver abajo).
417 \layout Itemize
418
419
420 \family sans 
421 Hasta 4 canales de capas de graficos o texto (OGT) para mostrar subtítulos.
422 \layout Itemize
423
424
425 \family sans 
426 Lista de comandos para controlar la máquina virtual de SVCD.
427 \layout Standard
428
429
430 \family sans 
431 El Super Video CD soporta sólo dos resoluciones para video y para imágenes
432  estáticas (de baja resolución):
433 \layout Itemize
434
435
436 \family sans 
437 480 x 480 @ 29.97 Hz (frames por segundo) - NTSC 2/3 D-2
438 \layout Itemize
439
440
441 \family sans 
442 480 x 572 @ 25 Hz (frames por segundo) - PAL 2/3 D-2
443 \layout Standard
444
445
446 \family sans 
447 Resoluciones superiores pueden llegar a usarse pero resultaria en un SVCD
448  que no se ajusta a las especificaciones.
449 \layout Section
450
451
452 \family sans 
453 Captura de Video
454 \layout Standard
455
456
457 \family sans 
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.
461 \layout Subsection
462
463
464 \family sans 
465 Inicialización de la placa de TV
466 \layout Standard
467
468
469 \family sans 
470 Esto es tan simple como abrir el 
471 \family typewriter 
472 xawtv
473 \family sans 
474 , elegir el canal, la norma, el brillo y el resto de las cosas como a uno
475  más le guste.
476  Luego de que este todo lindo, cerramos el 
477 \family typewriter 
478 xawtv
479 \family sans 
480 .
481 \layout Subsection
482
483
484 \family sans 
485 Captura de video
486 \layout Standard
487
488
489 \family sans 
490 La captura de video se realiza con el comando 
491 \family typewriter 
492 nuvrec
493 \family sans 
494  de NuppelVideo.
495  Hay algunas cosas que hay que especificar.
496  Las opciones de 
497 \family typewriter 
498 nuvrec
499 \family sans 
500  son:
501 \layout LyX-Code
502
503 nuvrec [opciones] archivo (sin extension!)
504 \layout LyX-Code
505
506 \layout LyX-Code
507
508 -W n ..........
509  Ancho [352 PAL, 352 NTSC] para VCD
510 \layout LyX-Code
511
512 -H n ..........
513  Alto [288 PAL, 240 NTSC] para VCD
514 \layout LyX-Code
515
516 -t min ........
517  Tiempo (si no se especifica, captura hasta recibir un Ctrl-C)
518 \layout LyX-Code
519
520 -S n ..........
521  Entrada de la placa (0 Televison) [0]
522 \layout LyX-Code
523
524 -V dev ........
525  Dispositivo de video [/dev/video0]
526 \layout LyX-Code
527
528 -A dev ........
529  Dispositivo de audio [/dev/dsp]
530 \layout LyX-Code
531
532 -a n ..........
533  Volumen (de placa bttv)
534 \layout LyX-Code
535
536 -p ............
537  PAL [default]
538 \layout LyX-Code
539
540 -n ............
541  NTSC
542 \layout LyX-Code
543
544 -s ............
545  SECAM
546 \layout Standard
547
548
549 \family sans 
550 Para mas opciones use '
551 \family typewriter 
552 nuvrec -h
553 \family sans 
554 '.
555  Una llamada clásica para capturar video para pasar a VCD en PAL seria:
556 \layout LyX-Code
557
558 nuvrec -a65535 -t1 captura_vcd
559 \layout Standard
560
561
562 \family sans 
563 Esto produce una salida como la siguiente:
564 \layout LyX-Code
565
566 copied=0 buf=51 f#=1495 ratio=7.38 lzor=1.02 effdsp=4413969
567 \layout Standard
568
569
570 \family sans 
571 Donde:
572 \layout Description
573
574
575 \family sans 
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).
579 \layout Description
580
581
582 \family sans 
583 f# es la cantidad de frames capturados en total.
584 \layout Description
585
586
587 \family sans 
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.
592 \layout Standard
593
594
595 \family sans 
596 El resto no sé bien que es, excepto el ultimo que sé que tiene que ver con
597  el audio.
598  Esto genera un archivo '
599 \family typewriter 
600 captura_vcd.nuv
601 \family sans 
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:
605 \layout LyX-Code
606
607 nuvrec -a65535 -t1 -W480 -H576 captura_svcd
608 \layout Standard
609
610
611 \family sans 
612 Esto produce también una salida similar:
613 \layout LyX-Code
614
615 copied=0 buf=45 f#=1495 ratio=6.48 lzor=1.03 effdsp=4413837
616 \layout Standard
617
618
619 \family sans 
620 y un archivo 
621 \family typewriter 
622 'captura_svcd.nuv
623 \family sans 
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
626  programa 
627 \family typewriter 
628 xawtv
629 \family sans 
630  para cerrarlo:
631 \layout LyX-Code
632
633 v4lctl volume 0
634 \layout Subsection
635
636
637 \family sans 
638 Edición y reproducción del video capturado
639 \layout Standard
640
641
642 \family sans 
643 Para esto están las utilidades de NuppelVideo 
644 \family typewriter 
645 nuvedit
646 \family sans 
647  y 
648 \family typewriter 
649 nuvplay
650 \family sans 
651  respectivamente.
652  Ambas utilidades son experimentales por lo que pueden no funcinar del todo
653  bien.
654  Por ejemplo con 
655 \family typewriter 
656 nuvplay
657 \family sans 
658  no me funciona el audio.
659  Lo más interesante es el 
660 \family typewriter 
661 nuvedit
662 \family sans 
663 .
664  Es una utilidad gráfica y se invoca de la siguiente forma:
665 \layout LyX-Code
666
667 nuvedit vcd.nuv
668 \layout Standard
669
670
671 \family sans 
672 Luego de esto se abren 2 ventanas, una del 
673 \family typewriter 
674 nuvplay
675 \family sans 
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: 
678 \emph on 
679 Mark
680 \emph default 
681  y 
682 \emph on 
683 Kram
684 \emph default 
685 .
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 
688 \emph on 
689 Cut
690 \emph default 
691 .
692  Lo que hace este programa es muy simple: crea un archivo de texto llamado
693  
694 \family typewriter 
695 vcd.nuv.edit
696 \family sans 
697  que contiene en cada linea el principio y el fin de cada escena a cortar,
698  medido en frames.
699  El nuvedit es solo una ayuda gráfica para crear este archivo.
700 \layout Standard
701
702
703 \family sans 
704 Ejemplo: 
705 \family typewriter 
706 archivo svcd.nuv.edit
707 \layout LyX-Code
708
709 1543 2320
710 \layout LyX-Code
711
712 20223 23449
713 \layout Standard
714
715
716 \family sans 
717 Un archivo como este quitaría de nuestro video 
718 \family typewriter 
719 svcd.nuv
720 \family sans 
721  los frames que van desde el 1543 hasta el 2320 y los que van del 20223
722  al 23449.
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.
725  El archivo 
726 \family typewriter 
727 .nuv.edit
728 \family sans 
729  es interpretado luego por las utilidades para comprimir el audio y video
730  a MPEG (o divx, pero este no es nuestro caso).
731 \layout Subsection
732
733
734 \family sans 
735 Compresión del Video
736 \layout Standard
737
738
739 \family sans 
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
744
745
746 \family sans 
747 Scripts de NuppelVideo
748 \layout Standard
749
750
751 \family sans 
752 El NuppelVideo trae dos scripts para convertir un video 
753 \family typewriter 
754 .nuv
755 \family sans 
756  a MPEG: 
757 \family typewriter 
758 nuv2vbr
759 \family sans 
760  y 
761 \family typewriter 
762 nuv2mpg
763 \family sans 
764 .
765  El 
766 \family typewriter 
767 nuv2vbr
768 \family sans 
769  
770 \emph on 
771 NO SIRVE
772 \emph default 
773  para hacer un video compatible con VCD y mucho menos con SVCD.
774  El script 
775 \family typewriter 
776 nuv2mpg
777 \family sans 
778  se autoproclama compatible con VCD, pero no tiene la vieja opción -s del
779  
780 \family typewriter 
781 mpeg2enc
782 \family sans 
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
789  varias opciones.
790 \layout Subsubsection
791
792
793 \family sans 
794 Compresión del audio
795 \layout Standard
796
797
798 \family sans 
799 Este paso se hace con 
800 \family typewriter 
801 nuvplay
802 \family sans 
803  (parte del NuppelVideo) y 
804 \family typewriter 
805 toolame
806 \family sans 
807 .
808  Acá solamente voy a dar los comandos para VCD y SVCD.
809  Para mas información sobre las opciones de toolame: 
810 \family typewriter 
811 man toolame
812 \layout Standard
813
814
815 \family sans 
816 VCD:
817 \layout LyX-Code
818
819 nuvplay -e | toolame -s44.1 -b224 -p2 -ms /dev/stdin vcd.mp2
820 \layout Description
821
822
823 \family sans 
824 -s44.1 Frecuencia de 44.1Hz
825 \layout Description
826
827
828 \family sans 
829 -b224 Bitrate de 224Kbps
830 \layout Description
831
832
833 \family sans 
834 -ms Modo Stereo
835 \layout Description
836
837
838 \family sans 
839 -p2 Modelo acustico 2
840 \layout Standard
841
842
843 \family sans 
844 Para tener un stream de audio compatible con VCD, deben usarse estas opciones.
845 \the_end