Bienvenue, Invité
11 mai 2025, 23:05:55
Nouvelles: Nouvelle version de forum pour Trad-Fr.com!

Auteur Sujet: Filtre AVISYNTH / VDM  (Lu 5440 fois)

phgir

  • Visiteur Ponctuel
  • **
  • Hors ligne Hors ligne
  • Messages: 17
Filtre AVISYNTH / VDM
« le: 24 février 2007, 10:17:11 »

Bonjour

2 questions  simples  :)

Q1- est-il possible (simplement) de prendre un filtre prévu pour Avisynth (par exemple Asharp) et de le tranformer en plugin pour VDM.

Q2- est-il possible pour un filtre VDM, d'y accéder à travers un script et non pas en le chargeant classiquement ?
IP archivée

Room |312|

  • Référent
  • *****
  • Hors ligne Hors ligne
  • Messages: 4179
Filtre AVISYNTH / VDM
« Réponse #1 le: 24 février 2007, 14:07:24 »

Bonjour phgir :D

1 – Il me semble que tu as déjà posé cette question. En ce qui concerne, la réponse ne varie pas. Voir >>ICI<<.

2 – Je ne suis pas sûre de bien comprendre ta question…

Si je te suis à peu près, tu souhaites utiliser des filtres AviSynth avec VDM ? En ce cas, utilise un script car c’est comme ça que fonctionne AviSynth et les filtres seront pleinement opérants. @+++ Room |312| :wink:
IP archivée


phgir

  • Visiteur Ponctuel
  • **
  • Hors ligne Hors ligne
  • Messages: 17
Filtre AVISYNTH / VDM
« Réponse #2 le: 24 février 2007, 21:13:31 »

Bonsoir,

oui je tourne un peu en rond.  :)  :oops:  

Si j'ai bien compris les scripts je dois en faire  un par fichier à traiter.

Hors j'utilise actuellement le centre de traitement des opérations de VDM qui me permet de traiter en un batch tout son contenu.

Hors je ne comprends pas  le faire avec un script, d'ou ma question 1.

Désolé pour la "requestionnement"  :)
IP archivée

Room |312|

  • Référent
  • *****
  • Hors ligne Hors ligne
  • Messages: 4179
Filtre AVISYNTH / VDM
« Réponse #3 le: 25 février 2007, 16:26:02 »

Re- :D

Oui, un script par fichier. Tu écris ton script puis tu l’ouvres avec VDM et tu fais tes encodages en batch comme tu en as l’habitude.

Si les filtres AviSynth et leurs paramètres sont identiques pour chaque fichier, tu peux te servir d’AvsP, un petit log sans installation qui te permettra de générer un script pour chaque fichier contenu dans un même répertoire. @+++ Room |312| :wink:
IP archivée


phgir

  • Visiteur Ponctuel
  • **
  • Hors ligne Hors ligne
  • Messages: 17
Filtre AVISYNTH / VDM
« Réponse #4 le: 26 février 2007, 10:24:56 »

merci ,

je ne suis pas sur de bien comprendre .

Donc si j'ai 100 fichiers.

je dois faire 100 scripts complet en changeant à chaque fois le nom du fichier et en les mettant les une à la suite des autres. Puis lancer le traitement. loutil que tu m'as indiqué m'aide pour ce point.

Dans ce cas je ne vois pas l'utilité du centre de traitement .
Ce qui serait bien, mais  je crois avoir compris que ça ne marchait pas comme ça.
- un script unique sans nom de fichier
- les fichiers à traiter sont pris dans le centre de traitement.

Désolé je comprends vite quand on m'explique longtemps  :wink:  :)
IP archivée

Room |312|

  • Référent
  • *****
  • Hors ligne Hors ligne
  • Messages: 4179
Filtre AVISYNTH / VDM
« Réponse #5 le: 28 février 2007, 22:35:51 »

Bonsoir phgir :D

Citer
Dans ce cas je ne vois pas l'utilité du centre de traitement.

Il est vrai qu’avec un nombre de fichiers aussi important que celui que tu indiques, cela devient un véritable marathon mais ce pauvre centre de gestion des opérations n’y est pour rien ^^ lol.

Citer
Ce qui serait bien, mais je crois avoir compris que ça ne marchait pas comme ça.
- un script unique sans nom de fichier
- les fichiers à traiter sont pris dans le centre de traitement.

C’est possible. Je te montre :

1 – Télécharge ce script en Visual Basic (click droit + Enregistrer sous...). Je l’ai modifié pour qu’il accepte les fichiers *.avs et j’en ai profité pour le traduire. L’original se trouve >>ICI<<.

