Video server plug-in e AVIWrapper : i sostituti di avisynth ????

Sin da quando è nato il mio sito, ho dedicato molto spazio all'utilizzo di avisynth, a cui ho tra l'altro dedicato un articolo. Vediamo le caratteristiche, pro e contro di un suo potenziale successore: il video server plug-in.

Introduzione ad avisynth e al meccanismo di client-server

Video server plug-in e AVIWrapper

Installazione

Premiere--->video server plug-in --->Tmpeg

Premiere--->avisynth --->Tmpeg

Xmpeg--->video server plug-in--->Tmpeg  e  Xmpeg--->avisynth--->Tmpeg

 



Introduzione ad avisynth e al meccanismo di client-server

Ecco in breve la storia di avisynth. Il tutto nasce dallo standard "premiere plug-in" inventato dalla Adobe. Premiere come tutti i software di editing non lineare elabora una serie di video in ingresso ( normalmente avi o filmati quicktime) e dopo aver eventualmente aggiunto titoli, effetti, filtri, transizioni,,, si incarica di convertirli in un formato di uscita; Ppremiere 6, l'ultima versione disponibile, permette liberamente di creare in uscita file nel formato avi, Quick time, Real Video, Windows Media Encoder, DV.

Tramite i Premiere plug-in, prodotti da terze parti, è possibile creare in uscita video in altri formati, normalmente mpeg 1 o 2: il funzionamento è semplice, poichè in maniera trasparente  e automatica, premiere passa al plug-in il video elaborato in formato non compresso (RGB o YUV per il video e PCM per l'audio) e il plug-in lo comprime secondo i parametri precedentemente impostati. Naturalmente il passaggio dei dati è fatto tramite la RAM del sistema e nessun file aggiuntivo è memorizzato su HD. I plug-in più noti per Premiere sono il CCE Encoder plug-in, LSX Encoder plug-in, BBmpeg plug-in e il Panasonic encoder, quest'ultimo capace di creare solo mpeg1 (il panasonic plug-in compatibile mpeg2 è stato annunciato ma non è ancora disponibile).

A livello di terminologia, Premiere lo si dice server proprio grazie alle sue capacità di Fornire dati al plug-in.
I plug-in sono memorizzati nella cartella plug-in di Premiere (normalmente C:\Programmi\Adobe\Premiere\Plug-ins ).
Grazie alla possibilità concessa da Adobe, di accedere al pacchetto di sviluppo relativo al formato Premiere plug-in, sono disponibili altri Software che si comportano da Server: i più importanti sono FlaskMpeg, Xmpeg, DVDX e Mpeg Mediator.
Questi software si comportano in maniera analoga a Premiere : leggono dei file mpeg e passano i dati (audio-video non compresso) ai plug-in installati nella directory del programma.

Avisynth partendo dalle specifiche dei Premiere Plug-in cerca di risolvere un altro tipo di problema: passare i dati prodotti dal server (Premiere, Xmpeg,..) ad un qualsiasi Encoder (software di compressione video) che non è disponibile come plug-in ma che al contrario è capace di leggere solo file avi.
L'esempio classico è il caso in cui si desidera comprimere in mpeg il montaggio di Premiere o il video decodificato e ridimensionato da Xmpeg, utilizzando il sw tmpeg, non disponibile come plug-in. Se non si ricorresse ad avisynth, l'unico metodo possibile in grado di preservare al massimo la qualità, sarebbe la compressione in due fasi: la creazione con Premiere (o Xmpeg) di un AVI con audio e video non compresso e la successiva compressione di tale avi in mpeg con Tmpeg. I problemi di una simile soluzione sarebbero 3: disponibilità di un adeguato spazio su HD per memorizzare l'avi non compresso, rallentamento della compressione a causa del doppio passaggio e non ultimo il famoso limite dei 4 GByte ( massima dimensione possibile dell'avi) se si utilizza Windows 98/98SE/ME (FAT32) o 2 GByte se si utilizza Windows 95 e FAT 16. Solo con Windows 2000/NT/XP e HD formattati NTSC è possibile creare avi con  dimensione superiore ai 4 GB.

La soluzione geniale trovata da  Ben Rudiak-Gould, autore di Avisynth (che è un normale plug-in di Premiere), è quella di creare un meccanismo tale che il server (Premiere, Xmpeg,..)  ha il compito di creare fotogramma per fotogramma il flusso audio-video non compresso nella RAM del computer; il client, ovvero un qualsiasi software capace di leggere avi e creare mpeg (o in generale flussi audio-video compressi), accede alle locazioni della RAM  in cui sono presenti il/i  fotogrammi non compressi e l'audio, e comprime tali fotogrammi in mpeg (in generale nel formato compresso). Osservo come il client può essere semplicemente un software capace di visualizzare gli avi, vedi il Windows Media Player.

