[info] Script bat de conversion video en flv

  • Auteur de la discussion marsien
  • Date de début

marsien

Grand Maître
Salut,

Je ne sais pas si ça peut intéresser quelqu'un (à part DartyDuck et moi-même), mais j'ai réalisé hier un petit script bat (pour Windows donc) afin de convertir toute sorte de vidéos en .flv (vidéo Flash). Ca peut servir pour ceux qui veulent mettre ce type de vidéos sur leur site Web.

Ce script utilise les possibilités du convertisseur Mencoder, dans sa version compilée pour Windows. Voir le site officiel :
Vous pouvez télécharger mon script fourni avec Mencoder

Vous trouverez ci-dessous le script dans sa version actuelle (3.0) :
[cpp]@ECHO off
ECHO Convertir vos videos en videos Flash (.flv)
ECHO === Par marsien(c) 2007 ===
ECHO === Base sur Mencoder ===
ECHO === version 3.0 :: 2007-06-23 ===
ECHO.

:: on définit les valeurs par défaut
SET _cut=N
SET fps_defaut=15
SET audio_br_defaut=64
SET video_br_defaut=500
SET cut_start_defaut=0
SET ratio_defaut=3
SET mod_height=N
SET tx_ech_defaut=2
SET _ss=
SET _endpos=

:: on vérifie si mencoder.exe existe
IF NOT EXIST mencoder.exe (
ECHO le fichier mencoder.exe n'existe pas. Veuillez le copier dans ce repertoire.
GOTO fin
)

ECHO.
ECHO = Fichiers =
:: on demande le nom du fichier à convertir
:input
SET /P _input="nom du fichier a convertir ? "
IF NOT EXIST %_input% (
ECHO le fichier n'existe pas
GOTO input
)

:: on demande le nom du fichier .flv
SET /P _output="nom du fichier Flash video ? "

ECHO.
ECHO = Decoupage =
:: on demande si on veut couper la vidéo
SET /P _cut="voulez-vous couper la video (o/N) ? "
IF /I %_cut% == O (
GOTO cutVid
) ELSE (
GOTO video
)

:: on coupe la vidéo
:cutVid
SET /P cut_start="depart de la coupure (en s, par defaut : 0) ? "
IF NOT DEFINED cut_start SET cut_start=%cut_start_defaut%
SET _ss=-ss %cut_start%
:endCut
SET /P cut_end="fin de la coupure (en s) ? "
IF NOT DEFINED cut_end GOTO endCut
SET /A duree = cut_end - cut_start
IF %duree% LEQ 0 (
ECHO le temps de fin doit etre superieur au temps de depart
ECHO.
GOTO endCut
) ELSE (
SET _endpos=-endpos %duree%
)

:video
ECHO.
ECHO = Parametres video =
:: on demande le nombre d'image par seconde désiré (25 max)
:ofps
SET /P fps="nombre d'images par seconde (25 max, par defaut : 15) ? "
IF NOT DEFINED fps SET fps=%fps_defaut%
IF %fps% GTR 25 (
ECHO le nombre d'images par seconde doit etre inferieur a 25
ECHO.
GOTO ofps
)

:: on demande le format de la vidéo
:ar
ECHO.
ECHO choisissez le format de votre video :
ECHO 1. 4/3
ECHO 2. 16/9
ECHO 3. autre (par defaut)
SET /P ratio="Quel est votre choix ? "
IF NOT DEFINED ratio SET ratio=%ratio_defaut%
IF %ratio% GTR 3 (
ECHO votre choix n'est pas valide
GOTO ar
)

:: on demande la largeur finale de l'image
SET /P width="largeur de la video Flash (en pixels) ? "

:: on estime la hauteur en fonction du choix de format et de la largeur indiquée
IF %ratio% == 3 GOTO newHeight
IF %ratio% == 1 (
SET /A est_height = width * 3 / 4
)
IF %ratio% == 2 (
SET /A est_height = width * 16 / 9
)
SET /P mod_height="la hauteur calculee est de %est_height% px ; voulez-vous la modifier (o/N) ? "
IF /I %mod_height% == O (
GOTO newHeight
) ELSE (
SET height=%est_height%
GOTO vbr
)

:: on demande la hauteur si celle estimée n'est pas bonne
:newHeight
SET /P height="hauteur de la video Flash (en pixels) ? "

ECHO.
ECHO = Parametres audio =
:: on demande le bitrate video (5000 max et 500 par défaut)
:vbr
SET /P video_br="debit video (5000 kb/s max ; par defaut : 500 kb/s) ? "
IF NOT DEFINED video_br SET video_br=%video_br_defaut%
IF %video_br% GTR 5000 (
ECHO la qualite video max est de 5000
ECHO.
GOTO vbr
)

:: on demande le bitrate audio (320 max et 96 par défaut)
:abr
SET /P audio_br="debit audio (320 kb/s max ; par defaut : 64 kb/s) ? "
IF NOT DEFINED audio_br SET audio_br=%audio_br_defaut%
IF %audio_br% GTR 320 (
ECHO la qualite audio max est de 320
GOTO abr
)

:: on demande le taux d'échantillonnage audio (44100 Hz par défaut)
:txEch
ECHO choisissez le taux d'echantillonnage audio
ECHO 1. 11 025 Hz
ECHO 2. 22 050 Hz (choix par defaut)
ECHO 3. 44 100 Hz
SET /P tx_ech="quel est votre choix ? "
IF NOT DEFINED tx_ech SET tx_ech=%tx_ech_defaut%
IF %tx_ech% GTR 3 (
ECHO votre choix n'est pas valide
GOTO txEch
)
IF %tx_ech% == 1 SET audio_ech=11025
IF %tx_ech% == 2 SET audio_ech=22050
IF %tx_ech% == 3 SET audio_ech=44100

:: on réalise l'encodage (-ss pour point de départ de la vidéo et -endpos pour la durée de la vidéo)
mencoder %_input% -ofps %fps% %_ss% %_endpos% -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames:format=flv -ovc lavc -lavcopts vcodec=flv:vbitrate=%video_br%:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=%width%:%height% -oac mp3lame -lameopts cbr:br=%audio_br% -srate %audio_ech% -ffourcc FLV -o %_output%

:: erreur de conversion
IF ERRORLEVEL 1 GOTO erreur
GOTO fin

:erreur
ECHO echec de la conversion

:: on quitte le convertisseur
:fin
ECHO.
ECHO = Fin de la conversion =
PAUSE[/cpp]

Bien entendu, libre à vous de le modifier et de l'améliorer. Je suis d'ailleurs preneur de toute remarques à son sujet.

Enfin, j'aimerais bien un peu d'aide pour savoir comment (si c'est possible) gérer les erreurs pouvant intervenir lors de son exécution ?

Merci :)
Et bonne journée
 

batchy

Grand Maître
tu vérifie même pas la valeur de retour de mencoder ?
[fixed]if errorlevel 1 goto erreur
goto fin
:erreur
echo Erreur lors de la conversion.[/fixed]
 

marsien

Grand Maître
C'est vrai :merci:

C'est bien pour ça que je demandais. :) J'ai pas encore trop regardé la gestion des erreurs par les batch de Windows ;)
 

marsien

Grand Maître

Et voilà, c'est ajouté. Je n'avais pas pu le faire avant aujourd'hui, n'étant pas là ;)

Merci Batchy, je vais maintenant prendre un peu de temps pour comprendre les ERRORLEVEL et comment s'en servir utilement :merci:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 831
Membres
1 586 367
Dernier membre
ramkin
Partager cette page
Haut