2 – Enregistre tes paramètres de filtrage et de compression en fichier *.vcf (Fichier > Enregistrer les paramètres de traitement…) et place-le dans le même dossier que le script.

3 – A partir de l’explorateur Windows, prends le fichier de configuration *.vcf et dépose-le sur le fichier script VirtualDub.vbs. Laisse-toi ensuite guider par les différentes fenêtres qui vont s’afficher.

A l’issue, un fichier VirtualDub.jobs est créé. Il ne reste plus qu’à le copier dans le dossier d’installation de VirtualDub.

4 – Lance enfin VirtualDub et appelle la joblist en pressant <F4> ou en faisant Fichier > Centre de gestion des opérations… ; tous les fichiers spécifiés dans le dossier source sont prêts à être traités.

Alors deux remarques : la contrainte, c’est que tous les fichiers se verront appliquer les mêmes paramètres de traitement mais on ne peut pas faire autrement.

L’ennui avec ce script, c’est que les fichiers générés après traitement de la joblist créée portent leur extension originale. Si ce sont des *.avi, pas de pb mais quand il s’agit de fichiers *.mpeg ou *.avs, c’est gênant dans la mesure où il faudra leur redonner l’extension *.avi. C’est curieux que l’auteur n’ait pas réglé ceci mais je pense que c’est modifiable dans le script. Je verrais si je peux changer ça mais je suis loin de maîtriser Visual Basic.

A défaut, peut-être un batch peut-il s’en charger mais ça fait une manipulation supplémentaire.

Cette méthode reste néanmoins très intéressante pour faire du traitement de masse. J’espère avoir pu t’aider. @+++ Room |312| :wink:

P.S. : les fichiers étant parfois volatiles et susceptibles de disparaître du Net, je reproduis ci-dessous l’intégralité du script (désolée, c’est un peu long ^^). Il suffit de le copier dans n’importe quel éditeur de texte et de l’enregistrer avec l’extension .vbs. Remerciements à Eric Phelps.

'Drop a saved VirtualDub configuration file (VCF file)
'on this script and it will create a ".jobs" file for
'all video files in a directory of your choosing. You
'can also pass VCF file, source directory, and
'destination directory on the command line (in that
'order).
'
'The ".jobs" file created by this script will always
'be in the script's directory and will have the same
'base name as the script.
'
'VirtualDub should NOT be running while it's jobs file
'is being modified.
'
'Eric Phelps
'June 2003
'http://www.ericphelps.com/
'Public Domain. No restrictions. No warranty.

Option Explicit
Main