Tale meccanismo, che un pò arbitrariamente chiamo catena,  negli articoli del mio sito lo trovate simboleggiato come server-->avisynth--> client: ad esempio Premiere-->avisynth--->Tmpeg o Flaskmpeg-->avisynth--->Tmpeg.

Come si crea concretamente la catena, lo trovate descritto nell'articolo sull'avisynth e in generale in tutti gli articoli in cui tale metodo è utilizzato. La premessa è che sotto Windows l'estensione dei file molte volte non ha alcuna importanza: provate ad esempio a rinominare un video mpeg1 cambiando l'estensione (da test.mpg a test.aaa); tale mpeg se caricato con il media player verrà riconosciuto e letto senza alcun problema.
Poiché i client (gli encoder) sono normali software capaci di leggere avi e l'unica maniera per caricare un video è quella di aprire l'avi, allora come più volte visto con il client ( premiere,Xmpeg,..) si setta in uscita l'avisynth plug-in, si sceglie come nome del file semplicemente "1" e si avvia la conversione; con il client si carica un particolare file di testo che nelle mie distribuzioni di avisynth è detto carica.avs e per ultimo si avvia la conversione con il server. Il server, non sapendo dell'inghippo penserà di leggere un normale file avi memorizzato su HD; in realtà accederà ai fotogrammi non copressi che di volta in volta il client gli passerà.

L'unico importante svantaggio di tale metodo, al di là dell'apparente complessità che fatta un po' di pratica svanisce, sta nel fatto che non tutti  gli encoder funzionano correttamente come client: uno dei software più  famosi incompatibile con avisynth è il noto CCE Encoder Stand alone (LSX encoder diventa compatibile con una leggera modifica descritta nell'articolo sull'avisynth).

Avisynth in realtà è molto più di un semplice plug-in che passa i dati dal server al client come visto: tramite avi synth, e in particolare con le nuove versioni è possibile utilizzare le sue numerose capacità di elaborazione audio/video: avisynth diventa a tutti gli effetti un macrolinguaggio di programmazione specializzato unicamente in elaborazioni di flussi audio-video 
Tramite un file di testo che elenca una serie di operazioni compatibili con tale linguaggio (uno "script"), memorizzato con l'estensione avs, è possibile trasformare avisynth addirittura in un server (un premiere in miniatura) capace di leggere, unire, elaborare uno o più file audio-video (anche in successione) e passarli sempre in formato non compresso, al client. Grazie alla possibilità di utilizzare delle librerie esterne, è capace addirittura di decodificare e elaborare perfettamente video mpeg2 e di passarli al client che li vedrà semplicemente come avi non compressi. Chi è interessato a tale utilizzo, trova una ottima base di partenza su www.videotools.net/ : esistono tra l'altro software che creano automaticamente degli script per avisynth, uno tra questi l'utilissimo e complicato GordianKnot ( http://www.doom9.org sezione download) che si aggancia tra l'altro al mitico DVD2avi.
A titolo di esempio, un po' per...... stuzzicare l'appetito, uno script di avisynth che decodifica, ridimensiona (da 720*576 anamorfico a 480*576 non anamorfico) , filtra con un filtraggio antirumore un DVD utilizzando un file progetto creato con DVD2avi e un paio di librerie esterne tutte ovviamente freeware.

loadplugin("c:\avisynth\mpeg2dec.dll")
loadplugin("c:\avisynth\Avisynth_Spatial.dll")
v=mpeg2source("c:\videotest.d2v")
a=wavsource("c:\videotest.wav")
audiodub(v,a)
bicubicresize(480,432)
addborders(0,72,0,72)
SpatialSoftenMMX(1,4,6,false,false,4,4,6,8)

Facendo leggere tale script, memorizzato ad esempio nel file test.avs a tmpeg, è possibile avviare la conversione per la creazione di un SVCD 480*576 non anamorfico.

 



Video server plug-in e AVIWrapper.

I pretendenti alla successione di avisynth sono il Video server plug-in e AVIWrapper. Occorre un minimo di attenzione per capire il ruolo che hanno Video server plug-in,  AVIWrapper e avisynth, che come vedremo possono tranquillamente convivere insieme.

Ritorniamo ad avisynth che potete scaricare dal mio sito (è una distribuzione aggiornata): Avisynth_03.zip.

Avisynth per funzionare come "catena" tra client e server necessita di 2 componenti: la libreria di avisynth che è il file avisynth.dll e il premiere plug-in CM-Avisynth.prm da inserire nella directory plug-in di Premiere e da copiare nella directory di tutti i server (FlaskMpeg, Xmpeg, DVDX e Mpeg Mediator..) che desiderano utilizzare avisynth. Poichè Xmpeg e Flaskmpeg  richiedono che i plug-in utilizzati siano chiamati rispettivamente  Nome.cm.xmpeg e Nome.cm.flask occorre prima copiare CM-Avisynth.prm nelle directory dove ci sono gli eseguibili di Falskmpeg e Xmpeg e poi rinominarli in Avisynth.cm.flask e Avisynth.cm.xmpeg.

