Archive

Archives pour 06/2010

Compression / Décompression en ligne de commande

Archives tar.bz2

Compression

tar cjfv archive.tar.bz2 fichier1 fichier2 destination/

Décompression

tar xjfv archive.tar.bz2

Archives tar.gz

Compression

tar czfv archive.tar.gz fichier1 fichier2 destination/

Décompression

tar xzf archive.tar.gz

Couper une vidéo avec mencoder

Quand j’enregistre quelque chose à la télévision, je prévois toujours que le programme puisse commencer en avance (plutôt rare mais on ne sait jamais…) et finir en retard. Je me retrouve donc avec des fichiers vidéos contenant la fin du programme précédent au début et le commencent du programme suivant à la fin.
Il me faut donc couper la vidéo au début et à la fin.

Couper le début d’une vidéo

Imaginons qu’il y ait 12 minutes et 14 secondes à couper au début de cette vidéo.
La commande serait alors :
mencoder -ss 00:12:14 fichier.avi -oac copy -ovc copy -o fichier_tmp.avi

Explications :

  • -ss indique l’endroit où commence la vidéo en hh:mm:ss
  • -oac copy copie le flux audio tel quel
  • -ovc copy copie le flux vidéo tel quel
  • -o fichier_tmp.avi indique le nom du fichier de sortie. Ce fichier ne sera qu’un fichier temporaire puisqu’il nous faudra encore couper la fin de la vidéo.

Couper la fin d’une vidéo

Imaginons que le programme enregistré dure 52 minutes et 35 secondes.
La commande sera la suivante :
mencoder -endpos 00:52:35 fichier_tmp.avi -oac copy -ovc copy -o fichier_final.avi

Explications :

  • -endpos indique l’endroit où se termine la vidéo en hh:mm:ss
  • -oac copy copie le flux audio tel quel
  • -ovc copy copie le flux vidéo tel quel
  • -o fichier_final.avi indique le nom du fichier de sortie.
Categories: Multimédia Tags: ,

Ripper un DVD avec mencoder

Pré-requis :

Avoir copier l’arborescence du dvd sur son PC, surtout le dossier VIDEO_TS.

1ère étape : identifier les pistes audio.

mplayer -v VTS_01_1.VOB | grep aid
Cela va lancer le film avec mplayer et afficher les paramètres dans le terminal, l’option grep aid permet de filtrer tout ceci et de n’afficher que les langages présents sur le dvd.
Nous allons donc avoir quelque chose comme ceci dans le terminal :

[open] audio stream: 0 audio format: ac3 (5.1) language: en aid: 128
[open] audio stream: 1 audio format: ac3 (5.1) language: fr aid: 129

2ème étape : identifier les sous titres (facultatif)

Les sous titres sont identifiés par sid donc la commande mplayer -v VTS_01_1.VOB | grep sid devrait donner ceci à quelque chose près :

[open] subtitle ( sid ): 0 language: en
[open] subtitle ( sid ): 1 language: fr
[open] subtitle ( sid ): 2 language: es
[open] subtitle ( sid ): 3 language: nl

3ème étape : préparation des fichiers VOB

Nous allons réunir les fichiers VOB pour qu’ils n’en fassent plus qu’un.
Si le dvd est issu d’une série il va avoir plusieurs fichiers correspondant à plusieurs épisodes.
Par exemple pour un dvd contenant 4 épisodes :
cat VTS_01_1.VOB VTS_01_2.VOB > episode1.VOB
cat VTS_02_1.VOB VTS_02_2.VOB > episode2.VOB
cat VTS_03_1.VOB VTS_03_2.VOB > episode3.VOB
cat VTS_04_1.VOB VTS_04_2.VOB > episode4.VOB

Exemple pour un film :
cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB VTS_01_5.VOB > film.VOB

4ème étape : encodage