Sub Main
Dim strVcfFile, strVcfData
Dim strInputDirectory, strOutputDirectory
Dim strMessage, strExtensions, strExtension
Dim fs, fil, fils, fols, fol
Dim dtCreated
Dim intCounter
Set fs = CreateObject("Scripting.FileSystemObject")
'Get the VCF data
If WScript.Arguments.Count > 0 Then
strVcfFile = WScript.Arguments(0)
Else
strVcfFile = BrowseForFile("Selectionnez un fichier de configuration ""VCF"" pour VirtualDub à utiliser :")
End If
If strVcfFile = "" Then Exit Sub 'User hit Cancel on file selection dialog
If Not fs.FileExists(strVcfFile) Then
MsgBox "Erreur de fichier : " & strVcfFile
Exit Sub
End If
If Lcase(Right(strVcfFile, 4)) <> ".vcf" Then
MsgBox "Un fichier VCF doit avoir une extension VCF ! Le fichier que vous avez choisi n'en a pas."
Exit Sub
End If
strVcfData = File2String(strVcfFile)
If InStr(strVcfData, "VirtualDub.") = 0 Then
MsgBox "Ce n'est pas un fichier VCF valide !"
Exit Sub
End If
'Process what kind of files?
strExtensions = InputBox("Quel type de fichier voulez-vous traiter ?",,"avi, mpg, mpeg, avs")
'Get the input directory
If WScript.Arguments.Count > 1 Then
strInputDirectory = WScript.Arguments(1)
Else
strInputDirectory = fs.GetParentFolderName(strVcfFile)
strInputDirectory = BrowseForFolder("Répertoire source : " & vbCrLf & "(Annuler=""" & strInputDirectory & """)")
If strInputDirectory = "" Then strInputDirectory = fs.GetParentFolderName(strVcfFile)
End If
If Not fs.FolderExists(strInputDirectory) Then
MsgBox "Le répertoire sélectionné n'existe pas."
Exit Sub
End If
'Count the source files
Set fils = fs.GetFolder(strInputDirectory).Files
intCounter = 0
For Each fil In fils
For Each strExtension In Split(strExtensions, ",")
If Lcase(Mid(fil.Name, InStrRev(fil.Name, ".") + 1)) = Lcase(Trim(strExtension)) Then
intCounter = intCounter + 1
Exit For
End If
Next
Next
If intCounter = 0 Then
MsgBox "Pas de fichiers " & strExtensions & " trouvés"
Exit Sub
End If
'Get the output directory
If WScript.Arguments.Count > 2 Then
strOutputDirectory = WScript.Arguments(2)
Else
'Try to guess the output directory to save drill-down time
Set fols = fs.GetFolder(strInputDirectory).SubFolders
If fols.Count <> 0 Then
'Pick the most recently accessed sub-folder as the default
dtCreated = Now() - 100000
For Each fol In fols
If fol.DateCreated > dtCreated Then
strOutPutDirectory = fol.Path
dtCreated = fol.DateCreated
End If
Next
Else
'pick the parent folder
If Len(strInputDirectory) > 3 Then
strOutputDirectory = fs.GetFolder(strInputDirectory).ParentFolder.Path
Else
strOutPutDirectory = fs.GetFolder(".").Path
End If
End If
'Remember our choice
Set fol = fs.GetFolder(strOutputDirectory)
strOutputDirectory = BrowseForFolder("Répertoire de destination : " & vbCrLf & "(Annuler=""" & strOutputDirectory & """)")
If strOutputDirectory = "" Then strOutputDirectory = fol.Path
End If
If Not fs.FolderExists(strOutputDirectory) Then
MsgBox "Le répertoire sélectionné n'existe pas."
Exit Sub
End If
If strOutputDirectory = strInputDirectory Then
MsgBox "Le répertoire de destination doit être différent du répertoire source car les fichiers de sortie auront les mêmes noms que les fichiers d'entrée !"
Exit Sub
End If
'Start the job file with the count
String2File "//" & vbCrLf & "// $numjobs " & intCounter & vbCrLf & "//" & vbCrLf, FileNameLikeMine("jobs")
'Process all AVI files
For Each fil In fils
For Each strExtension In Split(strExtensions, ",")
If Lcase(Mid(fil.Name, InStrRev(fil.Name, ".") + 1)) = Lcase(Trim(strExtension)) Then
AddJob fil.Name, strInputDirectory, strOutputDirectory, strVcfData
Exit For
End If
Next
Next
'Display the "finished" message
MsgBox "Fichier Jobs """ & FileNameLikeMine("jobs") & """ créé." & vbCrLf & "Rappel : si le fichier ""jobs"" n'est pas dans le dossier d'installation de VirtualDub, vous devrez l'y copier. Si VirtualDub est en cours d'exécution, vous devrez le redémarrez au préalable pour qu'il prenne en compte votre nouveau fichier ""jobs""."
End Sub

Sub AddJob(strFile, strInDir, strOutDir, strVcf)
'Adds a job to the jobs file
Dim fs, ts
Const ForAppending = 8
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(FileNameLikeMine("jobs"), ForAppending, True)
ts.WriteLine "// $job """ & strFile & """"
ts.Write "// $input """
ts.Write fs.BuildPath(strInDir, strFile)
ts.WriteLine """"
ts.Write "// $output """
ts.Write fs.BuildPath(strOutDir, strFile)
ts.WriteLine """"
ts.WriteLine "// $state 0"
ts.WriteLine "// $start_time 0 0"
ts.WriteLine "// $end_time 0 0"
ts.WriteLine "// $script"
ts.WriteLine ""
ts.Write "VirtualDub.Open("""
ts.Write Replace(fs.BuildPath(strInDir, strFile), "\", "\\")
ts.WriteLine """,0,0);"
ts.WriteLine strVcf
ts.Write "VirtualDub.SaveAVI("""
ts.Write Replace(fs.BuildPath(strOutDir, strFile), "\", "\\")
ts.WriteLine """);"
ts.WriteLine "VirtualDub.Close();"
ts.WriteLine ""
ts.WriteLine "// $endjob"
ts.WriteLine "//"
ts.WriteLine "//--------------------------------------------------"
ts.Close
End Sub

Function BrowseForFolder(strPrompt)
'Uses the "Shell.Application" (only present in Win98 and newer)
'to bring up a file/folder selection window. Falls back to an
'ugly input box under Win95.
'Shell32.ShellSpecialFolderConstants
Const ssfPERSONAL = 5 'My Documents
Const ssfDRIVES = 17 'My Computer
Const SFVVO_SHOWALLOBJECTS = 1
Const SFVVO_SHOWEXTENSIONS = 2
Dim sh, fol, fs, lngView, strPath
Set sh = CreateObject("Shell.Application")
If Instr(TypeName(sh), "Shell") = 0 Then
BrowseForFolder = InputBox(strPrompt, "Sélectionnez un dossier.", CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName))
Exit Function
End If
Set fs = CreateObject("Scripting.FileSystemObject")
lngView = SFVVO_SHOWALLOBJECTS Or SFVVO_SHOWEXTENSIONS
strPath = ""
Set fol = sh.BrowseForFolder(&0, strPrompt, lngView, ssfDRIVES)
Err.Clear
On Error Resume Next
strPath = fol.ParentFolder.ParseName(fol.Title).Path
'An error occurs if the user selects a drive instead of a folder
If Err.Number <> 0 Then
BrowseForFolder = Left(Right(fol.Title, 3), 2) & "\"
Else
BrowseForFolder = strPath
End If
End Function

Function BrowseForFile(strPrompt)
'Uses the "Shell.Application" (only present in Win98 and newer)
'to bring up a file/folder selection window. Falls back to an
'ugly input box under Win95.
'Shell32.ShellSpecialFolderConstants
Const ssfPERSONAL = 5 'My Documents
Const ssfDRIVES = 17 'My Computer
Const SFVVO_SHOWALLOBJECTS = 1
Const SFVVO_SHOWEXTENSIONS = 2
Const SFVVO_SHOWFILES = 16384
Dim sh, fol, fs, lngView, strPath
Set sh = CreateObject("Shell.Application")
If Instr(TypeName(sh), "Shell") = 0 Then
BrowseForFile = InputBox(strPrompt, "Sélectionnez un dossier.", CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\foo.vcf")
Exit Function
End If
Set fs = CreateObject("Scripting.FileSystemObject")
lngView = SFVVO_SHOWALLOBJECTS Or SFVVO_SHOWEXTENSIONS Or SFVVO_SHOWFILES
strPath = ""
On Error Resume Next
Err.Clear
Set fol = sh.BrowseForFolder(&0, strPrompt, lngView, ssfDRIVES)
If Err.Number <> 0 Then
BrowseForFile = "Désolé, je ne peux pas manipuler des fichiers dans le répertoire source !" 'Will throw an error
Exit Function
End If
strPath = fol.ParentFolder.ParseName(fol.Title).Path
If strPath = "" Then
strPath = fol.Title
Set fol = fol.ParentFolder
strPath = fs.BuildPath(fol.ParentFolder.ParseName(fol.Title).Path, strPath)
End If
BrowseForFile = strPath
End Function

Function File2String(strFile) 'As String
'Reads a file and returns the contents as a string
Dim fs 'As Scripting.FileSystemObject
Dim ts 'As Scripting.TextStream
Const ForReading = 1
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(strFile) Then
Set ts = fs.OpenTextFile(strFile, ForReading, True)
If ts.AtEndOfStream Then
File2String =""
Else
File2String = ts.ReadAll
End If
ts.Close
Else
File2String = ""
End If
End Function

Sub String2File(strData, strFileName)
'Writes a string to a file
Dim fs 'As Scripting.FileSystemObject
Dim ts 'As Scripting.TextStream
Const ForWriting = 2
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(strFileName, ForWriting, True)
ts.Write(strData)
ts.Close
End Sub

Sub AppendLineToFile(strText, strFile)
Dim fs 'As Scripting.FileSystemObject
Dim ts 'As Scripting.TextStream
Const ForAppending = 8
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(strFile, ForAppending, True)
ts.WriteLine strText
ts.Close
End Sub

Function FileNameLikeMine(strFileExtension) 'As String
'Returns a file name the same as the script name except
'for the file extension.
Dim fs 'As Object
Dim strExtension 'As String
Set fs = CreateObject("Scripting.FileSystemObject")
strExtension = strFileExtension
If Len(strExtension) < 1 Then strExtension = "txt"
If strExtension = "." Then strExtension = "txt"
If Left(strExtension,1) = "." Then strExtension = Mid(strExtension, 2)
FileNameLikeMine = Left(Wscript.ScriptFullName, InstrRev(Wscript.ScriptFullName, ".")) & strExtension
End Function

En complément, ceux qui le veulent peuvent s’intéresser à  DubMan, un générateur de scripts pour VirtualDub. Nécessite Java Runtime Environment pour fonctionner. A l’air ancien et pas testé.
IP archivée


phgir

  • Visiteur Ponctuel
  • **
  • Hors ligne Hors ligne
  • Messages: 17
Filtre AVISYNTH / VDM
« Réponse #6 le: 07 mars 2007, 20:57:20 »

bonsoir,

Merci Room[312] pour ce long developpement  que je viens de découvrir.
Pas de commentaires à chaud mais j'essaie dans les prochains jours et te tiens au courant.



 :merci:
IP archivée