Nella mia distribuzione di avisynth trovate  i file avisynth.dll, CM-Avisynth.prm, Avisynth.cm.flask e Avisynth.cm.xmpeg, questi ultimi 3 identici (cambia solo il nome).

Per la installazione occorre installare una volta per sempre la libreria  avisynth.dll : per far ciò sotto Windows 95/98/98SE/ME basta copiarla in Windows/System ed eseguire poi il file install.reg: sotto Windows 2000/NT/XP basta copiarla in Windows/System32 ed eseguire poi il file install.reg.
Per la installazione dei plug-in  basta copiare CM-Avisynth.prm nella directory plug-in di Premiere e nelle directory in cui ci sono DVDX e Mpeg Mediator; copiare Avisynth.cm.flask in tutte le directory in cui ci sono delle versioni di Flaskmpeg e Avisynth.cm.xmpeg in tutte le directory in cui ci sono delle versioni di Xmpeg (non voglio offendere l'intelligenza di nessuno, ma è ovvio che chi non usa tutti i software (server) citati, si dovrà preoccupare solo di copiare i plug-in dove occorre).

E' fondamentale capire la differenza che passa tra la libreria avisynth.dll installata nel sistema e i premiere plug-in (ad esempio Avisynth.cm.xmpeg) installati per ogni server. Avisynth.dll serve al client (tmpeg, windows media player,...) a interpretare correttamente il file.avs mentre ciascun premiere plug-in serve a passare i dati non compressi del video ad avisynth ( la libreria avisynth.dll) che si preoccuperà di passarli al client.

Noto che tutte le proprietà di elaborazione di avisynth (ridimensionamento, ritaglio,...) sono racchiuse all'interno della libreria avisynth.dll e sono assolutamente indipendenti dai premiere plug-in: non a caso il file di script che a titolo di esempio ho riportato funziona tranquillamente anche se non si possiede nessun server (premiere, xmpeg,..): altra cosa importante è quella di non mischiare versioni diverse di Avisynth.dll con i premiere plug-in : questo lo dico perchè sono presenti sulla rete versioni successive dell'avisynth 03 che funzionano solo con versioni successive dei premiere plug-in che trovate sul mio sito. Tra breve vedremo come utilizzare l'ultima versione di avisynth disponibile, la 1.05.

Chiarite la differenza tra la libreria avisynth.dll e i premiere plug-in  CM-Avisynth.prm (Avisynth.cm.xmpeg,..) passiamo alla accoppiata Video server plug-in e AVIWrapper.

In perfetta analogia con la catena Server-->avisynth--->Client (es. Premiere-->avisynth--->Tmpeg), si realizza la catena Server-->video server plug-in--->Client. Il meccanismo teorico è sempre lo stesso: il server (Premiere, Xmpeg,..) scrive  nella RAM del sistema il flusso audio video non compresso (fotogramma per fotogramma) mentre i client (Tmpeg, CCE, Ligos LSX ...) non fanno altro che leggere tali dati audio-video non compressi e comprimerli secondo i parametri prestabiliti.

Anche nella pratica il meccanismo di funzionamento è molto simile rispetto ad avisynth, con il vantaggio che questa volta il server (Premiere, Xmpeg,..) tramite il video server plug-in scrive un file avi (per defoult C:\IPCServer.AVI, ma si può tranquillamente cambiare il nome) che ha l'estensione avi e non avs come per l'avisynth: tale avi di dimensioni ridotte a pochi Kbyte, è solo il tramite per permettere al client (Tmpeg, CCE, Ligos LSX ) di accedere alla RAM in cui è presente il flusso audio video non compresso. Con il client basta caricare l'avi (ad esempio C:\IPCServer.AVI ) e avviare la compressione.

In pratica si procede così: all'interno del server (Premiere, Xmpeg,..) si prepara normalmente il video da convertire , si sceglie in uscita di utilizzare il video server plug-in e si avvia la conversione: in una frazione di secondo viene creato l'avi (per defoult C:\IPCServer.AVI); lasciando il server in esecuzione, si esegue il client (Tmpeg, CCE Stand alone), si carica l'avi (C:\IPCServer.AVI nell'esempio) e si avvia la conversione.

Normalmente l'avi creato  dal server (per defoult C:\IPCServer.AVI) viene chiamato "avi virtuale"  in seguito al fatto che in realtà è un file di pochi K che non contiene al suo interno il video, ma solo un riferimento a questo.

Vedremo tra breve passo passo come procedere: prima di questo alcune note importanti.