Pour ce faire je vais utiliser le codec x264, je sais x264 c’est le mal !
Mais en attendant j’ai fais plusieurs essais avec xvid et je n’ai jamais réussi à avoir une qualité correcte (même avec plusieurs passes) et Theora et WebM ne sont pas supportés par le disque dur multimédia qui va accueillir ces fichiers…
Donc solution de repli : x264.

mencoder film.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o film.avi

Et voilà, un dvd rippé en avi d’une qualité tout à fait convenable.

5ème étape : Automatisation (facultatif)

Pour un film il suffit donc de deux commandes :
- une pour concaténer les fichiers VOB
- une pour encoder le VOB en avi
Alors que pour un dvd comportant des épisodes d’une série il faut deux commandes par épisode, un dvd contenant généralement 4 épisodes il faut 8 commandes par dvd.
Et il faut attendre que la commande soit finie pour lancer la suivante.

Pour automatiser la transformation d’un dvd de serie on peut fait un script sh qui ressemblerai à ceci :
cat VTS_01_1.VOB VTS_01_2.VOB > episode1.VOB
cat VTS_02_1.VOB VTS_02_2.VOB > episode2.VOB
cat VTS_03_1.VOB VTS_03_2.VOB > episode3.VOB
cat VTS_04_1.VOB VTS_04_2.VOB > episode4.VOB
mencoder episode1.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o episode1.avi
mencoder episode2.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o episode2.avi
mencoder episode3.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o episode3.avi
mencoder episode4.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o episode4.avi

On place ce script dans le répertoire VIDEO_TS et on le lance par la commande :
sh script-encodage.sh

6ème étape : Options (facultatif)

Analysons une commande d’encodage :
mencoder film.VOB -aid 129 -vf scale=720:576 -oac copy -ovc x264 -x264encopts bitrate=950:turbo -o film.avi

Comme vu plus haut -aid xxx permet de choisir la piste audio.
Si l’on veut rajouter des sous titres, il faut rajouter -sid x.

Le format natif d’un dvd étant 720×576 pixels l’option -vf scale=720:576 permet de garder ce format pour le fichier de sortie.

Options audio

-oac copy indique qu’il faut copier le flux audio si on veut le réencoder il faut modifier cette option.
Par exemple pour une piste audio en mp3 à un débit constant de 128 kbps il faut faudrait mettre :
-oac mp3lame -lameopts mode=2:cbr:br=128

Si le son est trop faible ou trop fort on peut ajouter :vol=x si x=0 le son restera pareil que sur la vidéo d’origine sinon une valeur positive ou négative fera changer la gain/
Donc si le son est trop faible on peut mettre -oac mp3lame -lameopts mode=2:cbr:br=128:vol=3

Options x264

bitrate=950 : indique que l’on souhaite encoder la vidéo en 950kbps, il faut donc jouer sur ce paramètre pour modifier la qualité de la vidéo.
turbo : le mode turbo permet de réaliser l’encodage plus rapidement mais entraîne une légère baisse de la qualité.
pass=1 ou pass=2 : permet de faire plusieurs passes afin d’avoir une qualité optimale.
threads=x : indique qu’il faut utiliser x cores de votre CPU. Sans cette option un seul core est utilisé.

xvid

Pour faire un encodage en deux passes en xvid les commandes ressemblerait à ceci :
mencoder film.VOB -aid 129 -vf scale=720:576 -oac copy -ovc xvid -xvidencopts bitrate=1000:pass=1 -ovc lavc -lavcopts "threads=2" -o /dev/null
mencoder film.VOB -aid 129 -vf scale=720:576 -oac copy -ovc xvid -xvidencopts bitrate=1000:pass=2 -ovc lavc -lavcopts "threads=2" -o video.avi

On retrouve les mêmes options qu’avec le x264 sauf le mode turbo.
Le multithreading est aussi pris en charge mais avec une syntaxe différente :
- en x264 on aurait -x264encopts bitrate=950:threads=2
- en xvid on a -xvidencopts bitrate=950 -ovc lavc -lavcopts "threads=2"

Categories: Multimédia, Tutoriels Tags: ,