Jak Back to Slack ! | optimisteo > Ça pourrait t'aider, ça ? Je m'en sers pour enregistrer à partir de ma PCTV Rave.
Code :
- #!/bin/sh
- # Constantes :
- TV=0
- COMPOSITE=1
- SVIDEO=2
- DATE=`LC_ALL=C; date +%d-%h-%y.%Hh%M`
- HEURE=`date +%H`
- # Canaux TV
- TF1=22
- FRANCE2=28
- A2=28
- FRANCE3=25
- FR3=25
- CANAL=5
- FRANCE5=30
- LA5=30
- ARTE=30
- M6=33
- # Par défaut :
- WDEF=384
- HDEF=288
- ADEF=22050
- VBIT=2800
- ADEV=/dev/dsp2
- IDEF=$COMPOSITE
- CHAINE=
- NOMFIC=
- TEMPSOPT=
- SAUVEGARDE=
- INTAC=
- # Il peut y avoir des problèmes lors du parsing des arguments
- # si il y a une erreur, à améliorer ... un jour, peut-être ...
- while [ $1 ] ; do
- case $1 in
- --nom | -o | --output | -n)
- # Comme toujours, ya pas de gestion des cas d'erreur (nom à la con ...)
- NOMFIC="$2"
- shift 2
- ;;
- --input | --entree | -i | -e)
- ITMP=$2
- case $ITMP in
- 0 | TV | tv | Tv | tele | Tele | télé | Télé)
- IDEF=$TV
- ;;
- 1 | Composite | composite)
- IDEF=$COMPOSITE
- CCAR=1
- ;;
- 2 | SVIDEO | svideo | Svideo | S-Video | s-video | S-video | S-VIDEO)
- IDEF=$SVIDEO
- CCAR=2
- ;;
- *)
- echo " Erreur, il n'y a que la télé (0), le composite (1)"
- echo " et le S-Video (2)"
- exit
- esac
- shift 2
- ;;
- --audio | -a)
- ADEV=$2
- shift 2
- ;;
- --largeur | -l)
- WDEF=$2
- shift 2
- ;;
- --hauteur | -h)
- HDEF=$2
- shift 2
- ;;
- --bitrate | -b | --br)
- ATMP=$2
- case $ATMP in
- 11 | 11025 | 11k | 11K | 11000)
- ADEF=11025
- ;;
- 22 | 22050 | 22k | 22K | 22000)
- ADEF=22050
- ;;
- 44 | 44100 | 44k | 44K | 44000)
- ADEF=44100
- ;;
- *)
- echo " Valeur incorrecte, on prend la valeur par défaut."
- echo " Fréquence d'échantillonnage : 22050 Hz"
- ADEF=22050
- ;;
- esac
- shift 2
- ;;
- --chaine | --chan | -c)
- CTMP=$2
- # Bon, alors si on choisit une chaîne, c'est forcément
- # qu'on veut utiliser la télé, donc inutile de préciser
- # l'entrée voulue dans ce cas. D'où le IDEF suivant.
- IDEF=$TV
- # On enregistre alors le son à partir de la SB 128
- ADEV=/dev/dsp
- case $CTMP in
- 1 | TF1 | tf1)
- CHAINE=$TF1
- CCAR="TF1"
- ;;
- 2 | A2 | a2 | France2 | FRANCE2 | france2)
- CHAINE=$FRANCE2
- CCAR="France2"
- ;;
- 3 | FR3 | fr3 | France3 | FRANCE3 | france3)
- CHAINE=$FRANCE3
- CCAR="France3"
- ;;
- 4 | CANAL | canal | C+ | c+ | Canal)
- CHAINE=$CANAL
- CCAR="4"
- CCAR="Canal"
- ;;
- 5 | arte | Arte | ARTE | France5 | FRANCE5 | france5)
- CHAINE=$FRANCE5
- if [ $HEURE -ge 19 ]; then
- CCAR="Arte"
- else
- CCAR="France5"
- fi
- ;;
- 6 | M6 | m6)
- CHAINE=$M6
- CCAR="M6"
- ;;
- *)
- echo " Erreur : chaîne inconnue"
- exit
- esac
- shift 2
- ;;
- --temps | --time | -t)
- # Pour faire simple au début, mettre le temps en secondes
- # pendant lequel il faut enregistrer
- # Et bien en fait, non, car $2 est directement passé comme
- # paramètre à l'option -endpos de mencoder, donc le format
- # à passer à l'option --temps est exactement le même que celui
- # que l'on peut passer à -endpos. Voir le man de mencoder :
- #
- # -endpos <time|byte position> (see -ss and -sb option too)
- # Stop encoding at given time or byte position. Can
- # be specified in many ways:
- #
- # NOTE:
- # Byte position won't be accurate, as it can only
- # stop at a frame boundary.
- #
- # EXAMPLE:
- # -endpos 56 encode only 56 seconds
- # -endpos 01:10:00 encode only 1 hour 10 min-
- # utes
- # -endpos 100mb encode only 100 MBytes
- #
- TEMPSOPT="-endpos $2"
- shift 2
- ;;
- --sauvegarde | -S)
- SAUVEGARDE=1
- shift 1
- ;;
- --interactif | -I)
- # Permet d'avoir un truc interactif pour plus tard, éventuellement
- # Pas sûr du tout de l'utilité, en fait ...
- INTAC=1
- shift 1
- ;;
- --help)
- echo "L'ordre des paramètres est indifférent."
- echo " **** AIDE **** "
- cat << EOF
- Options disponibles :
- -o, -n, --output NOM Nom du fichier à enregistrer (defaut : ENR-xxxx.$DATE.avi)
- -i, -e, --input ENTREE Chaîne alphanumérique représentant l'entrée vidéo
- 0, TV, tv, tele : Utilisation du tuner (nécessite
- l'option -c)
- 1, Composite, composite : Entrée composite (défaut)
- 2, svideo, SVIDEO : Entrée S-Vidéo
- -a, --audio DEVICE Périphérique audio à utiliser pour l'enregistrement
- (défaut : /dev/dsp2)
- -l, --largeur NUM Largeur de la fenêtre (défaut : 384)
- -h, --hauteur NUM Hauteur de la fenêtre (défaut : 288)
- -b, --bitrate NUM Paramètre d'échantillonnage audio, à choisir
- entre 44100, 22050 et 11025 (défaut : 22050)
- -c, --chaine CHAINE Nom ou numéro de la chaîne à enregistrer
- De 1 à 6, ou TF1, France2, ... M6
- Force l'option -i 0
- -t, --temps TIME Temps pendant lequel il faut enregistrer.
- La forme du paramètre TIME prend en fait la même
- forme que celle du paramèter de l'option -endpos
- de mencoder, vu qu'elle lui est directement
- transmise (voir man mencoder). En pratique,
- utiliser soit un temps en secondes, soit un
- chaîne de la forme hh:mm:ss ou mm:ss.
- -S, --sauvegarde Sauvegarde sur Atlas par NFS
- -I, --interactif Mode interactif (pas encore très actif)
- EOF
- shift 1
- exit
- ;;
- *)
- echo "ERREUR : voir l'option --help pour plus d'infos"
- echo
- exit
- ;;
- esac
- done
- if [ "$INTAC" ]; then
- echo
- echo " Appuyer sur entrée pour commencer l'enregistrement ... "
- read
- echo
- fi
- if [ "$IDEF" = "0" ]; then
- if [ ! "$CHAINE" ] ; then
- echo " Il faut spécifier la chaine à enregistrer"
- exit
- fi
- fi
- echo CCAR : $CCAR
- # Si il n'y a pas de nom de fichier, par défaut, on l'appelle
- # selon l'heure d'enregistrement et la chaine (si elle existe)
- # enregistrée.
- if [ ! "$NOMFIC" ]; then
- if [ "$CHAINE" ]; then
- NOMFIC=ENR-"$CCAR".$DATE.avi
- else
- NOMFIC=ENR"$CCAR".$DATE.avi
- fi
- fi
- MV4LOPT=on:driver=v4l:width=$WDEF:height=$HDEF:audiorate=$ADEF:adevice=$ADEV:norm=SECAM:channel=$CHAINE:chanlist=france:input=$IDEF
- # Enregistre avec mencoder
- # Assez efficace à première vue.
- # Le seul problème étant de trouver des options permettant le
- # codage à 25 images par secondes
- echo IDEF : $IDEF
- echo ADEF : $ADEF
- echo ADEV : $ADEV
- echo WDEF : $WDEF
- echo HDEF : $HDEF
- echo CHAINE : $CHAINE
- echo NOMFIC : $NOMFIC
- # echo TEMPSOPT : $TEMPSOPT
- # Options pour libavcodec, à bricoler pour améliorer les choses
- # Parce que là, c'est vraiment pourri.
- LAVCOPTS=vcodec=mjpeg:vhq:v4mv:vme=0:vbitrate=$VBIT
- echo "mencoder -tv $MV4LOPT -ovc lavc -lavcopts $LAVCOPTS -oac mp3lame -o $NOMFIC $TEMPSOPT"
- mencoder -tv $MV4LOPT -ovc lavc -lavcopts $LAVCOPTS -oac mp3lame -o $NOMFIC $TEMPSOPT \
- -vop unsharp=l:-1:c7x7:-1,boxblur=1:1,pp=hb/tn
- # mencoder -tv $MV4LOPT -ovc lavc -lavcopts $LAVCOPTS -oac mp3lame -o $NOMFIC $TEMPSOPT -vop pp=hb/tn
- # ,pp=hb/vb/dr/al/lb/tn
- # Si le répertoire existe (et est
- # accessible en écriture, 'va vraiment falloir s'occuper de ce NFS
- # de merde), on sauvegarde le fichier si l'option -S a été passée
- if [ "$SAUVEGARDE" ]; then
- if [ -d /mnt/nfs/jak/captureTV ]; then
- cp -f $NOMFIC /mnt/nfs/jak/captureTV/
- else
- echo
- echo " ----- ATTENTION -----"
- echo "Pas de sauvegarde par NFS du fichier, problème d'accès"
- echo " ---------------------"
- echo
- fi
- fi
|
Message édité par Jak le 21-02-2003 à 13:44:20
|