1) Il meccanismo che permette la creazione della catena Server-->video server plug-in--->Client si fonda su 2 elementi: il premiere plug-in vero e proprio cm-videoserver.prm che andrà copiato nella directory plug-in di premiere e nelle directory di ciascuno dei server da utilizzare ; è evidente come  tale plug-in è l'analogo di CM-Avisynth.prm e andrà rinominato correttamente ( vedi dopo ) dovendolo usare con Flaskmpeg e Xmpeg.
Il secondo componente è l'AVIWrapper che consiste nella libreria
Aviwrap.dll : è l'analogo della libreria avisynth.dll e serve al client (Tmpeg, CCE encoder,..) per interpretare correttamente gli avi creati dal video server plug-in.

2) L'AVIWrapper non dispone delle capacità di elaborazione di avisynth (ridimensionamento, ritaglio,...che in tutti i casi in nessuna delle mie guide ho utilizzato) e pertanto creando la catena  Server-->video server plug-in--->Client il flusso audio/video prodotto dal Server viene ricevuto dal client senza alcuna elaborazione intermedia da parte del videoserver.
3)
Creando la catena Server-->video server plug-in--->Client è possibile senza alcun problema passare video in formato YUV, utile ad esempio per velocizzare la conversione nella catena Xmpeg--->video server plug-in---> CCE stand alone
4) Il video server, non è freeware: per ogni conversione prima dell'avvio occorre attendere 10 secondi (appare un conto alla rovescia): curioso e direi anche simpatico il fatto che periodicamente,  viene richiesto prima dell'avvio della conversione il risultato di una somma matematica ,. Il costo della registrazione è di 15 Euro se fatto via posta o di 12 dollari se si usa la carta di credito.

Se si sbaglia il risultato della addizione, viene formattato all'insaputa dell'utente l'Hard Disk !!!! OVVIAMENTE sto scherzando, non succede assolutamente nulla, tranne la figuraccia di aver sbagliato una somma a 3 cifre !!! A proposito, evitate l'umiliazione di usare la calcolatrice per fare una somma così banale !!!!!!!!!
PS. Sarà la legge di Murphy ma le addizioni tendono sempre ad avere il riporto: sfortuna mia o sottile cattiveria del programmatore ??????

5)
Per permettere a certi Client apparentemente incompatibili di poter essere utilizzati (tra questi il noto LSX encoder v3.5 e il Microsoft Media Encoder v8)  è disponibile la modalità (RAW AUDIO): in pratica il file avi creato dal server non è più un piccolo file di pochi Kbyte che il client legge per accedere al video fornito dal server, ma un avi identico per la parte video (c'è solo il riferimento che non occupa spazio), che contiene però l'audio non compresso. Tale avi ha una dimensione pari a quella dell'audio non compresso (176 Kbyte per ogni secondo nel caso di audio 16 bit 44100 Hz) e naturalmente quando si crea l'avi con il server, occorre attendere il tempo necessario alla decodifica e alla scrittura dell'audio.
6)
Ecco la lista dei client e server garantiti dall'autore:sono indicati i client per i quali è necessario ricorrere alla modalità RAW audio e i server che sono compatibili con la modalità YUV

Server

Client

Premiere v5.x
Premiere v6.x
FlasK v0.x
Xis x.x (YUY)
Xmpeg (YUY)
DVDx
Mpeg mediator
 

Microsoft Media Encoder v8  ( RAW Audio)
Cinemacraft SP v2.50, v2.62, v2.64
TMPGEnc
VirtualDub v1.4d
NERO encoder plugin v1.2
LSX encoder v3.5 (RAW Audio)
Ulead DVD Movie Factory (editor)
 

 

7) La cosa estremamente interessante, sta nel fatto che tramite il video server plug-in oltre che attivare la catena Server-->video server plug-in--->Client è possibile attivare, se lo si desidera, la catena Server-->avisynth--->Client.
In pratica se si vuole utilizzare sia l'avisynth che il videoserver, basta installare una volta per sempre l'aviwrapper (
Aviwrap.dll) e l'avisynth (avisynth.dll), mentre in tutti i server che si desidera utilizzare basterà copiare il videoserver plug-in (cm-videoserver.prm) (rinominato correttamente se si usano xmpeg e flaskmpeg). Sarà possibile poi liberamente scegliere se creare la catena con l'avisynth o quella con il videoserver. Naturalmente è conveniente poi cancellare gli eventuali avisynth plug-in , che sarebbere degli inutili doppioni.

 



Installazione

Vediamo come procedere per l' installazione.

- scaricare dal mio sito il file zippato Videoserver plug-in (173 Kbyte) e per chi desidera utilizzare avisynth, consiglio di scaricare sempre dal mio sito l'ultima versione disponibile, la 1.05 avisynth105 (92 Kbyte)

- scompattare il file Videoserver plug-in.zip : questo contiene 5 file e una cartella

