URL: https://linuxfr.org/users/mac_is_mac/journaux/edition-simple-de-fichiers-ts-sous-linux Title: Edition simple de fichiers TS sous Linux Authors: mac_is_mac Date: 2014年11月01日T11:32:11+01:00 License: CC By-SA Tags: télévision, enregistrement, mplayer, tnt, dvb et publicité Score: 12 Je présente ici des petits scripts très simples permettant de découper des fichiers d'enregistrement TV, par exemple pour enlever la publicité. Il existe des outils complexes permettant de faire cela (avidemux,pitivi,openshot,dvbcut), mais ils ont des lourdeurs et des limitations. Par exemple, dvbcut est limité aux flux SD, et ni lui ni avidemux ne savent gérer les sous-titres. Ici, on va couper les fichiers à la hache, sans essayer de comprendre le contenu. Le fichier est divisé en bloc de 100000 octets; le principe est de couper les morceaux qui nous intéressent.
L'inconvénient est qu'on a des coupures pas très nettes, l'avantage est qu'on est sûr qu'on ne perd rien. Commençons par deux scripts basiques: coupebout et regardebout.
Le premier permet d'extraire un morceau de vidéo, le second montre quelques secondes à une position donnée.

coupebout fichier_depart bloc_debut bloc_fin fichier_de_sortie

````bash #!/bin/sh # coupebout entree=1ドル taille=2ドル fin=3ドル< sortie=4ドル c=$((fin - taille + 1)) echo $c dd if=$entree of=$sortie ibs=100000 skip=$taille count=$c ````

regardebout fichier_depart bloc_debut

regardebout fichier_depart bloc_debut nombre_de_blocs

Par défaut, on affiche 30 blocs.

````bash #!/bin/sh # regardebout entree=1ドル position=2ドル if [ 3ドル -gt 0 ]; then longueur=3ドル else longueur=30 fi dd if=$entree ibs=100000 skip=$position count=$longueur | mplayer - ```` Le deuxième script nécessite d'avoir installé mplayer Le dernier script, resume-film, est le plus complexe. Il fabrique un fichier avi formé d'images du film numérotées, prises à intervalles régulier. Par défaut, l'intervalle est de 512 blocs. Par dichotomie, on peut alors trouver assez rapidement l'endroit de la coupure. On peut affiner avec regardebout.

resume-film fichier_depart

resume-film fichier_depart ecart

resume-film fichier_depart ecart bloc_depart bloc_fin

````bash #!/bin/bash # resume-film nom=1ドル if [ "2ドル" == "" ]; then ecart=512 else ecart=2ドル fi if [ "4ドル" == "" ]; then taille=`stat -c "%s" $nom` fin=$((taille / 100000 - ecart / 2 )) debut=0 else debut=3ドル fin=4ドル fi #j'écris hors code une ligne qui apparaît sous une forme étrange quand elle est dans le code: ```` base=$(basename ${nom} .ts) ````bash repertoire=`mktemp -d /tmp/$nom.XXXXXX` longueur=${#fin} for i in `seq $debut $ecart $fin` do dd if=$nom ibs=100000 skip=$i count=50 | mplayer -nosound -frames 1 -vo png:z=9:outdir=$repertoire - longueurb=${#i} ii=$i for q in `seq $longueurb $longueur` do ii="0"$ii done convert $repertoire/00000001.png -pointsize 50 -fill red -draw "text 70,70 '$i'" -resize 600 $repertoire/thumb-$ii.png done mencoder mf://$repertoire/thumb-*.png -mf type=png:fps=4 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o $base-resume-$debut-$ecart-$fin.avi rm -f $repertoire/thumb-*.png rm -f $repertoire/00000001.png rmdir $repertoire ```` Pour que le script fonctionne, il faut avoir installé mplayer, mencoder et imagemagick. A la fin, on peut simplement concaténer les fichiers avec cat bout1.ts bout2.ts bout3.ts> film.ts

AltStyle によって変換されたページ (->オリジナル) /