DirectShowSource
(chaîne
nom_de_fichier,
flottant "fps", booléen "seek", booléen "audio",
booléen "video", booléen "convertfps",
booléen
"seekzero", entier "timeout", chaîne "type_de_pixel")
DirectShowSource
lit nom_de_fichier
en utilisant DirectShow, qui est la même interface multimédia
qu'utilise Windows Media Player. Ce filtre peut donc lire tout les
formats que Windows Media Player peut lire,. Cela inclut les fichiers MPEG, MP3,
Quicktime, mais aussi les fichiers AVI que AVISource ne peut pas ouvrir
(comme le DV de type 1, ou bien des fichiers qui utilisent des codecs
compatibles uniquement avec DirectShow). Essayez de lire les fichiers
AVI avec AVISource
tout d'abord, et
avec DirectShowSource
si AVISource
ne marche pas.
Voici quelques avertissements:
FlipVertical
pour
corriger ceci.DirectShowSource
("video.asf", fps=15).fps: Ce paramètre est parfois nécessaire pour indiquer le taux de rafraîchissement des images de la video. Si ce taux ou si le nombre d'images est faux (cela peut arriver avec des videos ASF ou MOV), utilisez cette option pour le corriger.
seek = true (dans v2.53): DirectShowSource supporte la navigation (pour la plupart des formats). Si des problèmes surviennent, essayez l'option seekzero d'abord. Si vous avez toujours des problèmes de navigation, il faut la désactiver. Si la navigation est désactivée, un flux audio renvoie du silence et le flux video renvoie la dernière image calculée avant une navigation vers l'arrière. Notez que le cache d'AviSynth peut fournir un accès limité à quelques images précédentes; au delà c'est la dernière image calculée qui sera renvoyée.audio = true (dans v2.53): DirectShowSource
supporte l'audio. DirectShowSource est capable d'ouvrir les formats
tels que WAV/DTS/AC3/MP3, si vous êtes capables de
les lire dans Windows Media Player (pour être exact,
si GraphEdit est capable de construire un graph correct). Les
canaux sont organisés de la même
manière que dans le [format
wave extensible] (lien en anglais), puisque les flux audio
d'entrée sont décompressés au format WAV. Pour
plus d'informations, regardez le filtre GetChannel
.
AviSynth peut charger des échantillons PCM entier ou flottant
de 8, 16, 24 ou 32 bits, avec un nombre infini de canaux.
video = true (dans v2.52): Quand ce paramètre est sur false, cela permet de charger le flux audio seulement.
convertfps = false (dans v2.56): Ce paramètre permet de transformer une video à framerate variable (vfr) en une video à framerate constant (cfr); ceci en dupliquant ou en sautant des images. Cela est particulièrement utile quand vous voulez ouvrir une video à framerate variable (par exemple des fichiers mkv, rmvb, mp4, asf ou wmv avec une video hybride) dans AviSynth. Cela est également utile quand le paramètre fps est fixé au plus petit multiple commun des composantes d'un flux à framerate variable. Par exemple, on pourrait utiliser fps=120 si les composantes d'un flux à framerate variable étaient 24 et 30,et on pourrait utiliser fps=119.88 si les composantes d'un flux à framerate variable étaient 23.976 et 29.970 (valeurs courantes dans le domaine de la video numérique).
seekzero = false (dans v2.56): Une option pour restreindre la navigation uniquement au retour vers le début du fichier. Cela permet une navigation basique dans des fichiers ASF non indexés. La navigation vers l'avant est faite en décodant tout les échantillons précédents.
timeout = 60000 (en millisecondes; 60000 ms = 1 min) (dans v2.56): Permet de fixer le temps d'attente quand DirectShow refuse de traiter un fichier. Des valeurs positives renvoient des images vides pour la video ou du silence pour l'audio. Des valeurs négatives entraînent une exception d'exécution d'AviSynth(une erreur).
type_de_pixel (dans v2.56): Le type de pixel de la video de sortie. Il peut être "YV12", "YUY2", "ARGB", "RGB32", "RGB24", "YUV", "RGB" ou "AUTO". Il limite le sous format acceptable des pixels du flux video pour la négociation IPin (pendant la construction du graph DirectShow). Notez que le constructeur de graph peut ajouter un convertisseur de format pour satisfaire à votre demande de type de pixel. En conséquence, faites attention à ce que le codec utilisé permette effectivement de décoder votre video avec le type de pixel demandé. Le convertisseur de format de M$ fait cela correctement. Les pseudo types de pixels "YUV" et "RGB" restreignent respectivement les négociations aux formats yuv et rgb supportés.
Ouvre un fichier AVI avec le premier format RGB utilisable (sans le flux audio):
DirectShowSource("F:\TestStreams\xvid.avi",
\ fps=25, audio=false, type_de_pixel="RGB")
Ouvre une video DV avec le décodeur DV de Microsoft
DirectShowSource("F:\DVCodecs\Analysis\Ced_dv.avi") # MS-DV
Ouvre un fichier mkv ayant un taux de rafraîchissement variable (variable frame rate: vfr) au taux de rafraîchissement de 119.88 images par seconde (en ajoutant des images et donc en maintenant la synchronisation):
DirectShowSource("F:\Guides\Hybrid\vfr_startrek.mkv",
\ fps=119.88, convertfps=true)
Ouvre un fichier realmedia *rmvb:
DirectShowSource("F:\test.rmvb", fps=24, convertfps=true)
Ouvre un fichier de graph provenant du logiciel GraphEdit:
DirectShowSource("F:\graph.grf")
Voir ci dessous pour des exemples concernant l'audio.
AviSynth va par défaut essayer d'ouvrir seulement les fichiers qu'il peut ouvrir sans problèmes. Si un des flux ne peut pas être ouvert, il ne sera pas inclut dans le clip de sortie du filtre. Cela veut également dire que si il y a un problème, vous ne verrez pas de message d'erreur. Pour obtenir le message d'erreur du flux manquant, utilisez les paramètres audio=false ou video=false pour désactiver le flux qui est chargé correctement. De cette manière, AviSynth affichera le message d'erreur du flux qui ne marche pas.
C'est une erreur courante qui se produit quand DirectShow est incapable de fournir le clip sous un format lisible par AviSynth. Essayez de créer un graph de filtre manuellement et regardez si vous pouvez construire un graph qu'AviSynth peut ouvrir. Si ce n'est pas le cas, vous avez probablement besoin de télécharger des filtres DirectShow supplémentaires qui pourront transmettre le clip à AviSynth.
Certains filtres peuvent avoir des problèmes pour fournir le taux d'échantillonnage correct; ils le corrigent pendant que le flux est lu. Malheureusement, il n'y a aucun moyen pour AviSynth de corriger ce taux une fois que le fichier à été ouvert. Utilisez AssumeSampleRate pour corriger le taux d'échantillonnage.
Malheureusement, la navigation précise sur les échantillons audio ne fait pas partie de DirectShow. Ouvrez votre son d'une autre manière, ou démultiplexez votre clip et transmettez le à AviSynth d'une manière différente. Sinon, vous pouvez préciser les paramètres "seekzero = true" ou "seek = false" ou utiliser le filtre EnsureVBRMP3Sync pour forcer un accès linéaire au flux audio.
Dans son infinie sagesse, Microsoft a décidé d'implémenter la synchronisation des flux ASF dans le démultiplexeur ASF. En conséquence, il n'est pas possible de découper les fichiers au format ASF plus vite qu'en temps réel. Cela se voit quand vous commencez à traiter les flux ASF. Habituellement, après avoir ouvert votre script AviSynth, vous mettez un certain temps pour paramétrer votre éditeur video/audio. Pendant ce temps, le multiplexer accumule du temps en crédit. Quand vous lancez le traitement, le logiciel travaille à vitesse maximale jusqu'à avoir atteint le temps réel, à partir de quoi le traitement se fait à la vitesse de la source. Cela signifie par conséquent qu'il est impossible de transformer un clip ASF de 24 images par secondes en un clip de 25 images par secondes.
Cette section décrit quelques tâches qui ne sont pas forcement évidentes. :)
Les fichiers GRF de GraphEdit sont automatiquement détectés par l'extension .grf et ils sont chargés par DirectShowSource. Pour qu'AviSynth se connecte au fichier GRF, vous devez laisser dans GraphEdit des pins ouvertes correspondant à des types de média supportés par AviSynth. AviSynth n'essayera pas de déconnecter certains filtres. Il est donc important que le type de sortie soit correct.
1) Installez AC3filter. Ouvrez un fichier AC3 dans Windows Media Player 6.4 ou un autre player basé sur DirectShow et sélectionnez les propriétés du fichier. Indiquez le type de sortie à AC3Filter: 2/0 - stereo. Si vous voulez la meilleure qualité possible, sélectionnez PCM flottant pour le format d'échantillon (Sample format).
Créez le script suivant:
v = Mpeg2Source("e:\movie.d2v")Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
2) Enregistrez le filtre DirectShow Channel Downmixer by Trombettworks (pour cela faites Démarrer -> Exécuter):
regsvr32 ChannelDownmixer.ax
Ouvrez le fichier AC3 dans Windows Media Player 6.4 et
sélectionnez les propriétés du
fichier. Indiquez le type de sortie pour AC3Filter: 3/2+SW
5.1 channels (ne supporte pas le PCM flottant cette fois ci,
donc PCM 16 bit est sélectionné). Dans les
propriétés de Channel Downmixer, le nombre de
canaux en entrée et en sortie doit être
détecté automatiquement. Vérifier si
les paramètres sont corrects.
Créez le script suivant:
v = Mpeg2Source("e:\movie.d2v")Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
Pour des raisons inconnues, je n'ai pas pu utiliser cette méthode avec des flux DTS :(
Changements
v2.56 | convertfps change un fichier vfr (framerate variable) en cfr (framerate constant) en ajoutant des images |
seekzero restreint la navigation au retour au début du fichier uniquement | |
timeout contrôle la réponse de graphs récalcitrants | |
type_de_pixel définit ou restreint le type de pixel de la video de sortie |
$English Date: 2005/10/01 23:09:51 $
French translation: 2005/10/11 JasonFly macpaille@users.sourceforge.net