::============================================================
::=============== Programme d'encodage du JTX ================
::============================================================
::====== Par Denis Merigoux, inspir‚ de Nicolas Breton =======
::============================================================
::ffmpeg v2.7.2 doit ˆtre plac‚ dans le mˆme dossier que le .bat pour que celui-ci fonctionne.
::Alternativement, on packagera le .bat et ffmpeg.exe … l'int‚rieur d'un unique .exe
::… l'aide de http://www.f2ko.de/en/b2e.php pour plus de portabilit‚ et de protection du code.
::On se r‚fŠrera au site http://ss64.com/ pour la documentation des commandes batch
@echo off
::Titre de la fenˆtre de ligne de commande.
title= ---- Encodeur du JTX ----
::Couleur du texte et du fond
color 0D
::Efface l'‚cran
cls
echo ******************************************************
echo ****************** Encodeur du JTX *******************
echo ******************************************************
echo.
echo Ce programme dispose de deux modes de fonctionnement.
echo.
echo - Dans le mode 1, ce programme encode toutes les vid‚os du dossier
echo dans lequel il est plac‚, puis transfŠre les fichiers originaux
echo dans un dossier Originaux/. Aucune vid‚o n'est donc supprim‚e.
echo.
echo - Dans le mode 2, le programme encode tous les rushes (.MTS, .MXF,
echo .MOV, .MP4, .MVI) pr‚sents dans le dossier et les sous-dossiers de
echo l'endroit o— est situ‚ le programme. Les originaux sont supprim‚s.
echo.
echo *******************************************************
echo Attention, le mode 2 supprime les vid‚os originales !
echo *******************************************************
echo.
choice /C 12 /N /M " S‚lectionne le mode de fonctionnement, [1] ou [2] :"
if errorlevel 2 (
call :recursivemode
)
if errorlevel 1 (
call :normalmode
)
color 0b
title= ---- Encodeur du JTX ---- Encodage termine
cls
echo.
echo ***************************
echo **** Fin de l'encodage ****
echo ***************************
echo.
echo L'encodage du dossier suivant est termin‚ :
echo %cd%
echo.
echo Merci d'avoir choisi l'encodeur du JTX !
echo.
echo Appuie sur une touche pour quitter le programme.
pause >nul
exit
:normalmode
cls
echo.
echo Tu as choisi le mode normal, qui encode toutes les vid‚os pr‚sentes dans ce dossier.
echo.
echo Assure-toi d'ex‚cuter ce programme dans un dossier o— tu as les
echo droits dex‚cution sur tous les fichiers.
echo.
echo Voici la liste des formats d'encodage disponibles :
echo 1 : FullHD 1920x1080 10 Mbits/s 25 i/s
echo 2 : HD 1280x720 3 Mbits/s 25 i/s
echo 3 : Web 854x480 1.5 Mbits/s 25 i/s
echo 4 : Archives 720x576 1.5 Mbits/s 25 i/s
echo.
::Affiche un prompt d'une seule touche
choice /C 1234 /N /M " S‚lectionez le r‚glage en appuyant sur [1], [2], [3] ou [4] :"
::R‚cup‚ration mystique du r‚sultat de choice
::L'ordre des if est important (?!)...
if errorlevel 4 (
echo.
color 0E
echo ********************************************************
echo Encodage au format Archives : 720x576 1.5 Mbits/s 25 i/s
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
::Appel de la routine :encoding avec le paramŠtre 4
call :normalencoding 4
)
if errorlevel 3 (
echo.
color 0E
echo ********************************************************
echo * Encodage au format Web : 854x480 1.5 Mbits/s 25 i/s **
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :normalencoding 3
)
if errorlevel 2 (
echo.
color 0E
echo ********************************************************
echo ****** Encodage en HD : 1280x720 3 Mbits/s 25 i/s ******
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :normalencoding 2
)
if errorlevel 1 (
echo.
color 0E
echo ********************************************************
echo *** Encodage en FullHD : 1920x1080 10 Mbits/s 25 i/s ***
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :normalencoding 1
)
goto:eof
:normalencoding
echo.
::Cr‚er le r‚pertoire des fichiers originaux
md Originaux
color 0a
::Boucle sur tous les fichiers du dossier en cours
::%%a est le nom du fichier
for %%a in (*.*) do (
call :normalencodingcheck %1 "%%a"
)
::Lors de l'ex‚cution, le goto amŠne le programme au label :end.
goto:eof
::V‚rifie si le fichier peut ˆtre encod‚
:normalencodingcheck
set toencode="false"
set extension="%~x2"
::Ci dessous une liste d'extensions correspondant … tous les formats vid‚os usuels
if %extension%==".mkv" set toencode="true"
if %extension%==".MKV" set toencode="true"
if %extension%==".wmv" set toencode="true"
if %extension%==".WMV" set toencode="true"
if %extension%==".ogm" set toencode="true"
if %extension%==".OGM" set toencode="true"
if %extension%==".3gp" set toencode="true"
if %extension%==".3GP" set toencode="true"
if %extension%==".ts" set toencode="true"
if %extension%==".TS" set toencode="true"
if %extension%==".m2ts" set toencode="true"
if %extension%==".M2TS" set toencode="true"
if %extension%==".flv" set toencode="true"
if %extension%==".FLV" set toencode="true"
if %extension%==".m4v" set toencode="true"
if %extension%==".M4V" set toencode="true"
if %extension%==".rm" set toencode="true"
if %extension%==".RM" set toencode="true"
if %extension%==".mvi" set toencode="true"
if %extension%==".MVI" set toencode="true"
if %extension%==".mka" set toencode="true"
if %extension%==".MKA" set toencode="true"
if %extension%==".dvix" set toencode="true"
if %extension%==".DVIX" set toencode="true"
if %extension%==".mks" set toencode="true"
if %extension%==".MKS" set toencode="true"
if %extension%==".avi" set toencode="true"
if %extension%==".AVI" set toencode="true"
if %extension%==".mpg" set toencode="true"
if %extension%==".MPG" set toencode="true"
if %extension%==".webm" set toencode="true"
if %extension%==".WEBM" set toencode="true"
if %extension%==".mp4" set toencode="true"
if %extension%==".MP4" set toencode="true"
if %extension%==".mov" set toencode="true"
if %extension%==".MOV" set toencode="true"
if %extension%==".mts" set toencode="true"
if %extension%==".MTS" set toencode="true"
if %extension%==".mxf" set toencode="true"
if %extension%==".MXF" set toencode="true"
if %toencode%=="true" (
move %2 Originaux/
if %1==1 call :fullhd "Originaux/%~2" "%~np2.mp4"
if %1==2 call :hd "Originaux/%~2" "%~np2.mp4"
if %1==3 call :web "Originaux/%~2" "%~np2.mp4"
if %1==4 call :archives "Originaux/%~2" "%~np2.mp4"
)
::Le label :eof est pr‚defini et permet de retourner … l'endroit du code o— la routine a ‚t‚ appel‚e.
goto:eof
:recursivemode
cls
echo.
echo Tu as choisi le mode r‚cursif, qui encode tous les rushes
echo (.MTS, .MXF, .MOV, .MP4, .MVI) r‚cursivement sur tous les
echo sous-dossiers … partir de l'emplacement du programme.
echo.
echo *******************************************************
echo Attention, le mode 2 supprime les vid‚os originales !
echo *******************************************************
echo.
echo.
choice /C yn /N /M " Veux-tu vraiment lancer ce mode ? [y/n]"
if errorlevel 2 (
exit
)
echo.
echo Assure-toi d'ex‚cuter ce programme dans un dossier o— tu as les
echo droits dex‚cution sur tous les fichiers.
echo.
echo Voici la liste des formats d'encodage disponibles :
echo 1 : FullHD 1920x1080 10 Mbits/s 25 i/s
echo 2 : HD 1280x720 3 Mbits/s 25 i/s
echo 3 : Web 854x480 1.5 Mbits/s 25 i/s
echo 4 : Archives 720x576 1.5 Mbits/s 25 i/s
echo.
::Affiche un prompt d'une seule touche
choice /C 1234 /N /M " S‚lectionez le r‚glage en appuyant sur [1], [2], [3] ou [4] :"
::R‚cup‚ration mystique du r‚sultat de choice
::L'ordre des if est important (?!)...
if errorlevel 4 (
echo.
color 0E
echo ********************************************************
echo Encodage au format Archives : 720x576 1.5 Mbits/s 25 i/s
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
::Appel de la routine :encoding avec le paramŠtre 4
call :recursiveencoding 4
)
if errorlevel 3 (
echo.
color 0E
echo ********************************************************
echo * Encodage au format Web : 854x480 1.5 Mbits/s 25 i/s **
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :recursiveencoding 3
)
if errorlevel 2 (
echo.
color 0E
echo ********************************************************
echo ****** Encodage en HD : 1280x720 3 Mbits/s 25 i/s ******
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :recursiveencoding 2
)
if errorlevel 1 (
echo.
color 0E
echo ********************************************************
echo *** Encodage en FullHD : 1920x1080 10 Mbits/s 25 i/s ***
echo ********************************************************
echo ***** Appuie sur un touche pour lancer l'encodage ******
echo ********************************************************
pause >nul
call :recursiveencoding 1
)
goto:eof
:recursiveencoding
echo.
color 0a
::Boucle sur tous les fichiers du dossier en cours
::%%a est le nom du fichier
for /R %%a in (*.*) do (
call :recursiveencodingcheck %1 "%%a"
)
::Lors de l'ex‚cution, le goto amŠne le programme au label :end.
goto:eof
::V‚rifie si le fichier peut ˆtre encod‚
:recursiveencodingcheck
set toencode="false"
set extension="%~x2"
::Ci dessous une liste d'extensions correspondant … tous les formats de rushes usuels
if %extension%==".mvi" set toencode="true"
if %extension%==".MVI" set toencode="true"
if %extension%==".MP4" set toencode="true"
if %extension%==".MPG" set toencode="true"
if %extension%==".mov" set toencode="true"
if %extension%==".MOV" set toencode="true"
if %extension%==".mts" set toencode="true"
if %extension%==".MTS" set toencode="true"
if %extension%==".mxf" set toencode="true"
if %extension%==".MXF" set toencode="true"
::Comme on rajoute _encode au nom du fichier aprŠs encodage, ce filtre permet de ne pas r‚encoder des fichiers d‚j… encod‚s.
set basename=%~np2
if "%basename:~-7%"=="_encode" set toencode="false"
if %toencode%=="true" (
if %1==1 call :fullhd "%~2" "%~np2_encode.mp4"
if %1==2 call :hd "%~2" "%~np2_encode.mp4"
if %1==3 call :web "%~2" "%~np2_encode.mp4"
if %1==4 call :archives "%~2" "%~np2_encode.mp4"
del "%~2"
)
::Le label :eof est pr‚defini et permet de retourner … l'endroit du code o— la routine a ‚t‚ appel‚e.
goto:eof
::Ci dessous les commandes d'encodage qui font appel … ffmpeg v2.7.2 (https://www.ffmpeg.org/)
::Liste des paramŠtres utilis‚s par les commandes :
:: -i
:: Fichier original … encoder.
:: -threads
:: Nombre de CPU utilis‚s pour r‚aliser l'encodage. Si 0, un maximum de CPU sont utilis‚s.
:: -c:v
:: Codec vid‚o, le JTX a choisi d'utiliser H.264 impl‚ment‚ par la librairie libx264.
:: -b:v
:: Bitrate de la vid‚o en sortie, exprim‚ en bits.
:: -r
:: Framerate de la vid‚o en sortie.
:: -s x
:: R‚solution de la vid‚o en sortie, exprim‚e en pixels.
:: -x264opts
:: Permet de sp‚cifier des options pour la libraire libx264. En l'occurence, on d‚termine
:: ici le level de l'encodage H.264. Plus d'infos ici : https://fr.wikipedia.org/wiki/H.264#Niveaux.
:: -pix_fmt
:: Format d'encodage des pixels. yuv420p est sp‚cifi‚ ici car sinon les vid‚os ne sont pas
:: lisibles par Windows Media Player. Plus d'infos ici : https://ffmpeg.zeranoe.com/forum/viewtopic.php?t=709.
:: -c:a
:: Codec audio de la vid‚o en sortie. Le JTX a choisi AAC.
:: -strict
:: Le codec audio AAC ‚tant une fonctionnalit‚ exp‚rimentale pour ffmpeg 2.7.2, il est n‚cessaire
:: de r‚gler ce paramŠtre sur experimental.
:: -b:a
:: Bitrate de l'audio en sortie. Le JTX a choisi 192k.
:: -y
:: crase automatiquement les fichiers en sortie s'ils existent d‚j… (pas de prompt).
:fullhd
title= ---- Encodeur du JTX ---- Encodage de %1 en FullHD
ffmpeg.exe -i %1 -threads 0 -c:v libx264 -b:v 10M -r 25 -s 1920x1080 -x264opts level=4 -pix_fmt yuv420p -c:a aac -strict experimental -b:a 192k -y %2
goto:eof
:hd
title= ---- Encodeur du JTX ---- Encodage de %1 en HD
ffmpeg.exe -i %1 -threads 0 -c:v libx264 -b:v 3M -r 25 -s 1280x720 -x264opts level=3.1 -pix_fmt yuv420p -c:a aac -strict experimental -b:a 192k -y %2
goto:eof
:web
title= ---- Encodeur du JTX ---- Encodage de %1 au format Web
move %1 Originaux/
ffmpeg.exe -i %1 -threads 0 -c:v libx264 -b:v 1.5M -r 25 -s 854x480 -x264opts level=3 -pix_fmt yuv420p -c:a aac -strict experimental -b:a 192k -y %2
goto:eof
:archives
title= ---- Encodeur du JTX ---- Encodage de %1 au format Archives
ffmpeg.exe -i %1 -threads 0 -c:v libx264 -b:v 1.5M -r 25 -s 720x576 -x264opts level=3 -pix_fmt yuv420p -c:a aac -strict experimental -b:a 192k -y %2
goto:eof