2) Změna meritu DirectShow filtrů
3) Použití GraphEditu pro vytvoření grafů DirectShow filtrů a jak načíst tyto grafy do AviSynthu
Většinu video/audio formátů lze do AviSynthu načíst, ale jsou některé výjimky jako swf video, flv4 (VP6) a dvr-ms. Pokud není možné načíst klip do Avisynthu, budete ho muset převést do nějakého jiného formátu, který může být načten. Pamatujte, aby jste vybrali formát u kterého budete mít v důsledku převodu jen minimální snížení kvality.
Obecně jsou dva způsoby jak načíst vaše video do AviSynthu:
Přesvědčte se, že váš klip obsahuje maximálně jeden video a(nebo) jeden audio stream (jinak odstraňte titulky a odstraňte jiné video/audio streamy). Pokud chcete načíst klip, který obsahuje jak video tak i audio, máte dvě možnosti:
Při načítání klipů do AviSynthu vám poradíme dodržovat následující pravidla:
Vysvětluje se zde pro mnohé formáty, jak je načíst do AviSynthu, ale pokud zde váš formát není probírán, mělo by zde i tak být dost informací pro to aby jste věděli jak začít. Obvykle je více způsobů jak načíst váš formát do AviSynthu, takže pokud jeden z nich nepracuje, nezapomeňte zkusit ostatní. Například, dejme tomu, že máte AVI se zvukem 5.1 DTS, ale ten se neotevře jako 5.1 pomocí AviSource. Zkuste jiné způsoby, jako otevřít ho pomocí DirectShowSource (použitím AC3filteru), nebo demuxujte audio a načtěte dts pomocí NicAudio.
Pro načtení vašeho AVI s audiem potřebujete (1) VfW (Video for Windows) kodek pro otevření (to je dekódování) vašeho videa v AviSynthu a ACM (Audio Compression Manager) kodek pro otevření vašeho audia v AviSynthu. Pro mnohé video a audio formáty jsou takové kodeky dostupné, ale určitě ne pro všechny.
Počet různých formátů videa, které lze nalézt v AVI je docela omezen. Výběr z nich:
Seznam formátů audia je uveden níže:
audio: nekomprimované WAV, CBR/VBR MP2 nebo CBR/VBR MP3:
Existuje ACM kodek pro MP2 zvaný [QDesign]. Existují ACM kodeky pro MP3 [Radium Codec] nebo [Lame ACM].
audio: AC3/DTS:
Existuje ACM kodek pro AC3 zvaný [AC3ACM]. Existuje ACM kodek pro AC3/DTS zvaný valex ACM kodek [vac3acm].
Příklady:
AviSource("d:\xvid_dts.avi")
Vezměte AC3/DTS directshow filtr jako AC3Flter (ujistěte se, že je vypnuto snížení počtu kanálů (downmixing), kromě případu kdy chcete provést downmixing nebo pokud už zvuk je stereo/mono) a AVI-AC3/DTS splitter, nebo ffdshow (s DTS nastaveným na libdts). Použijte AC3Filter a vytvořte skript:
DirectShowSource("d:\xvid_dts.avi")
audio: AAC:
Pro AAC neexistuje spolehlivý ACM kodek, takže není možné načíst váš klip s AAC pomocí AviSource. Sežeňte si AAC directshow filtr jako CoreAAC (ujistěte se, že je vypnuto snížení počtu kanálů (downmixing), kromě případu kdy chcete provést downmixing) nebo ffdshow (s AAC nastaveným na libfaad2 nebo realaac). Použijeme zde ffdshow :
použijte skript
DirectShowSource("d:\xvid_aac.avi")
pro načtení vašeho AVI.
Není vždy možné načíst vaše klipy do AviSynthu použitím AviSource (nebo jednoho ze specifických pluginů, které budou probírány níže). Příklady jsou ne-AVI, což jsou klipy obsažené uvnitř jiného kontejneru, jako MKV, MP4, RMVB, OGM nebo ASF/WMV. V takovém případě je DirectShowSource vaší poslední nadějí. Také by mělo být možné, že máte AVI, s nainstalovaným vhodným VfW kodekem, ale chcete použít DirectShow kodeky pro jejich otevření v AviSynthu. V takovém případě smíte použít také DirectShowSource.
Při přehrávání klipu ve WMP6.4 (mplayer2.exe) jsou používány DirectShow filtry (*.ax). Jsou to ty samé jako které jsou "použity" přes DirectShowSource. Takže si musíte být jisti, že máte nainstalovány vhodné DirectShow filtry. Pro nalezení, které filtry sou použity pro přehrávání klipu, otevřete klip ve WMP6.4 a podívejte se na : soubor (file) -> vlastnosti (properties) -> Pokročilé (Advanced). Zde můžete také změnit nastavení filtrů. Více informací o filtrech získáte, když otevřete klip např. v programu GSpot. Prostě otevřete klip a stiskněte "1" pod A/V v části "Proposed Codec Solutions and Tests". Je vytvořen "graph" s filtry které jsou použity pro jeho přehrávání:
(Jestli se divíte, při mém nastavení AC3Filtru, se tento vždy zobrazuje v řetězci filtrů. Ale v tomto příkladu by neměl být načten, protože nepodporuje AAC.)
Pokud se vám objeví zpráva "rendering failed (...)", znamená to, že nejsou nainstalované vhodné DirectShow filtry. Dbejte také na to aby byl soubor přehráván správně stiskem tlačítka "2" pod "1". Protože pokud není přehráván, DirectShowSource nemůže načíst klip. Obecně, můžete mít následující problém s tímto přístupem: pro přehrávání media souboru jsou použity jiné DirectShow filtry než ty, které jste nainstalovali nebo které chcete použít. To se může stát protože použité filtry mají vyšší merit (prioritu přehrávání) než ten který chcete použít . Jsou dvě řešení tohoto problému:
Je to probíráno v kapitole " Změna meritu DirectShow filtrů" a " Použití GraphEditu pro vytvoření grafů DirectShow filtrů a jak načíst tyto grafy do AviSynthu".
Naštěstí můžete nainstalovat ffdshow (který přichází s několika DirectShow dekodéry), které jsou schopny dekódovat mnohé formáty. Například:
Příklad:
Načteme MP4 (video: h.264, audio: aac) použitím DirectShowSource a ffdshow (aac dekódování zapnuto v ffdshow; když je audio AC3 nebo DTS můžete také použít AC3Filter). Váš skript může být například:
# upravte fps pokud je to nutné DirectShowSource("d:\x264_aac.mp4", fps=25, convertfps=true)
některé jiné formáty:
* RM/RMVB (RealMedia / RealMedia Variable Bitrate - proměnný datový tok; obvykle obsahuje Real Video/Audio): nainstalujte rmvb splitter a Real kodeky nainstalováním přehrávače RealPlayer/RealAlternative . Vytvořte skript:
# upravte fps pokud je to nutné DirectShowSource("d:\clip.rmvb", fps=25, convertfps=true)
* WMV/ASF (Windows Media Video / Advanced Systems Format; obvykle obsahuje WMV/WMA): tento formát není zcela podporován v ffdshow, takže budete muset nainstalovat kodeky wmv. Vezměte WMF SDK v9 pro W2K nebo pozdější pro XP/Vista které obsahují kodeky (a DMO obálky (wrappers) nezbytné pro použití DMO filtrů v DirectShow). (Všimněte si, že vlastní kodek VC1 od Microsoftu není podporován ve W2K takže potřebujete WMF SDK v11.) Vytvořte skript:
# upravte fps pokud je to nutné DirectShowSource("d:\clip.wmv", fps=25, convertfps=true)
Pokud má zdrojový materiál video s proměnnou snímkovou frekvencí (variable framerate), přečtěte si tuto nápovědu.
Jak už bylo vysvětleno, obecně jsou dva způsoby jak načíst vaše video do AviSynthu:
Seznam všech těchto pluginů a jejich akceptované formáty jsou uvedeny níže.
1) Filtry a pluginy AviSynthu, které jsou navrženy pro otevření specifických formátů:
AviSource - AVI/VDR:
AviSource podporuje všehny typy AVI s audiem MP3 (VBR MP3) nebo AC3. Také podporuje DV type 1 a type 2, a soubory snímkového serveru VirtualDubu (VDR).
AVI lze do AviSynthu načíst za podmínky, že máte nainstalovaný vhodný VfW kodek, který může být použit k dekódování AVI. Výchozí kodek, který je použit pro dekódování AVI je určen na začátku media souboru (v jeho hlavičce) ve formě FourCC (FOUR Character Code). Od v2.55, je přidána možnost fourCC, která vám umožní použít jiné kodeky pro načtení vašeho AVI do AviSynthu.
Pár příkladů:
AviSource("d:\filename.avi")
nebo bez audia:
AviSource("d:\filename.avi", false)
Pro načtení klipu do AviSynthu bylo použito vynucení dekodéru:
# načítáte vaše avi použitím kodeku XviD: # otevře avi (například DivX3) použitím kodeku XviD AviSource("d:\filename.avi", fourCC="XVID") # načítáte vaše dv-avi použitím kodeku Canopus DV Codec: AviSource("d:\filename.avi", fourCC="CDVC") #vdr-soubory (soubory snímkového serveru (frameserver) VirtualDubu): AviSource("d:\filename.vdr")
Jestli si AviSynth postěžuje, že není schopen načíst vaše avi (couldn't decompress ...) musíte nainstalovat vhodný kodek. GSpot, například, vám řekne jaký kodek potřebujete nainstalovat, aby jste mohli přehrávat vaše avi.
Mpeg2Source/DGDecode - MPEG1/MPEG2/VOB/TS/PVA:
DGDecode (dříve Mpeg2Dec3) je externí plugin a podporuje MPEG-1, MPEG-2 / VOB, TS a PVA streamy. Otevřete je nejdříve v programu DGIndex (nebo Dvd2avi 1.76/1.77.3 pro Mpeg2Dec3) a vytvořte d2v skript který lze otevřít v AviSynthu (všimněte si, že toto v AviSynthu otevře jen video):
Pár příkladů:
# starý Mpeg2dec3; pokud potřebujete d2v skript # který se vytvoří v dvd2avi 1.76/1.77.3 LoadPlugin("d:\mpeg2dec3.dll") mpeg2source("d:\filename.d2v") # DGDecode: LoadPlugin("d:\dgecode.dll") mpeg2source("d:\filename.d2v")
Všimněte si, že Mpeg2Dec3 je velmi omezený ve srovnání s DGDecode, protože je to ve skutečnosti stará verze DGDecode a podporuje jen MPEG-2 / VOB.
DGAVCDec - syrové AVC/H.264 elementární streamy [1]
DGAVCIndex: Indexuje váš syrový AVC/H.264 stream.
Vytvoří Avisynth skript pro předávání snímků (frameserve) videa:
LoadPlugin("d:\DGAVCDecode.dll") AVCSource("d:\file.dga")
RawSource - syrové formáty s/bez hlavičky:
Externí pluginy RawSource podporují všechny druhy syrových (raw) videosouborů s YUV4MPEG2 hlavičkou (header) a bez hlavičky (videosoubory, které obsahují YUV2, YV16, YV12, RGB nebo Y8 video data).
Příklady:
# Toto předpokládá, že je uvnitř platná YUV4MPEG2-header (hlavička): RawSource("d:\yuv4mpeg.yuv") # Syrový soubor s RGBA daty: RawSource("d:\src6_625.raw",720,576,"BGRA") # Můžete zadat bajtovou pozici video snímků # přímo (které lze najít pomocí yuvscan.exe). To # je užitečné pokud se ve skutečnosti nejedná o syrové (raw) video, ale např. # nekomprimované MOV soubory nebo soubor se stejným typem hlavičky: RawSource("d:\yuv.mov", 720, 576, "UYVY", \ index="0:192512 1:1021952 25:21120512 50:42048512 75:62976512")
QTSource (s QuickTime 6 nebo 7) a QTReader - MOV/QT:
Jsou dva způsoby jak načíst vaše quicktime videa do AviSynthu (a také RawSource pro nekomprimované mov): QTSource a QTReader. První se objevil docela nedávno a je schopen otevřít mnoho quicktime formátů (s možností otevřít je jako YUY2), ale potřebujete nainstalovat QuickTime player , aby jste tento plugin mohli použít. Druhý je velmi starý, není požadována žádná instalace přehrávače pro otevření quicktime formátů v AviSynthu.
QTSource:
Budete potřebovat Quicktime 6 pro obdržení pouze videa nebo Quicktime 7 pro obdržení audia a videa.
# YUY2 (výchozí): QTInput("FileName.mov", color=2) # s audiem (v mnoha případech možné s QuickTime 7) QTInput("FileName.mov", color=2, audio=true) # syrový (raw) (s například YUYV formátem): QTInput("FileName.mov", color=2, mode=1, raw="yuyv") # dither = 1; převádí raw 10bit na 8bit video (v210 = 10bit uyvy): QTInput("FileName.mov", color=2, dither=1, raw="v210")
QTReader:
# Pokud výše uvedené nepracuje, nebo když nemáte QuickTime, # stáhněte si plugin QTReader (najdeteho v # sekci ke stažení na Doom9): LoadVFAPIPlugin("C:\QTReader\QTReader.vfp", "QTReader") QTReader("C:\quicktime.mov")
Filtr Import - pro skripty AviSynthu:
Prostě importujte skript použitím Import na začátku vašeho skriptu:
Import("d:\filename.avs")
Ve v2.05 nebo novější verzi můžete použít autonačítání skriptů AVSI. Prostě přesuňte AVS-soubor do složky pluginů obsahující ostatní (externí) pluginy, a přejmenujte příponu na 'avsi'. Viz také FAQ pro více diskuze.
2) DirectShowSource:
Podívejte se do kapitoly "Jiné kontejnery s audiem" pro více informací.
Většinu audio formátů lze do AviSynthu načíst, ale je několik výjímek jako MPL nebo vícekanálové WMA při použití W98/W2K. Pokud není možné načíst klip do AviSynthu, budete muset převést zvuk do některého jiného formátu který lze načíst. Přitom pamatujte, aby jste vybrali formát u kterého budete mít nejmenší snížení kvality při převodu.
Obecně jsou dva způsoby pro načtení vašeho audia do AviSynthu:
Seznam všech těchto pluginů a jejich akceptovaných formátů jsou uvedeny níže.
1) Filtry a pluginy AviSynthu, které jsou navrženy pro otevření specifických formátů:
WavSource - WAV:
WavSource podporuje všechny druhy WAV, jako nekomprimované WAV nebo MP2/MP3/AC3/DTS audio s WAVE hlavičkou. WAV lze načíst do AviSynthu za podmínky, že máte nainstalovaný vhodný ACM kodek , který může být použit pro dekódování WAV. Výchozí kodek, který je použit pro dekódování WAV je určen na začátku media souboru (v jeho hlavičce-header; podobně jako fourCC pro video kodeky).
audio: MP2/MP3 s WAVE hlavičkou (header):
Existuje ACM kodek pro MP2 zvaný [QDesign ]. Existují ACM kodeky pro MP3 [Radium Codec] nebo [Lame ACM].
audio: AC3/DTS ve WAVE hlavičce (header) (tak zvané DD-AC3 a DTSWAV):
Existuje ACM kodek pro AC3 zvaný [AC3ACM]. Existuje ACM kodek pro AC3/DTS zvaný valex ACM codec [vac3acm].
Příklad:
# DTS ve WAV: V = BlankClip(height=576, width=720, fps=25) A = WAVSource("D:\audio_dts.wav") AudioDub(V, A)
nebo pokud máte WinDVD platinum, nainstalujte hypercube's DTSWAV filter.
Pár příkladů:
xxx
MPASource - MP1/MP2/MP3/MPA:
Příklad:
LoadPlugin("C:\Program Files\AviSynth25\plugins\mpasource.dll") V = BlankClip(height=576, width=720, fps=25) A = MPASource("D:\audio.mp3", normalize = false) AudioDub(V, A)
NicAudio - MP1/MP2/MP3/MPA/AC3/DTS/LPCM:
Některé příklady:
LoadPlugin("C:\Program Files\AviSynth25\plugins\NicAudio.dll") # AC3 audio: V = BlankClip(height=576, width= 720, fps=25) A= NicAC3Source("D:\audio.AC3") # A = NicAC3Source("D:\audio.AC3",downmix = 2) #downmixováno-změněn počet kanálů na stereo AudioDub(V, A) # LPCM audio (48 kHz, 16 bit and stereo): V = BlankClip(height=576, width=720, fps=25) A = NicLPCMSource("D:\audio.lpcm", 48000, 16, 2) AudioDub(V, A)
BassAudio - MP3/MP2/MP1/OGG/WAV/AIFF/WMA/FLAC/WavPack/Speex/Musepack/AAC/M4A/APE/CDA:
BassAudio můžete stáhnout zde. Některé příklady:
# FLAC soubory: bassAudioSource("C:\ab\Dido\001 Here With Me.flc") # OGG soubory: bassAudioSource("C:\ab\Dido\001 Here With Me.ogg") # AAC soubory: bassAudioSource("C:\ab\Dido\001 Here With Me.aac")
# Audio-CD ripování využívající tento plugin # Stáhněte BASSCD 2.2 z oficiální domovské stránky BASS # Rozbalte basscd.dll a přejmenujte ho na bass_cd.dll # Umístěte bass_cd.dll do stejné složky jako bassAudio.dll bassAudioSource("D:\Track01.cda")
2) DirectShowSource:
Podívejte se na kapitolu " Jiné kontejnery s audiem " pro více informací. Některé directshow filtry (kromě těch, které jsou v ffdshow) pro Ogg Vorbis, Speex, Theora a FLAC najdete zde.
audio: MP2/MP3 s WAVE hlavičkou (header):
Použijte ffdshow: MP1/2/3 dekódování zapnuto a vyberte mp3lib nebo libmad.
audio: AC3/DTS s WAVE hlavičkou (header) (tak zvané DD-AC3 a DTSWAV):
Použijte ffdshow: DTS dekódování zapnuto a nekomprimované: podporovat všechny formáty.
Příklad:
# DTS ve WAV: V = BlankClip(height=576, width=720, fps=25) A = DirectShowSource("D:\audio_dts.wav") AudioDub(V, A)
nebo vytvoříme graph:
# DTS ve WAV: # použijeme WAVE parser a ffdshow nebo AC3filter: [přidat obrázky] V = BlankClip(height=576, width=720, fps=25) A = DirectShowSource("D:\audio_dts_wav.grf", video=false) AudioDub(V, A)
aac:
Vezměte AAC directshow filtr jako CoreAAC (přesvědčte se, že downmixing-snížení počtu kanálů je vypnuto, kromě případu kdy chcete snížit počet kanálů;) nebo ffdshow (s AAC nastaveným na libfaad nebo realaac), a použijte
DirectShowSource("d:\audio.aac")
pro načtení vašeho AAC. Můžete potřebovat AAC parser filtr pro DirectShow. Najdete ho zde [2].
1) Použijte ImageReader nebo ImageSource pro načtení vašich obrázků do AviSynthu (umí načíst nejoblíbenější formáty, kromě GIF a animovaných formátů). Viz vnitřní dokumentaci pro informace.
2) Použijte plugin Immaavs pro GIF, animované formáty a jiné typy obrázků.
# samostatný obrázek: immareadpic("x:\path\pic.bmp") # animovaný gif: immareadanim("x:\path\anim.gif")
Otevřete Radlight Filter Manager a vyberte, který z filtrů schopných přehrávat váš klip má vyšší merit. Změňte merit u filtru, který chcete použít pro přehrávání, například:
a restartujte vaše PC. Podle mé zkušenosti to vždy nefunguje. V AC3Filter, například, je nastavení zvané 'Filter Merit" které je nastaveno na 'Prefer AC3Filter' jako výchozí. Ačkoliv byl v mém případě merit pro AC3Filter nastaven nižší než merit pro Moonlight Odio Dekoda (MERIT_NORMAL versus MERIT_NORMAL+1), byl pro přehrávání mého AC3 byl použit první z nich (předpokládám, že je to důsledek nastavení 'Prefer AC3Filter' v AC3Filter; nastavení na 'Prefer other decoder' ('Preferovat jiné dekodéry') tento problém vyřeší). Jiné filtry mohou mít také takové nastavení.
Formou příkladu zde bude ukázáno jak vytvořit graf (graph) kde CoreAAC Audio Decoder bude použit k rendrování audia v AVI-AAC souboru. Přesněji, bude ukázáno jak by měl být nahrazen ffdshow Audio dekodér dekodérem CoreAAC Audio Decoder, kde první má vyšší merit (čímž se rozumí, že filtr bude použit při přehrávání klipu v přehrávačích založených na DirectShow jako WMP6.4 nebo při otvírání AVI přímo v AviSynthu pomocí DirectShowSource):
Otevřete GraphEdit a otevřete váš klip: File -> Open Graph -> Select All Files -> otevřete váš klip:
Klikněte pravým tlačítkem myši na filtr (ffdshow Audio decoder) -> Filter Properties -> změňte nastavení, pokud je to nutné.
Graph -> Insert Filters -> pod DirectShow Filters -> vyberte CoreAAC Audio Decoder:
Stiskněte Insert Filter. Odstraňte ffdshow Audio dekodér tím, že ho vyberete a stisknete Delete:
Nakonec, připojte CoreAAC Audio Decoder, připojením pinů pomocí levého tlačítka myši (šipky budou nakresleny automaticky):
Zkontrolujte a upravte vlastnosti filtru, jestli je to nutné. Stiskněte play pro kontrolu zda lze klip přehrávat zvolenou kombinací DirectShow filtrů. To je velmi důležité, protože pokud ho nelze přehrávat, AviSynth nebude schopen otevřít klip. V takovém případě by jste měli vybrat a nebo nainstalovat jiné filtry, které umí klip přehrát.
Nakonec odstraňte WaveOut Device a video filtry, protože AviSynth potřebuje volný pin pro své připojení když je ve skriptu volán DirectShowSource.
Uložte graf jako audio.grf. Pokud chcete načíst také video do AviSynthu, mělo by být načteno odděleně, použitím jiného grafu (kde jsou audio část a Video Renderer odstraněny):
Uložte graf jako video.grf. Váš skript bude vypadat:
# změňte fps jestli je to nutné vid = DirectShowSource("D:\video.grf",\ fps=25, convertfps=true, audio=false) aud = DirectShowSource("D:\audio.grf", video=false) AudioDub(vid, aud)
$English Date: 2008/07/11 18:28:55 $
Český překlad:12.2.2009