Il nodo FileStream (DShow9) riproduce i seguenti formati video (ammesso che codecs necessari siano installati):
Il pin Filename non può accette lo spreading, quindi può essere riprodotto un solo file alla volta.
Ci sono due tipi di VideoTextures
Questo è il più semplice; funziona con versioni di WindowsXp precedenti al ServicePack2.
Funziona solo con installazioni di WindowsXP dal ServicePack2 in poi. Rende possibile il deinterlacciamento di alcuni video, e potrebbe essere più veloce in alcune situazioni.
Ora c'è anche il plugin VLC.
Per riprodurre files Quicktime con vvvv è necessario installare quicktime alternative 1.81. Questa versione di Quicktime Alternative è stata l'ultima ad includere anche i filtri DirectShow; nelle versioni successive sono stati rimossi per motivi legali. Questo può significare che codecs quicktime rilasciati dopo il 2007 (la data del rilascio di qt-alternative 1.81) potrebbero non funzionare.
In questa pagina su wikipedia, in inglese, si possono trovare altre informazioni.
Note bene: non ho ancora testato queste releases. Se avete delle segnalazioni da fare, postatele qui, per favore - h99
Per riprodurre files .amr è necessario installare il Plugin Quicktime di MediaLooks (e vvvv > beta13.1).
Dovrebbe anche essere possibile usare il plugin QTSource per AviSynth.
Vedere elektromeier-AVSAVIJoiner. Serve ad unire più filmati tramite uno script. Serve questo pacchetto: AVS AVI Joiner.
Si può passare da un video ad un altro senza interruzioni connettendo un nodo Switch (String) al pin Filename di un nodo FileStream (DShow9). Così si può ottenere una transizione morbida tra due video, e funziona anche con i codecs Mjpeg e Xvid.
Se si connette solo un IOBox (String), senza lo Switch (String) prima di FileStream (DShow9), il filamto non verrà riprodotto, proprio perché Filestream non supporta lo spreading, accetta cioè un solo filename alla volta. Si può anche usare un nodo GetSlice (String). Un altro sistema può essere quello di generare un unico video ed impostare più punti da cui farlo riprodurre.
Un metodo ancora: usare AVI-Synth come suggerito qui.
Questo succede quando la CPU lavora molto vicino al 100%.
La riproduzione di video DirectShow ha una priorità di default molto bassa in Windows, così che se qualche processo consuma molte risorse, il video è il primo a risentirne, ed altrettanto naturalmente, quando si lavora con grafica in tempo reale, indipendentemente dalla GPU, anche la CPU viene messa a dura prova.
Impostando il pin WaitForFrame si può far sì che vvvv attenda che Windows abbia un po' di risorse per riprodurre il frame successivo. Il valore in questo pin è misurato in millisecondi: così se il video gira a 25 fps, ogni frame avrà durata di 40 ms. Diventa così sensato aspettare 40 ms prima di inviare il prossimo frame.
In alternativa si può generare un nodo MainLoop(VVVV) ed abbassare il valore di 'foreground fps'. Tenete presente che di solito ha senso far combaciare i framerates del rendering e del filmato, ma se la patch consuma un sacco di risorse, c'è ben poco da fare.
Per far girare un video in loop, oltre ad attivare la funzione dal pin Loop, devono essere inseriti nuovi valori per i pins Start Time ed End Time, di default a 0. Sarà quindi possibile fare il loop di tutto il filmato, o solo di una parte.
Se al momento di far ripartire da capo il video al punto scelto, la riproduzione si ferma per un istante si può:
Il nodo FileStream produce un flusso continuo di dati dal disco, il che succhia un bel po' di risorse; si deve dire inoltre che l'architettura multimediale di Windows non è stata esattamente progettata per un uso creativo dei video. La strategia migliore potrebbe essere quella di evitare il formato .avi del tutto.
Per generare una sequenza di fotogrammi basterà generare uno spread di textures. Rimane consigliabile convertire le immagini in .dds, il formato delle texture per DirectX. La conversione può essere effettuata usando questo tool per vvvv; Qui trovate anche dei links per applicazioni esterne.
Un workflow potrebbe essere questo: generate un nodo Dir (File) e collegate il suo outlet con il nodo FileTexture (EX9.Texture); ora collegate il suo output pin ad un nodo Getslice (Node). Cambiando il valore del pin Index di GetSlice, ad esempio con FrameCounter (Animation), o Counter (Animation) o un nodo + in combo con un FrameDelay (Animation), azionerete la riproduzione dei files in ordine alfabetico. Tenete presente che l'azione di GetSlice è diretta alle textures, e non ai filenames.
Nel caso che le textures siano in piccola quantità e/o di piccole dimensioni - il concetto di piccolo in questo caso assume forme diverse, e molto, in relazione all'hardware che usate; potrebbe essere utile quindi "tenere in ordine" il disco rigido, nel caso non siate passati/e ad un SSD - di solito non ci sono grossi problemi.
Raramente le cose vanno così lisce, comunque: si può avere un lag minimo, con un buco nero o un immagine bloccata per una frazione di secondo, oppure trovarsi con un renderer inchiodato per alcuni, interminabili secondi.
vvvv cerca di ottimizzare la memoria in uso liberandola dalle textures che in quel momento non sono visibili: naturalmente possiamo chiedergli di non liberare questo spazio e di mantenere le immagini caricate e pronte all'uso grazie al modulo Preloader (EX9.Texture). Consultate la HelpPatch per capire a fondo come funzioni.
Usate Memory (Debug DX9) per avere un'idea del consumo di memoria della vostra scheda video; qui e qui troverete dettagli direttamente da MS su msdn; cercate anche su google AGP Aperture Size.
Potrebbe anche accadere che saturata la RAM della scheda video e del sistema, Windows cominci ad usare lo swapping - con le conseguenze che potete facilmente immaginare. In generale, il led dell'harddisk non si dovrebbe accendere durante ed a causa del loop.
Se si hanno, ad esempio, 64 fotogrammi molto piccoli è possibile usare un vecchio trucco da programmatore di videogiochi, per ottenere ancora più velocità: sistemate tutti i frame in una griglia 8x8 in un'unica texture (se le immagini sono già piccole fate attenzione a non ridurle ulteriormente). Usate GridSplit (2d) ed un nodo Transform (2d) per calcolare la trasformazione di una texture basando le coordinate sul frame attuale. GridSplit (2d) consente di impostare griglie di qualsiasi dimensione e suddivisione - per comprendere ancora meglio di cosa si tratti aprite la sua Helppatch.
Sia questo che il metodo descritto sopra consentono di riprodurre video con differenti posizioni dei fotogrammi su molti oggetti - cosa che potrebbe risultare non proprio soddisfacente usando più nodi Filestream.
Può essere usato un nodo Queue (EX9.Texture) per pre-caricare un .avi.
FileStream -> VideoTexture -> Queue -> GetSlice
Ora riproducete il file impostate su 1 il pin Insert; al termine del filmato impostate su zero ((pin:Insert). A questo punto Queue (EX9.texture) dovrebbe essere pieno di textures da poter sfruttare modificando il pin Index di GetSlice .
Naturalmente tutto quello che caricate dentro Queue finisce direttamente nella memoria video.
In una nota del 2010 joreg fa notare come Queue (Texture) funzioni solo con schede video ATI, a causa di certi bugs nei driver Nvidia - leggi l'articolo in inglese.
Nel Forum ci sono un paio di thread interessanti: video preload e VVVV hangs / framerate jumps when changing textures.
anonymous user login
~9h ago
~9h ago
~10h ago
~11h ago
~12h ago
~12h ago
~14h ago
~14h ago
~16h ago