- copiare il contenuto della cartella Avivrap in una cartella d'appoggio che nell'ipotesi in cui si utilizza windows 95/98/ME deve necessariamente avere un nome di massimo 8 caratteri, ad esempio c:\appoggio (se il file aviwrap.dll non appare non c'è nessun problema: semplicemente  in visualizza/opzioni di cartella/visualizza non è settata la modalità hidden files- show all files)

- click destro su aviwrap(.inf) e click su installa: è stato installato nel sistema  l'aviwrapper (Aviwrap.dll): si può tranquillamente cancellare la cartella temporanea ( c:\appoggio nell'esempio)  poiché Aviwrap.dll è stato copiato nella directory windows/system se si usa windows 98/98SE/ME o windows/system32 se si usa windows NT/2000 o XP .

IMPORTANTE
Come riportato nell'articolo su XMPEG 4.2a , l'installazione  dell'aviwrapper  rende impossibile la creazione diretta di divX con audio mp3, all'interno di Xmpeg: il problema è trattato e risolto nella sezione
Xmpeg e la creazione diretta di video (ad esempio Divx) con audio mp3 e codec Fraunhofer-II

- a questo punto occorre copiare i plug-in all'interno di ciascuno dei server eventualmente installati: da notare che nella mia distribuzione trovate 3 file identici, a meno del nome:
cm-videoserver.prm da copiare nella directory plug-ins di Premiere (normalmente C:\Programmi\Adobe\Premiere\Plug-ins ) e nella directory di DVDx e Mpeg mediator
videoserver.cm.flask da copiare in tutte le directory in cui si ha una qualsiasi versione di Flaskmpeg (xis_30e_expert compresa)
videoserver.cm.xmpeg
da copiare nella directory in cui si ha Xmpeg

- per chi desidera installare l'ultima versione di avisynth basta decompattare il file avisynthv105.zip e copiare il file avisynth.dll nella directory windows/system se si usa Windows 98/98SE/ME o Windows/system32 se si usa windows NT/2000 o XP ; se è la prima volta che si installa avisynth occorre doppiocliccare su install.reg.

Vediamo come creare ad esempio le catene Premiere--->video server plug-in--->Tmpeg e  Xmpeg--->video server plug-in--->Tmpeg  e le analoghe Premiere--->avisynth--->Tmpeg e  Xmpeg--->avisynth--->Tmpeg.

 



Premiere--->video server plug-in--->Tmpeg

Dopo aver eseguito premiere, preparato il video da convertire con la totale libertà di utilizzare transizioni, filtraggi, titolazioni,...occorre cliccare, come di consueto per la creazione del file finale, su file/export timeline/movie (ctrl -M) e setting.

Dopo aver predisposto i parametri di premiere relativi a risoluzione, field, formato audio,...occorre settare in general il plug-in video server e cliccare su Advanced setting .Ecco i parametri da settare.

