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.