Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/03/2008, à 15:36

Maxouille

un p'ti scripts svp ^^

bonjour,
j'aimerais savoir si qqn pourrais gentillement me creer un script semblable à celui ci-dessous mais pour encoder tout un répertoire de video et non pas vidéo par vidéo

mencoder mavideo.avi -o mavideo.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames

Merci big_smile

source: ici

Hors ligne

#2 Le 05/03/2008, à 16:24

WW

Re : un p'ti scripts svp ^^

Salut,

#!/bin/sh
# Script permettant d'encodage de dossier entier

menu=$(zenity --list --column="Choix" --column=" " --height="250" --width="350" --radiolist --text="Que voulez-vous faire ??\nEncoder :" --title="Menu" false "Vidéos" false "Dossiers" false "Vidéos provenant de dossiers différents")

if [ "$menu" = "" ]; then
        exit 0;
fi

if [ "$menu" = "Dossiers" ]; then # Traite n dossier(s)

    selection=$(zenity --file-selection --multiple --directory --title="Sélection de dossier") # Sélection de dossier

    if [ "$selection" = "" ]; then # L'utilisateur à cliquer sur annuler
        exit 0;
    else

        fin=`expr "$selection" : '.*|\(.*\)'`
    
        if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul dossier
            fin=$selection    
        fi


