Encodage Vidéo

Transcription

Encodage Vidéo
Encodage Vidéo
notes Enc. Vidéo
Table des matières
1
Sélection de la source.........................................................................................................2
2
Encodage Divx en 3 passes (lavc et mencoder).................................................................2
3
Convertir les sous-titres au format texte:........................................................................... 3
4
Extraire les images d'une séquence (extraire les diaporamas des dvds)............................ 3
5
Encoder un canal son dans un fichier séparé..................................................................... 3
6
Encoder un canal son dans un container avi ..................................................................... 3
7
Isoler la vidéo.....................................................................................................................4
8
Isoler le son........................................................................................................................ 4
9
Jouer un fichier en utilisant sous-tires et un des canaux audio.......................................... 4
10
Graver une anim dans un track audio...............................................................................4
11
Desentrelacer une video................................................................................................... 4
12
Configurer le player..........................................................................................................4
© 2005 Éric BURGHARD Tous droits réservés.
Encodage Vidéo
1. Sélection de la source
•
a partir de .vob extrait du dvd
>cat *.vob | mencoder [options] -o film.avi -
•
a partir du DVD
>mencoder -dvd 1 [options] -o film.avi
2. Encodage Divx en 3 passes (lavc et mencoder)
1. •
La première passe est utilisée pour encoder l'audio dans un flux constant (ar).
L'extraction des sous-titres au format vobsub peux se faire à n'importe quelle passe
mais langue par langue. Le nom frameno.avi est important pour indiquer à mencoder
qu'il s'agit d'un encodage en 3 passes.
>rm frameno.avi divx2pass.log subtitles.sub subtitles.idx
>mencoder -dvd 1 -alang en -ovc frameno -o frameno.avi -oac mp3lame
-lameopts cbr:br=$ar \
-vobsubout subtitles -vobsuboutindex 0 -sid 1
Le flux video (vr) est indiqué à la fin de cette passe en fonction de la taille souhaitée
pour le fichier final. Ce flux ne tient compte que d'un canal audio.
• Calcul du flux video pour n canaux audio
( vr )(ar) vr+ar=r
(vr' )(arar) vr'+n*ar=vr+ar => vr'=vr-ar*(n-1)
•
Calcul du flux video si on multiplie la taille du fichier final par x
( vr )(ar) vr+ar=r
( vr')(ar) vr'+ar=x*(vr+ar) => vr'=x*vr-ar*(1-x)
•
Composition des 2 méthodes précédentes
(vr)(ar)
vr+ar=r
(vr')(arar) vr'+n*ar=x*(vr+ar) => vr'=x*vr-ar*(n-x)
•
•
Cas pratique: vr estimée par mencoder à 399 pour un CD 700 MB On désire
rajouter un canal audio et encoder sur 2 CD: vr'=2*399-128*(2-2)=798
Detecter la région a découper ($crop)
>mplayer -dvd 1 -chapter 6 -vop cropdetect
2. •
La deuxième passe correspond à la passe d'analyse du codec DivX. Il est inutile de
sauver le fichier encoder, sauf pour vérification, et on se sert de l'encodage audio de
la passe précédente (-oac copy). La zone découpée est zoomé (-vo scale -zoom) au
bon aspect/ration grâce à -xy. Si la source est entrelacé utiliser -npp lb
>mencoder -dvd 1 -vop scale,crop=$crop -zoom -xy 640 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=$vr:vhq:vpass=1 [-npp lb] -oac copy
-o /dev/null
•
La deuxième passe en extrayant un deuxième sous-titre (au format vobsub)
>mencoder -dvd 1 -vop scale,crop=$crop -zoom -xy 640 -ovc lavc
-lavcopts vcodec=mpeg4:vbitrate=$vr:vhq:vpass=1 [-npp lb] \
-oac copy -o /dev/null -vobsubout subtitles -vobsuboutindex 1 -sid 2
3. •
La troisième passe étant l'encodage proprement dit
Page 2
© 2005 Éric BURGHARD Tous droits réservés.
Encodage Vidéo
>mencoder -dvd 1 -vop scale,crop=$crop -zoom -xy 640 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=$vr:vhq:vpass=2 [-npp lb] -oac copy
-o film.avi
•
La troisième passe en encodant un autre canal audio
>mv frameno.avi canal2.avi
>mencoder -dvd 1 -alang fr -vop scale,crop=$crop -zoom -xy 640 -ovc
lavc \
-lavcopts vcodec=mpeg4:vbitrate=$vr:vhq:vpass=2 [-npp lb] -oac
mp3lame -lameopts cbr:br=$ar -o film.avi
4. Pour fusionner la video/son avec le 2ieme canal son (mp3 en cbr uniquement)
>avimerge -i film.avi -o film2c.avi -p canal2.avi
ou mieux (avicat modifié par moi)
>avicat -o film2c.avi -p canal2.avi film.avi
5. Pour couper la video en plusieurs morceaux (en préalable au gravage sur plusieurs cds)
>avisplit -i film2c.avi -o film -s 700
3. Convertir les sous-titres au format texte:
1. Extraire les sous-titres sid au format pgm
>tccat -i /dev/dvd -T 1 -L | tcextract -x ps1 -t vob -a $sid |
subtitle2pgm -o $lang -c 255,0,255,255
2. •
Agrandir les pgm pour faciliter la reconnaissance avec clara
>for file in $lang*.pgm; do pnmcrop $file | pnmscalefixed 4.16
>$lang${file##soustitre};done
•
S'assurer que tous les pbm sont valides
>for file in `find . -size 0`; do pbmmake -white 50 50 >$file; done
3. Executer clara sur l'ensemble des fichiers pbm
>clara -o t
4. Vérification orthographique
>for file in $lang*.txt; do aspell -d $lang -c $file done
5. Indexation des sous-titres
>srttool -s -w <$lang.srtx >$lang.srt
4. Extraire les images d'une séquence (extraire les diaporamas des dvds)
>mplayer -dvd 1 -vo jpeg -ao null
5. Encoder un canal son dans un fichier séparé
>transcode -p /dev/dvd -T 1,-1 -a 1 -y raw -m canal1.mp3
6. Encoder un canal son dans un container avi
équivalent au frameno de mencoder mais avec un codec=FrNo au lieu de RGB
>transcode -i /dev/dvd -T 1,-1 -a 1 -x null,dvd -g 0x0 -f 29.970 -y raw -o
canal.avi -u 50
Page 3
© 2005 Éric BURGHARD Tous droits réservés.
Encodage Vidéo
7. Isoler la vidéo
>transcode -i film.avi -P 1 -y raw,null -o film0.avi
8. Isoler le son
>transcode -i film.avi -P 1 -y null,raw -o audio0.avi
9. Jouer un fichier en utilisant sous-tires et un des canaux audio
>mplayer -aid [1|2] -vosubfile subtitles $file
10. Graver une anim dans un track audio
•
(800 Mo sur un CD de 700 Mo)
• cd record enlève les 72 premier octets en confondant RIFF WAVE et RIFF AVI
• il faut que la taille des données soit un multiple de 1525 (taille bloc audio)
>(head -c 72 anim.avi ; cat anim.avi ; \
dd if=/dev/zero bs=$(echo $(ll anim.avi | cut -f8 -d' ')%1525 | bc)
count=1) | \
cdrecord dev=0,2,0 -audio -swab -v -
•
Jouer un fichier encodé dans le track audio 1
>cdparanoia -qr 1 - | mplayer -ao arts -
11. Desentrelacer une video
•
le desentrelacement est supporté par le greffon de sortie (divx4, ffmpeg, win32,..)
>mplayer ... -pp 0x20000
•
autrement (dvd)
>mplayer ... -vop pp=0x20000
12. Configurer le player
1. Créer un groupe video
2. permettre la lecture sur /dev/rtc par le groupe video
3. permettre le reglage des irq rtc (horloge) à 1024Hz
>echo 1024 > /proc/sys/dev/rtc/max-user-freq
Page 4
© 2005 Éric BURGHARD Tous droits réservés.