Server mode serve per decidere il tipo di catena da creare, avisynth o videoserver:
AviWrapper per avviare la catena Premiere-->video server plug-in--> Tmpeg (nell'esempio)
Connect to AVIsynth per avviare la catena Premiere-->avisynth--> Tmpeg

Nel nostro caso avviamo la catena con il videoserver.

Wrapper Server Settings : con file si setta il nome dell'avi che sarà creato (c:\IPCServer.avi di default) e che dovrà essere poi caricato dal client, tmpeg nel nostro esempio. Settando Normal Audio esport sia il video che l'audio saranno "virtuali" con il meccanismo del passaggio dei flussi non compressi tramite la memoria Ram del sistema: in tal caso la creazione dell'avi è immediata e l'avi creato ha una dimensione di pochi Kbyte.
Settando
Use RAW Audio in avi il video sarà "virtuale" mentre l'audio sarà scritto nel file avi nel formato PCM non compresso (RAW audio) : la creazione dell'avi non è più immediata e l'avi occuperà lo spazio dovuto al flusso audio. Tale modalità serve se si utilizzano software quali Microsoft Media Encoder v8 o LSX Encoder. Negli altri casi va settato Normal audio esport. Inutile la modalità Route audio  to avisynth, da usare in casi molto particolari in cui si vogliono utilizzare le elaborazioni audio di avisynth.

Save to WAV : normalmente tale opzione va deselezionata.

Può essere attivata per particolari esigenze: in tal caso tramite il videoserver viene passato solo il video (l'avi "virtuale" contiene solo video) mentre contemporaneamente  l'audio è memorizzato in formato WAV non compresso, nel file indicato.

C'è anche la possibilità di comprimere a posteriori l'audio ( in automatico dopo aver risposto positivamente alla domanda "still want to do the postprocessing?")  nel formato mpeg1 layer II, quello dei VCD, XVCD e SVCD, al termine della conversione video. Ciò lo si effettua termine il software  wav2mp (47 Kbyte)  che in tal caso va installato nella stessa directory in cui c'è il videoserver plug-in (nell'esempio di Premiere, normalmente  C:\Programmi\Adobe\Premiere\Plug-ins .

Le opzioni presenti in PostPro, che consiglio di deselezionare come in figura, servono per utilizzare il plug-in freeware BBmpeg (da copiare nella directory del plug-in) per operazioni automatiche di multiplexing di eventuali flussi mpeg audio e video appena compressi. Sinceramente ritengo inutile una simile possibilità, nel momento in cui BBmpeg può sempre essere usato in seguito nella sua versione Stand alone: in tutti i casi chi è interessato può consultare il sito www.videotools.net
Internal
Time Out enabled : se si seleziona (sconsigliato) ilplug-in si disattiva dopo un certo numero di secondi (90 di default) evitando così "l'onerosa operazione" di cliccare su STOP (vedi dopo) al termine della conversione.

Random access : per l'uso con premiere tale opzione va necessariamente selezionata; il client vedrà così l'avi "virtuale"  come un normalissimo avi e sarà possibile posizionarsi in qualsiasi fotogramma mantenendo perfetto il sincronismo audio video. Osservo che tale opzione non produce i medesimi effetti con Flaskmpeg/Xmpeg che al contrario sono in grado di fornire in successione i flussi audio-video senza possibilità di indicare un preciso punto diverso dall'inizio: ciò deriva dal fatto che Flaskmpeg/Xmpeg diversamente da premiere  non sono  in grado di posizionarsi su un particolare fotogramma (ad esempio il fotogramma 1256 dell'mpeg selezionato) ma solamente su una posizione  espressa come offset in termini di byte, ad esempio il byte 1.567.748 del file test.mpg.Stesso discorso per DVDx

IMPORTANTE

Se si usa una catena Xmpeg (Flaskmpeg)-->videoserver plug-in --->CCE occorre DESELEZIONARE RANDOM ACCESS (in caso contrario si ha un errore al termine  della compressione) .

Create log file: se selezionato viene creato nella stessa directory del file avi "virtuale" un file di testo,   LogFileXX.log, con indicazioni sul frame serving: per gli addetti ai lavori ..... e i curiosi

Set plug-in  in Benchmark mode: se selezionato il flusso audio-video non viene passato al client, ma si apre una finestra che indica al termine la velocità in fotogrammi al secondo con cui il video viene passato ad un ipotetico client: ovviamente l'avi virtuale non viene creato. Il risultato delle statistiche è memorizzato in c:\benchmark_results.txt. Personalmente per fare delle statistiche più attendibili, deseleziono tale opzione, ma creo la catena Premiere (o Xmpeg,..)-->video server--> Tmpeg  attivo in quest'ultimo il preview (file/preview) e click su H (massima velocità possibile). Attenzione a non visualizzare l'immagine ingrandita: click destro sul preview e original size. Per statistiche "serie" occorre utilizzarre il buon metodo del cronometro e i
fotogrammi al secondo (FPS) =immagini visualizzate/secondi

Delete .vaf Before encoding (CCE): se selezionato, prima della creazione dell'avi viene cancellato, se presente,  il file .vaf che il Software CCE (Cinema Craft Encoder) utilizza per le compressioni a doppia-tripla... passata. Tale opzione va usata quando si avvia una nuova conversione con il CCE  e si vuole cancellare il file .vaf scritto per un'altro video in una conversione precedente: il file .vaf contiene le informazioni relative alla complessità dei singoli fotogrammi e chiaramente va cancellato e aggiornato se il video da comprimere è cambiato.

Suggest bitrate: se selezionato prima della creazione dell'avi viene visualizzato un piccolo calcolatore di bitrate che suggerisce il bitrate da inserire nel caso di creazione di SVCD; stranamente i parametri di spazio occupato sono sempre riferiti alla conversione su 2 CDR 74.

Split source: non viene creato un solo avi virtuale ma 2 avi, riferiti a spezzoni di video consecutivi : c:\IPCServer0.AVI avente durata in secondi pari a quanto indicato(5 secondi di default) e  c:\IPCServer1.AVI la cui durata è ovviamente dal punto di split alla fine. Osservo che per la conversione con il client (Tmpeg nell'esempio) occorre prima caricare IPCServer0.avi ed effettuare la conversione , poi cliccare STOP sul premiere video server plug-in (vedi dopo) e in seguito caricare  IPCServer1.avi ed effettuare la seconda conversione.
Anche in questo caso una comodità in più di cui si può tranquillamente fare a meno.

Terminata l'immissione dei parametri click 2 volte su OK (il primo OK per il plug-in e il secondo OK per confermare per i parametri di premiere): riguardo il nome del file questo è indifferente e si può lasciare il nome Untitled di default.

Click su SALVA per avviare il frame server; dopo il conteggio alla rovescia ( 10 secondi) o l'eventuale risultato dell'addizione click su GO! . Appare la seguente finestra  e sarà creato il file avi come indicato tra i parametri (c:\IPCServer.avi di default). Tale avi sarà considerato dalle applicazioni che lo utilizzeranno (client) come un normalissimo file avi.
 

Il nostro scopo è quello di convertire il video predisposto con premiere e per farlo ad esempio utilizziamo Tmpeg.

Non c'è in questo caso assolutamente nessuna differenza nell'uso di questo avi con Tmpeg rispetto all'uso che si fa di un qualsiasi altro avi: dopo averlo caricato (video source Browse) è possibile ad esempio utilizzare l'opzione preview (file/preview) spostandosi senza alcun problema e senza il rischio di perdere il sincronismo audio-video nella compressione (cosa che invece succede se si utilizza come server Xmpeg o Flaskmpeg); stesso discorso se si settano i parametri di filtro: nessun problema.

Settati i parametri si può avviare con Tmpeg la compressione: è possibile utilizzare la modalità di compressione a doppia passata senza problemi.

Terminata la compressione non rimane che interrompere la catena, cliccando su STOP .

IMPORTANTE: c'è una incompatibilità dell'avi virtuale prodotto dal video server plug-in con il media player sotto windows 98: se si desidera  caricarlo ugualmente, magari per un semplice preview, è importante settare la risoluzione colore a 32 bit (desktop/proprietà/impostazioni/colori): con le schede Matrox, se si usa ad esempio la modalità 16 bit si ha il crask del sistema. In tutti i casi l'autore del plug-in parla di una incompatibilità diffusa. Il mio consiglio per i preview, è quello di caricare l'avi con altri software, uno tra tutti virtual Dub.

 



Premiere--->avisynth --->Tmpeg

Come detto è possibile utilizzare avisynth, in particolare l'ultima versione  la 1.05 avisynth105 (92 Kbyte), utilizzando il medesimo Videoserver plug-in.

La novità principale rispetto all'uso del vecchio avisynth 03 (descritto nelle guide del mio sito) è che non occorre più indicare con il server(Premiere, Xmpeg,..) il file "1" ma si può indicare qualsiasi nome ; inoltre con il client (Tmpeg, Virtual dub,...) non occorre caricare il famoso file carica.avs.
Infatti tra i parametri di uscita del plug-in, analogamente a quanto appena visto, è possibile indicare il nome dell'avi virtuale (C:\IPCserver.avs di default): chiaramente con il client si dovrà caricare tale file.

Ricordo che il SW CCE Encoder Stand alone nelle versioni successive alla 2.5 è incompatibile con avisynth: con tale sw conviene sempre usare il video server anche grazie alle capacità di utilizzare la modalità YUV.

Il procedimento è praticamente identico alla catena Premiere--->video server plug-in --->Tmpeg, che ho appena analizzato. Dopo aver eseguito premiere, preparato il montaggio video (transizioni, filtraggi, titolazioni,...) occorre cliccare, come di consueto per la creazione del file finale, su file/export timeline/movie (ctrl -M) e setting.

Dopo aver predisposto i parametri di premiere relativi a risoluzione, field, formato audio,...occorre settare in general il plug-in video server e cliccare su Advanced setting .

Ecco i parametri da settare: valgono tutti i discorsi fatti per la catena Premiere--->video server plug-in --->Tmpeg (mi risparmio di ripetere le cose già dette). mi soffermo sulle differenze

Server mode serve per decidere il tipo di catena da creare, avisynth o videoserver:
AviWrapper per avviare la catena Premiere-->video server plug-in--> Tmpeg (nell'esempio)
Connect to AVIsynth per avviare la catena Premiere-->avisynth--> Tmpeg

Nel nostro caso avviamo la catena con avisynth.

Link to AviSynth setting
Create AVS file for AVISynth: occorre selezionando tale opzione così che il plug-in scriverà il file .avs, con il nome indicato in AVS filename C:\IPCserver.avs  (di default)

Gli altri parametri funzionano esattamente come  visto  nel caso precedente a cui vi rimando: il consiglio è di utilizzare i settaggi standard come in figura

    

Terminata l'immissione dei parametri click 2 volte su OK (il primo OK per il plug-in e il secondo OK per confermare per i parametri di premiere: riguardo il nome del file questo è indifferente e si può lasciare il nome Untitled di default .

Click su SALVA per avviare il frame server; questa volta non appare il conto alla rovescia e l'eventuale addizione da fare, ma appare una semplice finestra che richiede la registrazione a cui basta rispondere con Yes

Appare la seguente finestra  e sarà creato il file .avs come indicato tra i parametri (c:\IPCServer.avs di default). Tale avi sarà considerato dalle applicazioni che lo utilizzeranno (client) come un normalissimo file avi.
 

Il nostro scopo è quello di convertire il video predisposto con premiere e per farlo ad esempio utilizziamo Tmpeg.

IMPORTANTE.

Per caricare e convertire il file avs con Tmpeg occorre cliccare su option/environmental setting/VFAPI plug-in 
DESELEZIONARE AVI2 (OPEN DML) File Reader e Directshow Multimedia file reader
e
SELEZIONARE AVI VFW compatibility Reader.

Non c'è in questo caso assolutamente nessuna differenza nell'uso di questo avi con Tmpeg rispetto all'uso che si fa di un qualsiasi altro avi: per caricarlo occorre cliccare su video source Browse, selezionare e caricare il file avs (c:\IPCServer.avs nell'esempio)

E' possibile ad esempio utilizzare l'opzione preview (file/preview) spostandosi senza alcun problema e senza il rischio di perdere il sincronismo audio-video nella compressione (cosa che invece succede se si utilizza come server Xmpeg o Flaskmpeg); stesso discorso se si settano i parametri di filtro: nessun problema.

Settati i parametri si può avviare con Tmpeg la compressione: è possibile utilizzare la modalità di compressione a doppia passata senza problemi.

Terminata la compressione non rimane che interrompere la catena, cliccando su STOP .

Naturalmente per gli usi di tmpeg con altri file è opportuno al termine della conversione ritornare su su option/environmental setting/VFAPI plug-in e rimettere a posto i VFAPI plug-in selezionando quelli che servono.

 



Xmpeg--->video server plug-in--->Tmpeg e Xmpeg--->avisynth--->Tmpeg
 

Ho analizzato le catene Premiere--->video server plug-in--->Tmpeg e Premiere--->avisynth--->Tmpeg; cosa cambia nelle analoghe catene dove come server si utilizza XMPEG al posto di Premiere?

Nel caso delle catene Xmpeg--->video server plug-in--->Tmpeg e Xmpeg--->avisynth--->Tmpeg come unica differenza c'è l'impossibilità di spostarsi liberamente con il client all'interno dell'avi virtuale, pena la perdita del sincronismo audio video.

Con Xmpeg per selezionare il plug-in occore come di consueto andare in opzioni/seleziona il formato d'uscita e settare

I parametri del videoserver, andranno settati cliccando su opzioni/opzioni formato di uscita. L'avi virtuale lo si crea cliccando su esegui/inizia la conversione.

Come detto, utilizzando Xmpeg (o Flaskmpeg) come server, l'accesso del client ( Tmpeg, Virtual Dub..) all'avi (o all'avs nel caso di avisynth) deve essere necessariamente limitato alla sola conversione.

Tanto per chiarire la cosa, se si crea l'avi virtuale con Xmpeg,  si carica tale avi con Tmpeg , si da una occhiatina a qualche fotogramma tramite file/preview e poi si inizia la conversione si otterrà un video che parte dal punto in cui si era terminato il preview e l'audio dall'inizio: in pratica Xmpeg non riporta il video al punto iniziale ma semplicemente ad ogni accesso all'avi prosegue leggendo fotogrammi successivi. La conversione diventa così inutilizzabile. Al contrario con Premiere al posto di Xmpeg tutto fila liscio: il motivo lo ho già spiegato qui.

L'unica maniera sicura per ottenere il perfetto sincronismo quando si utilizza Xmpeg-->video server---> Tmpeg o Xmpeg-->avisynth---> Tmpeg, è quella di procedere nel seguente ordine.

Creare la prima volta la catena come descritto:
1) Eseguire Xmpeg, settare i parametri e avviare la catena (esegui/inizia la conversione)
2) Eseguire Tmpeg (sempre se non è già in esecuzione), caricare il file avi o avs (c:\IPCServer.avs o c:\IPCServer.avi) ed eventualmete fare delle previsualizzazioni (file/preview) per controllare che tutto è a posto.
3) Interrompere il serving cliccando su STOP
4) Riavviare con Xmpeg la conversione (esegui/inizia la conversione)
5) SENZA RICARICARE L'AVI o il file .avs  avviare la conversione con Tmpeg (click su START)