# La boucle while traite tout les dossiers sélectionnés sauf le dernier
        while [ "$selection" != "$fin" ] ; do
            courant=`expr "$selection" : '\([^|]*|\)'`
            selection=${selection#$courant}
            courant=${courant%|}

            cd "$courant"

	     	for i in *.avi *.AVI; do # Pour les vidéos au différents formats #@
                	mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
            	done
	done

# On le traire donc à la fin de la boucle while
        cd "$fin"

	     	for i in *.avi *.AVI; do # Pour les vidéos au différents formats #@
                	mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
            	done
    fi        

    zenity --info --text="L'encodage fini" --title="Merci !!!"

elif [ "$menu" = "Vidéos" -o "$menu" = "Vidéos provenant de dossiers différents" ]; then # Traite n vidéo(s)

    if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
        
        zenity --info --text="Une fenêtre de sélection va apparaître, sélectionner alors les Vidéos de votre premier dossier et valider.\n\nUne nouvelle fenêtre s'ouvrira alors pour la sélection des Vidéos du dossier suivant.\n\nUne fois que vous avez sélectionné et validé toutes les Vidéos désirées, cliquer sur Annuler." --title=">Utilisation<"

    fi

    selection=$(zenity --file-selection --multiple --title="Sélection de vidéo") # Sélection de vidéo

    if [ "$menu" = "Vidéos provenant de dossiers différents" -a "$selection" != "" ]; then

        while [ "$selection" != "" ]; do
            multirep=$multirep"|$selection"
            selection=$(zenity --file-selection --multiple --title="Sélection de vidéo")
        done
    elif [ "$selection" = "" ]; then
        exit 0;
    fi

    if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
        selection=${multirep#|}
    fi

    fin=`expr "$selection" : '.*|\(.*\)'`

    if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul fichier
        fin=$selection    
    fi

    while [ "$selection" != "$fin" ]; do
        courant=`expr "$selection" : '\([^|]*|\)'`
        selection=${selection#$courant}
        courant=${courant%|}

        mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
    done
        
	mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
    
    zenity --info --text="L'encodage est finie." --title="Merci !!!"
fi

Avec ça tu dois pouvoir encoder un dossier en entier mais aussi plusieurs dossiers d'un coup (à condition qu'il soit dans le même répertoire/dossier père) en maintenant la touche Ctrl lors de tes clics souris.

Remarque : il n'y a pas de barre de progression juste un message lorsque c'est fini. Je verrais plus tard. wink

Dernière modification par WW (Le 05/03/2008, à 16:30)


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne

#3 Le 05/03/2008, à 16:35

Maxouille

Re : un p'ti scripts svp ^^

Ca a l'air de marcher, jte tiens au courant
Merci beaucoup big_smile

Remarque, ça aurait pu etre bien de rajouter le nom de la video qui est en train d'étre encodé smile

Dernière modification par Maxouille (Le 05/03/2008, à 16:36)

Hors ligne

#4 Le 08/03/2008, à 11:35

Maxouille

Re : un p'ti scripts svp ^^

Bon comme je t'avais dit je te tiens au courant. Ton script a bien marché mais j'ai quelques problèmes/améliorations que tu pourrais faire smile

-Certaines videos ont étés ignorés (pourtant ils ont des nom normaux)
-Savoir quel video est en train dêtre encoder en se moment
-Et surtout, quand le fichier .flv existe déjà, qu'il le remplace pas tongue mais l'ignore

Voila
Dis moi les prochaines mises a jours si tu en fait wink
Merci

Hors ligne

#5 Le 09/03/2008, à 18:54

WW

Re : un p'ti scripts svp ^^

Salut,

Changelog :

-> Nom de la vidéo encodée avec une pseudo-bar de progression
-> Eviter l'encodage lorsque le fichier .flv existe déjà
-> Nommage vidéo.flv et plus vidéo.avi.flv
-> Clarification du code avec la fonction traitement

Le dernier point va te permettre de modifier très simplement le code si tu veux appliquer un traitement différent.

#!/bin/sh
# Script permettant d'encodage de dossier entier

traitement() { 
	mencoder "$1" -o "${1%avi}"flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames 2>&1 | zenity --progress --pulsate --title="Encodage en cours" --text="Vidéo : $1" --auto-close;
}

# Fin des définitions de fonctions

menu=$(zenity --list --column="Choix" --column=" " --height="250" --width="350" --radiolist --text="Que voulez-vous faire ??\nEncoder :" --title="Menu" false "Vidéos" false "Dossiers" false "Vidéos provenant de dossiers différents")

if [ "$menu" = "" ]; then
        exit 0;
fi

if [ "$menu" = "Dossiers" ]; then # Traite n dossier(s)

    selection=$(zenity --file-selection --multiple --directory --title="Sélection de dossier") # Sélection de dossier

    if [ "$selection" = "" ]; then # L'utilisateur à cliquer sur annuler
	exit 0;
    else

        fin=`expr "$selection" : '.*|\(.*\)'`
    
        if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul dossier
            fin=$selection    
        fi


# La boucle while traite tout les dossiers sélectionnés sauf le dernier
        while [ "$selection" != "$fin" ] ; do
            courant=`expr "$selection" : '\([^|]*|\)'`
            selection=${selection#$courant}
            courant=${courant%|}

            cd "$courant"

	     	for i in *.avi *.AVI; do
			if [ ! -e "$i".flv ]; then # Permet d'éviter d'écraser les .flv existants
	                	traitement $i
			fi        
	    	done
	done

# On le traire donc à la fin de la boucle while
        cd "$fin"

	     	for i in *.avi *.AVI; do
			if [ ! -e "$i".flv ]; then # Permet d'éviter d'écraser les .flv existants
	                	traitement $i
			fi    
            	done
    fi        

    zenity --info --text="L'encodage fini" --title="Merci !!!"

elif [ "$menu" = "Vidéos" -o "$menu" = "Vidéos provenant de dossiers différents" ]; then # Traite n vidéo(s)

    if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
        
        zenity --info --text="Une fenêtre de sélection va apparaître, sélectionner alors les Vidéos de votre premier dossier et valider.\n\nUne nouvelle fenêtre s'ouvrira alors pour la sélection des Vidéos du dossier suivant.\n\nUne fois que vous avez sélectionné et validé toutes les Vidéos désirées, cliquer sur Annuler." --title=">Utilisation<"

    fi

    selection=$(zenity --file-selection --multiple --title="Sélection de vidéo") # Sélection de vidéo

    if [ "$menu" = "Vidéos provenant de dossiers différents" -a "$selection" != "" ]; then

        while [ "$selection" != "" ]; do
            multirep=$multirep"|$selection"
            selection=$(zenity --file-selection --multiple --title="Sélection de vidéo")
        done
    elif [ "$selection" = "" ]; then
        exit 0;
    fi

    if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
        selection=${multirep#|}
    fi

    fin=`expr "$selection" : '.*|\(.*\)'`

    if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul fichier
        fin=$selection    
    fi

    while [ "$selection" != "$fin" ]; do
        courant=`expr "$selection" : '\([^|]*|\)'`
        selection=${selection#$courant}
        courant=${courant%|}
	if [ ! -e "$courant".flv ]; then # Permet d'éviter d'écraser les .flv existants
	       	traitement $courant
	fi    
    done
  	if [ ! -e "$fin".flv ]; then # Permet d'éviter d'écraser les .flv existants
               	traitement $fin
	fi           
    
    zenity --info --text="L'encodage est finie." --title="Merci !!!"
fi

En espérant que tout fonctionne tongue.


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne

#6 Le 09/03/2008, à 21:46

Maxouille

Re : un p'ti scripts svp ^^

Ok je testerais un peu plus tard smile merci
Pourquoi pas faire un logiciel complet ?

edit: c'est pas mal du tout la nouvelle barre par contre on a plus les pourcents (si on lance le script dans un terminal) c'est dommage ...

Dernière modification par Maxouille (Le 09/03/2008, à 21:50)

Hors ligne

#7 Le 13/03/2008, à 21:31

WW

Re : un p'ti scripts svp ^^

Salut,

Qu'entend par faire un logiciel complet ?? (un .deb de ce script ou plutôt un frontend pour mencoder qui serai bien sûr beaucoup plus long à faire et qui existe déjà).
Pour le frontend, regarde ici.

Pour le problème des %, je les ai justement detournés pour les rediriger et filtrer ça avec zenity.


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne