DirectShowSource

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:

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.

Exemples

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.

Dépannage des problèmes video et 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.

The Filter Graph won't talk to me, Le Graph de filtres ne me parle 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.

The samplerate is wrong!, Le taux d'échantillonnage est faux!

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.

My sound is choppy, Mon son est saccadé

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.

My ASF renders start fast and finish slow, Mes clip ASF commence vite et finissent lentement

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.

Taches courantes

Cette section décrit quelques tâches qui ne sont pas forcement évidentes. :)

Ouvrir des fichier GRF

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.

Downmixing AC3 vers du stereo

Il y a deux façons de procéder. La première effectue le downmix dans la configuration de votre décodeur AC3 directement. La seconde est d'utiliser le downmixer externe de "Trombettworks":

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")
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)

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")
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)

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