# DirectShowSource

## DirectShowSource(string filename, int fps, bool "seek", bool "audio", bool "video")

filename: dokładna ścieżka do pliku
fps: prędkość klatek w klipie wynikowym (ilość klatek na sekundę)
seek: true - włącza, false - wyłącza wyszukiwanie w klipie
audio/video: przyjmuje wartość true (prawda) - włącza ścieżkę audio/video (wartość domyślna) - a false (fałsz) wyłącza

DirectShowSource wczytuje klip video wykorzystujący DirectShow. Filtr ten może wczytać większość formatów, które potrafi odtworzyć Media Player - w tym MPEG, MP3 i QuickTime, także pliki AVI, których nie wczytuje AVISource (takie jak DV typ 1, lub pliki korzystające tylko z kodeka DirectShow). Przy plikach AVI najpierw spróbuj wczytać taki klip video poprzez AVISource, dopiero po nieudanej próbie sięgnij po filtr DirectShowSource.
UWAGA:
- niektóre dekodery (zwłaszcza MS MPEG-4) będą wytwarzać video ‘do góry nogami’. Do zniwelowania tego można użyć filtr FlipVertical
- dekodery DirectShow nie wspomagają dokładnego wyszukiwania klatek (w większości przypadkach wyszukiwanie powinno działać, ale czasem mogą być z tym problemy)
- dekodery DirectShow czasami nie informują o prędkości klatek w klipie video (w większości przypadków informacja ta jest odczytywana z nagłówka pliku jednak nie przy plikach ASF), tak więc jeśli fps jest równy, np. 15 to linijka skryptu powinna wyglądać następująco: DirectShowSource("video.asf", fps=15).
Począwszy od wersji 2.53 dodano:
- wspomaganie audio w DirectShowSource. DirectShowSource może otwierać formaty takie jak: WAV/DTS/AC3/MP3 pod warunkiem, że można je odtworzyć, np. w WMP. (bardziej dokładnie: pod warunkiem, że są poprawnie render’owane w graphedit). Kolejność kanałów jest taka sama jak w rozszerzonym formacie wave, ponieważ materiał wejściowy jest zawsze dekompresowany do WAV. Więcej informacji na ten temat jest przy opisie filtra GetChannel
- wczytywanie audio o próbkowaniu, które wyrażają liczby całkowite: 8, 16, 24 i 32 bitów, jak i liczby wyrażone w postaci ułamka dziesiętnego, w formacie PCM i każdą ilością kanałów.
- wspomaganie pełnego wyszukiwania klatek (dostępne w większości formatach)
- wspomaganie dla plików GraphEdit (grf)
Domyślnie AviSynth będzie otwierał multimedia, które nie mają żadnych błędów, czyli w przypadku problemu z jakimś elementem (audio, video) to po prostu nie będzie on dodany w materiale wyjściowym. Oznacza to również, że problem z danym elementem nie zostanie określony. By otrzymać komunikat o błędzie trzeba wyłączyć jeden z elementów, poprzez argument audio=false lub video=false. Tym sposobem AviSynth będzie wyświetlał wiadomość o błędzie, który nie działa prawidłowo.
Filtr Graph nie działa
Jest to znany błąd, który występuje gdy DirectShow nie może dostarczyć formatu, który byłby czytelny dla AviSynth. W tym przypadku możesz sam napisać filtr graph lub ściągnąć dodatkowe filtry DirectShow, które potrafią dostarczyć poprawny materiał.
Błędna prędkość próbkowania
Niektóre filtry mogą mieć problem z niepoprawną prędkością próbkowania. Można spróbować uruchomić skrypt AviSynth przy odtwarzaniu danego pliku (z błędną prędkościa próbkowania), jednak nie jest to idealne rozwiązanie dla AviSynth. Praktyczniej będzie skorzystanie z filtra AssumeSampleRate i tam należy ustawić prawidłową prędkość próbkowania.
Lekko wzburzony dźwięk w AviSynth
Niestety AviSynth, w DirectShow, nie potrafi jeszcze wyszukiwać dokładnie w 100%. Najlepiej będzie wczytanie dźwięku innym sposobem lub zdemux’owanie ścieżki audio z klipu video i wtedy wczytać do AviSynth. Poza tym można również określić argument "seek = false".
The filter graph won't talk to me
GraphEdit, pliki GRF, są automatycznie wykrywane i ładowane przez DirectShowSource. AviSynth może łączyć te pliki jednak musisz zostawić, w GraphEdit, otwarte pin’y tych plików. AviSynth nie będzie odłączał każdego filtru, więc ważne jest by format materiału wyjściowego był poprawny.
Konwersja AC3 do stereo
W AviSynth, dźwięk stereo z AC3 można otrzymać na dwa sposoby. Jednym jest ustawienie konwersji w konfiguracji dekodera AC3, a drugim jest użycie zewnętrznego konwertora Trombettworks.
1) Zainstaluj AC3filter. Otwórz plik AC3 w WMP6.4 i wybierz właściwości pliku. Ustaw materiał wyjściowy na AC3Filter on 2/0 – stereo i jeśli chcesz uzyskać jak najlepszą jakość to przy Sample format zaznacz PCM Float.
Stwórz następujący skrypt:
v = Mpeg2Source("e:\movie.d2v")
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
Otwórz skrypt w VD zrzutuj strumień audio do MP3 (oczywiście możesz również zdemuxować do WAV, jeśli potrzebujesz).
2) Uruchom rejestr filtru directshow (start -> uruchom…):
regsvr32 ChannelDownmixer.ax
Otwórz plik AC3 w WMP6.4 i wybierz właściwości pliku. Ustaw materiał wyjściowy na AC3Filter on 3/2+SW 5.1 channels (ta konwersja nie radzi sobie z PCM Float, tak więc zaznaczamy PCM 16 bit). Numery kanałów dźwięku materiału wejściowego i wyjściowego powinny ustalić się automatycznie. Sprawdź czy rzeczywiście automatyczne ustawienie jest poprawne.
Stwórz następujący skrypt:
v = Mpeg2Source("e:\movie.d2v")
a = DirectShowSource("e:\Temp\Test2\test.ac3")
AudioDub(v,a)
Otwórz skrypt w VD zrzutuj strumień audio do MP3 (oczywiście możesz również zdemuxować do WAV, jeśli potrzebujesz).
Przy pracy z plikami DTS mogą pojawić się problemy.

### translated by Slim