Ei kuvausta

JTX-Encoder.bat 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. ::============================================================
  2. ::=============== Programme d'encodage du JTX ================
  3. ::============================================================
  4. ::====== Par Denis Merigoux, inspir‚ de Nicolas Breton =======
  5. ::============================================================
  6. ::ffmpeg v2.7.2 doit ˆtre plac‚ dans le mˆme dossier que le .bat pour que celui-ci fonctionne.
  7. ::Alternativement, on packagera le .bat et ffmpeg.exe … l'int‚rieur d'un unique .exe
  8. ::… l'aide de http://www.f2ko.de/en/b2e.php pour plus de portabilit‚ et de protection du code.
  9. ::On se r‚fŠrera au site http://ss64.com/ pour la documentation des commandes batch
  10. @echo off
  11. ::Titre de la fenˆtre de ligne de commande.
  12. title= ---- Encodeur du JTX ----
  13. ::Couleur du texte et du fond
  14. color 0D
  15. ::Efface l'‚cran
  16. cls
  17. echo ******************************************************
  18. echo ****************** Encodeur du JTX *******************
  19. echo ******************************************************
  20. echo.
  21. echo Ce programme dispose de deux modes de fonctionnement.
  22. echo.
  23. echo - Dans le mode 1, ce programme encode toutes les vid‚os du dossier
  24. echo dans lequel il est plac‚, puis transfŠre les fichiers originaux
  25. echo dans un dossier Originaux/. Aucune vid‚o n'est donc supprim‚e.
  26. echo.
  27. echo - Dans le mode 2, le programme encode tous les rushes (.MTS, .MXF,
  28. echo .MOV, .MP4, .MVI) pr‚sents dans le dossier et les sous-dossiers de
  29. echo l'endroit o— est situ‚ le programme. Les originaux sont supprim‚s.
  30. echo.
  31. echo *******************************************************
  32. echo Attention, le mode 2 supprime les vid‚os originales !
  33. echo *******************************************************
  34. echo.
  35. choice /C 12 /N /M " S‚lectionne le mode de fonctionnement, [1] ou [2] :"
  36. if errorlevel 2 (
  37. call :recursivemode
  38. )
  39. if errorlevel 1 (
  40. call :normalmode
  41. )
  42. color 0b
  43. title= ---- Encodeur du JTX ---- Encodage termine
  44. cls
  45. echo.
  46. echo ***************************
  47. echo **** Fin de l'encodage ****
  48. echo ***************************
  49. echo.
  50. echo L'encodage du dossier suivant est termin‚ :
  51. echo %cd%
  52. echo.
  53. echo Merci d'avoir choisi l'encodeur du JTX !
  54. echo.
  55. echo Appuie sur une touche pour quitter le programme.
  56. pause >nul
  57. exit
  58. :normalmode
  59. cls
  60. echo.
  61. echo Tu as choisi le mode normal, qui encode toutes les vid‚os pr‚sentes dans ce dossier.
  62. echo.
  63. echo Assure-toi d'ex‚cuter ce programme dans un dossier o— tu as les
  64. echo droits dex‚cution sur tous les fichiers.
  65. echo.
  66. echo Voici la liste des formats d'encodage disponibles :
  67. echo 1 : FullHD 1920x1080 10 Mbits/s 25 i/s
  68. echo 2 : HD 1280x720 3 Mbits/s 25 i/s
  69. echo 3 : Web 854x480 1.5 Mbits/s 25 i/s
  70. echo 4 : Archives 720x576 1.5 Mbits/s 25 i/s
  71. echo.
  72. ::Affiche un prompt d'une seule touche
  73. choice /C 1234 /N /M " S‚lectionez le r‚glage en appuyant sur [1], [2], [3] ou [4] :"
  74. ::R‚cup‚ration mystique du r‚sultat de choice
  75. ::L'ordre des if est important (?!)...
  76. if errorlevel 4 (
  77. echo.
  78. color 0E
  79. echo ********************************************************
  80. echo Encodage au format Archives : 720x576 1.5 Mbits/s 25 i/s
  81. echo ********************************************************
  82. echo ***** Appuie sur un touche pour lancer l'encodage ******
  83. echo ********************************************************
  84. pause >nul
  85. ::Appel de la routine :encoding avec le paramŠtre 4
  86. call :normalencoding 4
  87. )
  88. if errorlevel 3 (
  89. echo.
  90. color 0E
  91. echo ********************************************************
  92. echo * Encodage au format Web : 854x480 1.5 Mbits/s 25 i/s **
  93. echo ********************************************************
  94. echo ***** Appuie sur un touche pour lancer l'encodage ******
  95. echo ********************************************************
  96. pause >nul
  97. call :normalencoding 3
  98. )
  99. if errorlevel 2 (
  100. echo.
  101. color 0E
  102. echo ********************************************************
  103. echo ****** Encodage en HD : 1280x720 3 Mbits/s 25 i/s ******
  104. echo ********************************************************
  105. echo ***** Appuie sur un touche pour lancer l'encodage ******
  106. echo ********************************************************
  107. pause >nul
  108. call :normalencoding 2
  109. )
  110. if errorlevel 1 (
  111. echo.
  112. color 0E
  113. echo ********************************************************
  114. echo *** Encodage en FullHD : 1920x1080 10 Mbits/s 25 i/s ***
  115. echo ********************************************************
  116. echo ***** Appuie sur un touche pour lancer l'encodage ******
  117. echo ********************************************************
  118. pause >nul
  119. call :normalencoding 1
  120. )
  121. goto:eof
  122. :normalencoding
  123. echo.
  124. ::Cr‚er le r‚pertoire des fichiers originaux
  125. md Originaux
  126. color 0a
  127. ::Boucle sur tous les fichiers du dossier en cours
  128. ::%%a est le nom du fichier
  129. for %%a in (*.*) do (
  130. call :normalencodingcheck %1 "%%a"
  131. )
  132. ::Lors de l'ex‚cution, le goto amŠne le programme au label :end.
  133. goto:eof
  134. ::V‚rifie si le fichier peut ˆtre encod‚
  135. :normalencodingcheck
  136. set toencode="false"
  137. set extension="%~x2"
  138. ::Ci dessous une liste d'extensions correspondant … tous les formats vid‚os usuels
  139. if %extension%==".mkv" set toencode="true"
  140. if %extension%==".MKV" set toencode="true"
  141. if %extension%==".wmv" set toencode="true"
  142. if %extension%==".WMV" set toencode="true"
  143. if %extension%==".ogm" set toencode="true"
  144. if %extension%==".OGM" set toencode="true"
  145. if %extension%==".3gp" set toencode="true"
  146. if %extension%==".3GP" set toencode="true"
  147. if %extension%==".ts" set toencode="true"
  148. if %extension%==".TS" set toencode="true"
  149. if %extension%==".m2ts" set toencode="true"
  150. if %extension%==".M2TS" set toencode="true"
  151. if %extension%==".flv" set toencode="true"
  152. if %extension%==".FLV" set toencode="true"
  153. if %extension%==".m4v" set toencode="true"
  154. if %extension%==".M4V" set toencode="true"
  155. if %extension%==".rm" set toencode="true"
  156. if %extension%==".RM" set toencode="true"
  157. if %extension%==".mvi" set toencode="true"
  158. if %extension%==".MVI" set toencode="true"
  159. if %extension%==".mka" set toencode="true"
  160. if %extension%==".MKA" set toencode="true"
  161. if %extension%==".dvix" set toencode="true"
  162. if %extension%==".DVIX" set toencode="true"
  163. if %extension%==".mks" set toencode="true"
  164. if %extension%==".MKS" set toencode="true"
  165. if %extension%==".avi" set toencode="true"
  166. if %extension%==".AVI" set toencode="true"
  167. if %extension%==".mpg" set toencode="true"
  168. if %extension%==".MPG" set toencode="true"
  169. if %extension%==".webm" set toencode="true"
  170. if %extension%==".WEBM" set toencode="true"
  171. if %extension%==".mp4" set toencode="true"
  172. if %extension%==".MP4" set toencode="true"
  173. if %extension%==".mov" set toencode="true"
  174. if %extension%==".MOV" set toencode="true"
  175. if %extension%==".mts" set toencode="true"
  176. if %extension%==".MTS" set toencode="true"
  177. if %extension%==".mxf" set toencode="true"
  178. if %extension%==".MXF" set toencode="true"
  179. if %toencode%=="true" (
  180. move %2 Originaux/
  181. if %1==1 call :fullhd "Originaux/%~2" "%~np2.mp4"
  182. if %1==2 call :hd "Originaux/%~2" "%~np2.mp4"
  183. if %1==3 call :web "Originaux/%~2" "%~np2.mp4"
  184. if %1==4 call :archives "Originaux/%~2" "%~np2.mp4"
  185. )
  186. ::Le label :eof est pr‚defini et permet de retourner … l'endroit du code o— la routine a ‚t‚ appel‚e.
  187. goto:eof
  188. :recursivemode
  189. cls
  190. echo.
  191. echo Tu as choisi le mode r‚cursif, qui encode tous les rushes
  192. echo (.MTS, .MXF, .MOV, .MP4, .MVI) r‚cursivement sur tous les
  193. echo sous-dossiers … partir de l'emplacement du programme.
  194. echo.
  195. echo *******************************************************
  196. echo Attention, le mode 2 supprime les vid‚os originales !
  197. echo *******************************************************
  198. echo.
  199. echo.
  200. choice /C yn /N /M " Veux-tu vraiment lancer ce mode ? [y/n]"
  201. if errorlevel 2 (
  202. exit
  203. )
  204. echo.
  205. echo Assure-toi d'ex‚cuter ce programme dans un dossier o— tu as les
  206. echo droits dex‚cution sur tous les fichiers.
  207. echo.
  208. echo Voici la liste des formats d'encodage disponibles :
  209. echo 1 : FullHD 1920x1080 10 Mbits/s 25 i/s
  210. echo 2 : HD 1280x720 3 Mbits/s 25 i/s
  211. echo 3 : Web 854x480 1.5 Mbits/s 25 i/s
  212. echo 4 : Archives 720x576 1.5 Mbits/s 25 i/s
  213. echo.
  214. ::Affiche un prompt d'une seule touche
  215. choice /C 1234 /N /M " S‚lectionez le r‚glage en appuyant sur [1], [2], [3] ou [4] :"
  216. ::R‚cup‚ration mystique du r‚sultat de choice
  217. ::L'ordre des if est important (?!)...
  218. if errorlevel 4 (
  219. echo.
  220. color 0E
  221. echo ********************************************************
  222. echo Encodage au format Archives : 720x576 1.5 Mbits/s 25 i/s
  223. echo ********************************************************
  224. echo ***** Appuie sur un touche pour lancer l'encodage ******
  225. echo ********************************************************
  226. pause >nul
  227. ::Appel de la routine :encoding avec le paramŠtre 4
  228. call :recursiveencoding 4
  229. )
  230. if errorlevel 3 (
  231. echo.
  232. color 0E
  233. echo ********************************************************
  234. echo * Encodage au format Web : 854x480 1.5 Mbits/s 25 i/s **
  235. echo ********************************************************
  236. echo ***** Appuie sur un touche pour lancer l'encodage ******
  237. echo ********************************************************
  238. pause >nul
  239. call :recursiveencoding 3
  240. )
  241. if errorlevel 2 (
  242. echo.
  243. color 0E
  244. echo ********************************************************
  245. echo ****** Encodage en HD : 1280x720 3 Mbits/s 25 i/s ******
  246. echo ********************************************************
  247. echo ***** Appuie sur un touche pour lancer l'encodage ******
  248. echo ********************************************************
  249. pause >nul
  250. call :recursiveencoding 2
  251. )
  252. if errorlevel 1 (
  253. echo.
  254. color 0E
  255. echo ********************************************************
  256. echo *** Encodage en FullHD : 1920x1080 10 Mbits/s 25 i/s ***
  257. echo ********************************************************
  258. echo ***** Appuie sur un touche pour lancer l'encodage ******
  259. echo ********************************************************
  260. pause >nul
  261. call :recursiveencoding 1
  262. )
  263. goto:eof
  264. :recursiveencoding
  265. echo.
  266. color 0a
  267. ::Boucle sur tous les fichiers du dossier en cours
  268. ::%%a est le nom du fichier
  269. for /R %%a in (*.*) do (
  270. call :recursiveencodingcheck %1 "%%a"
  271. )
  272. ::Lors de l'ex‚cution, le goto amŠne le programme au label :end.
  273. goto:eof
  274. ::V‚rifie si le fichier peut ˆtre encod‚
  275. :recursiveencodingcheck
  276. set toencode="false"
  277. set extension="%~x2"
  278. ::Ci dessous une liste d'extensions correspondant … tous les formats de rushes usuels
  279. if %extension%==".mvi" set toencode="true"
  280. if %extension%==".MVI" set toencode="true"
  281. if %extension%==".MP4" set toencode="true"
  282. if %extension%==".MPG" set toencode="true"
  283. if %extension%==".mov" set toencode="true"
  284. if %extension%==".MOV" set toencode="true"
  285. if %extension%==".mts" set toencode="true"
  286. if %extension%==".MTS" set toencode="true"
  287. if %extension%==".mxf" set toencode="true"
  288. if %extension%==".MXF" set toencode="true"
  289. ::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.
  290. set basename=%~np2
  291. if "%basename:~-7%"=="_encode" set toencode="false"
  292. if %toencode%=="true" (
  293. if %1==1 call :fullhd "%~2" "%~np2_encode.mp4"
  294. if %1==2 call :hd "%~2" "%~np2_encode.mp4"
  295. if %1==3 call :web "%~2" "%~np2_encode.mp4"
  296. if %1==4 call :archives "%~2" "%~np2_encode.mp4"
  297. IF NOT ERRORLEVEL 1 del "%~2"
  298. )
  299. ::Le label :eof est pr‚defini et permet de retourner … l'endroit du code o— la routine a ‚t‚ appel‚e.
  300. goto:eof
  301. ::Ci dessous les commandes d'encodage qui font appel … ffmpeg v2.7.2 (https://www.ffmpeg.org/)
  302. ::Liste des paramŠtres utilis‚s par les commandes :
  303. :: -i <input>
  304. :: Fichier original … encoder.
  305. :: -threads <number>
  306. :: Nombre de CPU utilis‚s pour r‚aliser l'encodage. Si 0, un maximum de CPU sont utilis‚s.
  307. :: -c:v <codec>
  308. :: Codec vid‚o, le JTX a choisi d'utiliser H.264 impl‚ment‚ par la librairie libx264.
  309. :: -b:v <number>
  310. :: Bitrate de la vid‚o en sortie, exprim‚ en bits.
  311. :: -r <number>
  312. :: Framerate de la vid‚o en sortie.
  313. :: -s <width>x<hright>
  314. :: R‚solution de la vid‚o en sortie, exprim‚e en pixels.
  315. :: -x264opts <options>
  316. :: Permet de sp‚cifier des options pour la libraire libx264. En l'occurence, on d‚termine
  317. :: ici le level de l'encodage H.264. Plus d'infos ici : https://fr.wikipedia.org/wiki/H.264#Niveaux.
  318. :: -pix_fmt <format>
  319. :: Format d'encodage des pixels. yuv420p est sp‚cifi‚ ici car sinon les vid‚os ne sont pas
  320. :: lisibles par Windows Media Player. Plus d'infos ici : https://ffmpeg.zeranoe.com/forum/viewtopic.php?t=709.
  321. :: -c:a <codec>
  322. :: Codec audio de la vid‚o en sortie. Le JTX a choisi AAC.
  323. :: -strict <strictness>
  324. :: Le codec audio AAC ‚tant une fonctionnalit‚ exp‚rimentale pour ffmpeg 2.7.2, il est n‚cessaire
  325. :: de r‚gler ce paramŠtre sur experimental.
  326. :: -b:a <number>
  327. :: Bitrate de l'audio en sortie. Le JTX a choisi 192k.
  328. :: -y
  329. :: �crase automatiquement les fichiers en sortie s'ils existent d‚j… (pas de prompt).
  330. :fullhd
  331. title= ---- Encodeur du JTX ---- Encodage de %1 en FullHD
  332. 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
  333. goto:eof
  334. :hd
  335. title= ---- Encodeur du JTX ---- Encodage de %1 en HD
  336. 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
  337. goto:eof
  338. :web
  339. title= ---- Encodeur du JTX ---- Encodage de %1 au format Web
  340. 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
  341. goto:eof
  342. :archives
  343. title= ---- Encodeur du JTX ---- Encodage de %1 au format Archives
  344. 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
  345. goto:eof