Osservo che se al contrario si esegue Xmpeg, si settano i parametri, si avviare con Xmpeg il frame serving (esegui/inizia la conversione), si carica con tmpeg l'avi ( o l'avs) e poi si avvia la conversione si ottiene un video sfasato di un fotogramma rispetto all'audio. Il motivo è semplice: quando si carica l'avi o l'avs con Tmpeg Xmpeg invia il fotogramma n.1 a Tmpeg: appena si avvia la compressione (START), poichè Xmpeg "non riesce a tornare indietro",  Tmpeg riceverà il fotogramma n.2 mentre l'audio sarà quello iniziale. Tutta la conversione sarà sfasata di un fotogramma.
L'asincronismo che si produce  è un ritardo dell'audio di 40 ms, valore trascurabile ma in tutti i casi facilmente evitabile  se si segue il trucchetto visto.

Lo stesso discorso NON vale se si utilizza un'altro Encoder diverso da Tmpeg: ho provato CCE Encoder e virtual dub e in entrambi non c'è la perdita del primo fotogramma; non c'è pertanto bisogno di procedere come visto.
Il motivo è semplice: Tmpeg quando carica l'avi, richiama e visualizza il primo fotogramma: CCE, Virtual dub e sicuramente altri Encoder non hanno questo particolare comportamento.

25 febbraio 2002

Ritorna alla pagina digital video