Gestion sous Linux des fichiers vidéo de sa FreeBox

Bonjour ami lutin.

Toi et tes amis êtes nombreux à vous demander «mais comment gérer toutes les belles vidéos avalées depuis la FreeBox» avec mon système d'exploitation propre, c'est à dire: récupérer, éditer, compresser ?

Voici quelques modestes conseils que toi, ami lutin, tu peux enrichir !

Récupérer les vidéos

Ça c'est sans doute le plus facile, et l'internette est plein de joyeux conseils pour configurer proprement son vlc avec GratuiteBoite.

Cependant, à la fin, on se retrouve avec un amical fichier MPEG (ça, c'est bien) au format TS (transport stream). D'ailleurs, si le besoin s'en fait sentir, on peut convertir le fichier en MPEG PS à l'aide de l'invocation magique suivante:

vlc toto.ts –sout=file/ps:toto.mpg

C'est toujours bon à savoir. Oui, ami lutin tu peux aller voir la Wikipédia pour bien comprendre la différence entre les deux, je te laisse dix minutes et on reprend après tous ensemble.

Pour t'aider dans ta quête de la convitude, fricoder est un bon petit «magnestocope» numérique sur ton ordinateur, afin que ton démon atd avale pour toi les émissions de la FreeBox.

Note: la récupération de fichiers sur une box minimale (genre une Soekris tout mimi et toute mini) est également possible, à grand coup de

mplayer -dumpstream  -dumpfile $MONFICHERLOCAL rtsp://mafreebox.freebox.fr/freeboxtv/stream?id=$MYSTREAM.

Cela se règle très bien avec la commande at comme echo /usr/local/bin/record.sh mon_emission | at today 22.40. Pour l'instant, je termine le processus avec un grand coup de killall et de at.

Bien découper ses fichiers

Sauf que maintenant, tu as un fichier qui contient ton émission préférée mais entourée de choses inutiles avant et après. Il faudrait les enlever. Comment faire ?

État de l'offre

Sous Linux, y'a plein de super applications pour éditer et découper des vidéos. Le seul léger problème est qu'aucune ne marche. État des lieux:

* Avidemux est une application charmante, mais tant avec un fichier MPEG TS que MPEG PS, je finis toujours par avoir un très fort décalage audio/vidéo. Même avec les versions binaires, les trucs compilés, la dernière version du svn, tout. Même sous MS-Sale (chez un pote, j'ai tenté le coup). À suivre cependant parce qu'avidemux, si ca marchait, ça serait super-grassouille.

* Kino, éditeur GTK, mais conçu essentiellement pour gérer du DV, pas des MPEG.

* Diva, prometteur, mais qui pour l'instant ne fait pas grand chose (par exemple, il ne se compile pas vraiment).

Donc, je résume: il ne nous reste environ rien d'utliisable tout de suite, de ma fenêtre. Joie. Parce que maintenant, on peut maintenant faire des choses toutes bizarres, gniiIIiihihihi.

Et maintenant, je prendrais bien une ration de poils

Ami lutin, je ne connais pas grand-chose à MPEG et n'hésite pas à corriger, mais en gros, MPEG-2 en format TS est une immense chenille, qui peut facilement se déplacer (transport stream oblige) et faire plein de contorsions (normal, c'est une chenille molle). Cela veut dire qu'il a énormément de petits pieds. Ce qu'il y a de sûr est que chaque pied chausse 188 octets.

Comment ensuite mesurer la taille et le poids de la chenille ? C'est plus compliqué, parce que la règle de calcul est justement conçue pour qu'on puisse facilement changer la règle de calcul. En gros, TS s'adapte à ce qu'il y a à véhiculer, de sorte que 10 secondes de vidéo n'équivaut pas systématiquement à tant d'octects donc tant de place. Voici cependant quelques métriques.

En gros, 1.000.000 pieds, ça fait dans les 8 minutes (480 secondes) et ça pèse dans les 180Mo. En gros.

Donc, avec VLC, on peut ensuite s'amuser sauter de nombre de pieds en nombre de pieds, pour «tomber» aux bons endroits, c'est-à-dire là où commence et finit l'émission.

Une fois qu'on a cette information, il ne nous reste plus qu'à découper le MPEG-2 TS avec notre fil à couper le beurre habituel, notre ami Dédé, hmm, dd.

Imaginons que mon émission commence à partir de 4000000 pieds (de pub, de bande annonce, et autre) et qu'elle dure 10000000 pieds (chiffres que je trouve avec vlc en sautant partout, je le rappelle).

Pour l'édition de vidéo sous Unix, je sors l'incantation magique suivante:

dd bs=188 if=mon_dump.mpg of=test.mpeg count=10000000 skip=4000000

Un ami informé m'a expliqué ensuite qu'on peut chausser plusieurs pieds d'un seul coup en se faisant par exemple un dd bs=1316 par exemple, histoire de faire moins d'appels système.

MAIS QUELLE JOIE ! MAIS QUEL BONHEUR ! MAIS MERCI QUI ? MERCI DÉDÉ !

Reste maintenant cette épineuse question: mais comment savoir au bout de combien de pieds mon émission favorite (je devine sans peine que c'est le BigDil) commence ? Facile:

dd bs=188 if=mon_dump.mpg count=10000000 skip=4000000 | vlc file/ts:-

C'est énorme, Unix, quand on y pense.

Ré-encoder et compresser les fichiers

Maintenant qu'on a un MPEG coupé, on voudrait bien qu'il prenne un peu moins de place sur le disque dur. J'ai fait plusieurs essais avec mencoder, transcode et autre, avant de trouver le bien: ffmpeg2theora. La commande magique est:

nice -n 10 ffmpeg2theora test.mpeg

Bon, ca donne à la fin du theora/ogg, qui ne passe certainement pas sur les platines de salon, mais qui est très bien mangé par VLC, mplayer et autres.

(Si vous avez un truc qui marche pour faire des Xvid propres, je suis preneur).

Mais ah, là, assez parlé de moi: et vous, comment ça va ?

La même avec mencoder

Après cette démonstration de poils de la part de monsieur benoyst (lit attentivement pour la faire des Xvid jolis), voyons voir ce que ça donne si on utilise un soft fait pour ça, j'ai nommé mencoder. Pour couper, il vous suffit de noter les time stamps auquels vous voulez couper vos videos et …

mencoder -ovc copy -oac copy -ss 00:01:00 -endpos 00:01:00 entree.mpg -o sortie.mpg

Bon, alors ça ca coupe la video entre 00:01:00 et 00:02:00 ce qui vous permet d'être assez précis. Pour ce qui est du réencoding il vous suffira de mettre le codec aproprié a la place de copy. Ça c'est la théorie. En pratique chaque codec a ses propres options. On obtient la liste des codecs videos avec -ovc help, reciproquement audio avec -oac help. Exemple des options qui passent bien sur ma platine de salon en xvid des familles:

mencoder -oac mp3lame -ovc xvid -xvidencopts bitrate=738556:me_quality=6:pass=2 entree.mpg -o sortie.mpg

On nottera qu'avec mencoder on peut aussi rajouter les fameuses barres noires cinema style autour de la video, croper, scaler etc. Qui a dit qu'on avait besoin d'une ui pour faire du montage ?

Pour coller les morceaux de vidéo entre eux, il suffit de les mettre les un a la suite des autres sur la commande line. Voila, d'ici peu je vais essayer de vous le faire avec gstreamer qui déchire encore plus que mencoder, mais dont les pipelines sont plus difficiles à monter.

(en)Coder les vidéos

Et maintenant, un petit script rapide pour coder les videos MPEG vers xvid.

#!/bin/sh
# convert MPEG file to xvid (two passes)
# Usage: myscript my_MPEG_file.mpeg 

## Change me here (yes, command line arguments are nice)
BITRATE=1000
AUDIORATE=96

## vars
INPUT=$1
OUTPUT=`basename $1 .mpg`-final.avi

## 1st pass, analyzing (quick mode), and just outputing the analysis file
nice mencoder -oac pcm -ovc xvid -xvidencopts bitrate=$BITRATE:pass=1:turbo $INPUT -o /dev/null

## 2nd pass, outputing the final file (with some expensive optimizations)
nice mencoder -oac mp3lame -lameopts aq=0:cbr=$AUDIORATE -ovc xvid -xvidencopts bitrate=$BITRATE:trellis:me_quality=6:vhq=4:bvhq=1:quant_type=mpeg:chroma_opt:pass=2 $INPUT -o $OUTPUT

Voila, toutes les bonnes volontés pour améliorer les options de ce scriptouille sont les bienvenues !

linux/edition_video_freebox.txt · Last modified: 2010/01/12 13:29 (external edit)