Automatisation de compression en DivX - Traitement Vidéo - Video & Son
Marsh Posté le 29-11-2005 à 05:34:04
Le plus simple c'est d'utiliser mencoder. Mencoder fait partie du package Mplayer : http://www.mplayerhq.hu/
Il suffit de télécharger la version Win32 de Mplayer et dézipper quelque part.
Voici un script VBS qui réencode au bitrate 1200 kb/s. Si tu glisses 10 fichiers il fera les 10, sauf si tu cliques sur 'annuler' lorsqu'il demande la confirmation. Si tu ne cliques pas, l'encodage démarre au bout de 10 secondes.
Le script met le bitrate à 1200, crée un XviD+MP3, et ne change pas la taille de l'image.
Une fois le script créé et copié dans le répertoire de mencoder il suffit de faire un raccourci sur le bureau et de lâcher tes fichiers à réencoder dessus. A créer en tant que Recode.vbs :
Dim FSO
Dim filename
Dim cmd
Dim i
Dim res
Set FSO = CreateObject("Scripting.FileSystemObject" )
If WScript.arguments.length = 0 Then
WScript.Echo "Please drop at least one file"
WScript.Quit
End If
For i=0 to WScript.arguments.length - 1
filename = WScript.arguments.item(i)
'cmd = """" & FSO.GetParentFolderName(WScript.ScriptFullName) + "\mencoder.exe"" -ovc xvid -xvidencopts quant_type=mpeg:fixed_quant=4:me_quality=6:vhq=4:trellis -vf harddup -oac mp3lame -lameopts mode=1:cbr:br=128 -af volnorm -af-adv force=0 """ + filename + """ -o """ + FSO.GetParentFolderName(filename) + "\recoded." + FSO.GetBaseName(filename) + ".avi"""
cmd = """" & FSO.GetParentFolderName(WScript.ScriptFullName) + "\mencoder.exe"" -ovc xvid -xvidencopts quant_type=mpeg:bitrate=1200:me_quality=6:vhq=4:trellis -oac mp3lame -lameopts mode=1:cbr:br=128 -af volnorm -af-adv force=0 """ + filename + """ -o """ + FSO.GetParentFolderName(filename) + "\recoded." + FSO.GetBaseName(filename) + ".avi"""
Dim WshShell
Set WshShell = CreateObject("Wscript.Shell" )
Set WshSysEnv = WshShell.Environment("SYSTEM" )
res = WshShell.Popup("Now encoding: " + FSO.GetFileName(filename), 10, "Recode", 1 + 64) ' OK / Cancel
If res = 2 Then
WScript.Quit
End if
' Settings for intWindowStyle.
'
' 0 Hide the window and activate another window.
' 1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time.
' 2 Activate & minimize.
' 3 Activate & maximize.
' 4 Restore. The active window remains active.
' 5 Activate & Restore.
' 6 Minimize & activate the next top-level window in the Z order.
' 7 Minimize. The active window remains active.
' 8 Display the window in its current state. The active window remains active.
' 9 Restore & Activate. Specify this flag when restoring a minimized window.
' 10 Sets the show-state based on the state of the program that started the application. Example
WshShell.Run cmd, 8, True
Next
Marsh Posté le 29-11-2005 à 13:23:48
Tout bonnement génial !
J'ai modifié un peu le script pour mieux l'adapter à mes besoins, mais c'est "exactement" ce que je voulais :-)
Merci !!!!!!!!
Marsh Posté le 30-11-2005 à 07:47:29
Je peux te demander ce que tu as modifié ? Ca pourrait servir à d'autres...
Marsh Posté le 30-11-2005 à 08:56:54
En fait je n'ai pas modifié grand chose pour tester, j'ai juste évité que ça me renomme mon fichier (vu que je passe de MPG en AVI, je ne change que l'extension et ne rajoute pas le préfixe "recomp.".
J'ai changé le temps d'attente du message à 1s au lieu de 10s.
Et je pense que je rajouterais la suppression du fichier source à la fin de la compression.
Autre chose qui serait utile (je ne sais pas si je le ferais, je n'en ai pas forcément l'utilité), c'est de gérer une liste d'arguments + importante (au dessus de 20 fichiers, le nombre d'arguments est trop important pour l'exécutable), donc par exemple je permettrait la compression de toutes les vidéos d'un seul répertoire, mais c'est pas sûr que je le fasse ça :-)
En gros voilà ce que donne le fichier actuel :
Dim FSO
Dim filename
Dim cmd
Dim i
Dim res
Set FSO = CreateObject("Scripting.FileSystemObject" )
If WScript.arguments.length = 0 Then
WScript.Echo "Veuillez faire glisser au moins un fichier sur ce raccourci !"
WScript.Quit
End If
For i=0 to WScript.arguments.length - 1
filename = WScript.arguments.item(i)
'cmd = """" & FSO.GetParentFolderName(WScript.ScriptFullName) + "\mencoder.exe"" -ovc xvid -xvidencopts quant_type=mpeg:fixed_quant=4:me_quality=6:vhq=4:trellis -vf harddup -oac mp3lame -lameopts mode=1:cbr:br=128 -af volnorm -af-adv force=0 """ + filename + """ -o """ + FSO.GetParentFolderName(filename) + "\" + FSO.GetBaseName(filename) + ".avi"""
cmd = """" & FSO.GetParentFolderName(WScript.ScriptFullName) + "\mencoder.exe"" -ovc xvid -xvidencopts quant_type=mpeg:bitrate=1200:me_quality=6:vhq=4:trellis -oac mp3lame -lameopts mode=1:cbr:br=128 -af volnorm -af-adv force=0 """ + filename + """ -o """ + FSO.GetParentFolderName(filename) + "\" + FSO.GetBaseName(filename) + ".avi"""
Dim WshShell
Set WshShell = CreateObject("Wscript.Shell" )
Set WshSysEnv = WshShell.Environment("SYSTEM" )
res = WshShell.Popup("Now encoding: " + FSO.GetFileName(filename), 1, "Recode", 1 + 64) ' OK / Cancel
If res = 2 Then
WScript.Quit
End if
' Settings for intWindowStyle.
'
' 0 Hide the window and activate another window.
' 1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time.
' 2 Activate & minimize.
' 3 Activate & maximize.
' 4 Restore. The active window remains active.
' 5 Activate & Restore.
' 6 Minimize & activate the next top-level window in the Z order.
' 7 Minimize. The active window remains active.
' 8 Display the window in its current state. The active window remains active.
' 9 Restore & Activate. Specify this flag when restoring a minimized window.
' 10 Sets the show-state based on the state of the program that started the application. Example
WshShell.Run cmd, 8, True
Next
Marsh Posté le 27-11-2005 à 16:20:39
Hello,
Depuis que j'ai acheté mon appareil photo numérique, je fais pas mal de petites vidéos.
L'ennui c'est que c'est du MpeG en 640*480@30fps et que ça tient énormément de place sur mon disque-dur.
Je les compresse parfois en DivX, mais la procédure est longue (J'ai une centaine de vidéos).
Personne n'aurait une idée pour automatiser ces traitements ? genre faire un script qui va automatiquement lire chaque vidéo d'un répertoire et la compresser en DivX 1200Kbps/MP3 ?
Ou un logiciel très simple d'utilisation ? (J'ai testé Virtual Dub, mais même si je n'ai pas besoin de reconfigurer la compression audio/vidéo et j'utilise la Job List, c'est assez long !).
Merci pour vos infos et conseils :-)