I mille problemi dell'mpeg 1 e 2 : guida alle soluzioni.

  

Introduzione

 2  

Mpeg IPB o I frame: differenze e utilizzo

 3   Difetto Video Mpeg 2 visualizzato correttamente sul computer, che sul  televisione produce in tutti i soggetti in moto  immagini a scatti, sdoppiate e traballanti.  Soluzione e altre informazioni sulla gestione del video interallacciato o progressivo con l'mpeg 1 e 2
Causa Campi (Field A o B) invertiti. 
 4   Difetto Audio e video non perfettamente sincronizzati : il video appare in ritardo o in anticipo rispetto all'audio. Soluzione  
Cause Molteplici 
 5   Difetto SVCD che è visualizzato da alcuni DVD player (vedi i Pioneer DV 333 e 525) con l'immagine divisa in 2 pezzi aventi dimensioni pari a 1/3 e 2/3 di schermo. Soluzione e altre informazioni sul SHC (Sequence Header Code) e SDE (Sequence Display Extension)  
Cause Bug nel software Tmpeg B12c , B12d e nell'encoder MPEG2 real time ATI MMC (Multimedia center) fornito con le schede All in Wonder

 6  

Lettura di filmati Quick Time e Avi con Tmpeg. Considerazioni sui plug-in per Tmpeg e sulla  sua capacità di creare file avi oltre che mpeg1 e 2

7

Conversione da DivX;-) a Mpeg (o avi) con Tmpeg. Considerazioni generali sulle 3 modalità di accesso di Tmpeg al formato avi: risoluzione ai problemi di lettura degli avi (schermo nero, artefatti video)

Conversione da Mpeg 1 o 2 a Mpeg 1/2 o avi. Il plug-in freeware m2v.vfp

Come dividere in più parti un file mpeg1 o mpeg2 con Tmpeg o BBmpeg.

 

10   Difetto

Tmpeg non comprime in mpeg2

Come superare il limite 

Cause Limite posto nella compressione mpeg 2 a causa delle pressioni imposte della società "MPEG LA"

 


Introduzione

Vediamo come utilizzare le funzionalità di taglio e unione appena viste per la divisione del film in

L'mpeg video, è senza alcun dubbio protagonista di questi "primi anni" di video digitale.

Il tutto è nato con il "miracoloso" mpeg1 grazie al quale nell'agosto del 1993 , nella prima implementazione del VCD, si riuscì ad inserire in un solo CD ben 74 minuti di video ad una qualità incomparabilmente superiore rispetto a quella prodotta dai codec video digitali di allora ; il termine di paragone erano le prime, direi indecenti, implementazioni dei codec Cinepak e Indeo che con tali bitrate  riuscivano a creare dei francobolli di video a 12-15 fotogrammi al secondo con una resa cromatica neanche minimamente vicina a quella dell'mpeg che nel frattempo era stato creato grazie al contributo essenziale di ingegneri e matematici italiani.

Oggi il VideoCD è stato abbondantemente superato e rimane nei cuori dei più nostalgici: io tra quelli, non mi vergogno a rivedere l'originale VCD di Star Trek 6 "rotta verso l'ignoto" nonostante ho gustato l'ottimo DVD pubblicato 5 anni dopo con  audio ac3, formato originale..... Se il VideoCd si è "salvato in corner" con l'XVCD che offre qualità  decisamente più elevata, ora  è l'era dell'mpeg 2 nelle sue innumerevoli implementazioni; DVD, SVCD, XSVCD, DVB e presto DVD RAM, DVD+RW ,  DVD-R ..... Ovviamente il futuro è all'insegna dell'mpeg, domani con l'alta risoluzione (1440 X 1152 e 1920 X 1152) e probabilmente mpeg 2 o 4, mentre dopodomani , sono pronto a scommettere, si salirà sino alle risoluzioni cinematografiche (2560 X 2048 o giù di lì) magari con implementazioni dell'mpeg ancora più evolute.

Uno dei più grossi svantaggi dell' mpeg è la enorme libertà e varietà di implementazione ed è sotto gli occhi di tutti come i software che lo gestiscono sono ancora ben lontani dalla perfezione; desincronismi audio-video, incompatibilità, unioni e tagli non perfetti, video a scatti.....sono sempre in agguato.

In questo articolo cercherò di elencare una serie di possibili soluzioni ad alcuni di questi problemi: molto spesso per ottenere lo stesso risultato sono possibili varie alternative; tra queste vedrò se è possibile l'utilizzo di software shareware e freeware disponibile direttamente sulla rete o nel mio sito.

Cercherò inoltre di rispondere ad alcune delle domande che normalmente mi vengono poste via e-mail ; per le più banali  la risposta può essere una utile conferma agli "addetti ai lavori". 

Gli approfondimento sull' mpeg 1 e 2  lo trovate nell'articolo I formati Mpeg 1 e 2: come funzionano e come utilizzare al meglio tutti parametri di Tmpeg encoder. Dalla teoria matematica...all'uso di tutti i giorni. a cui vi rimando. Una guida all'uso dei template che ho scritto per Tmpeg la trovate nell'articolo I miei template per Tmpeg : guida all'uso .


Mpeg IPB o I frame: differenze e utilizzo

La compressione video Mpeg IPB, è l'mpeg utilizzato nei formati noti (XVCD, VCD, SVCD, DVD,...) ed è caratterizzato da una compressione  relativamente forte grazie al fatto che normalmente 11 fotogrammi su 12 sono ottenuti come differenza con immagini precedenti o successive. I fotogrammi di tipo I (Intra frame) sono quelli compressi indipendentemente dai precedenti o successivi, mentre i frame di tipo  P (Predicted Frames) e B (Bi-directional interpolate) sono ottenuti mediante differenze con fotogrammi precedenti (P frame) o precedenti e seguenti (B frame). In fase di compressione lo svantaggio di tale formato è  la grossa potenza di calcolo  che occorre per trovare i blocchetti più simili da cui calcolare le differenze con una qualità spesso insufficiente se tale ricerca è eseguita in maniera superficiale (vedi alcune implementazioni Hw o sopratutto Sw "Real time"). In fase di decompressione lo svantaggio maggiore sta nel fatto che per ricavare ogni fotogramma occorre averne in memoria altri e che l'ordine di decompressione non coincide con quello naturale; per questo motivo l'implementazione di sw di editing che operano direttamente su flussi mpeg IPB presenta notevoli differenze rispetto all'implementazione di altri codec, tanto che spesso non è presente.

La codifica Mpeg I frame, la si può considerare a tutti gli effetti come il formato Mjpeg o DV: una successione di fotogrammi (gli I frame) compressi uno indipendentemente dal successivo e dal precedente (compressione intraframe e non interframe). Per tale motivo i bitrate video sono superiori rispetto all'mpeg IPB ed è possibile editare tale formato in maniera molto più semplice, esattamente come si fa  con i suoi cugini DV e Mjpeg.

Normalmente per creare un video mpeg IPB ci sono 2 metodi diversi.

Il primo metodo consiste nelle seguenti fasi:

1) Digitalizzazione del video o sua creazione (vedi immagini di sintesi in Computer grafica) in un formato il meno possibile compresso e intraframe: i formati maggiormente usati sono il Mjpeg ,DV, Mpeg I frame; nel caso di video non compresso si utilizza normalmente il formato  YUV o RGB24.

2) Montaggio dei contributi tramite un sw di editing non lineare ( Premiere, Media Studio,...) con cui tagliare le parti  inutili, creare eventuali transizioni, filtrare il video, mixare l'audio,...

3) Nella terza fase il caso ideale è comprimere il video direttamente in mpeg all'interno del sw di editing non lineare: vedi ad esempio i plug-in mpeg per Premiere (Ligos LSX, DVmpeg, Megapeg, catena avisynth--> tmpeg,...) . In questo caso le transizioni e gli effetti sono calcolati dal Sw di editing non lineare in RAM  senza ulteriori compressioni e il fotogramma così calcolato è passato al plug-in che lo comprime in mpeg. L'alternativa, normalmente sconsigliata, è quella di creare un nuovo file che contiene il montaggio finale in uno dei formati visti (Mjpeg ,DV, Mpeg I frame), cosa che comporta una doppia compressione in tutti quei  punti in cui le immagini sono modificate dal sw di editing, con un relativo degrado qualitativo. Ottenuto il mix finale, si procede alla compressione Mpeg IPB.

Il secondo metodo consiste nella digitalizzazione direttamente in mpeg IPB  e successivo montaggio e creazione dell'mpeg IPB finale con un sw di editing che sia in grado di operare sui flussi mpeg IPB.

Il vantaggio di questo metodo è la velocità operativa cioè la creazione del file Mpeg in tempo reale; lo svantaggio il fatto che l'editing del materiale IPB è possibile solo con sw predisposti alla cosa (sono pochissimi) e normalmente l'elaborazione è limitata al semplice unire diversi spezzoni o creare delle brevi transizioni, sia per i limiti dei Sw in commercio adatti a elaborare mpeg IPB e sia perché, come visto,  ogni elaborazione ( filtraggio, transizioni,...) comporta la doppia compressione, qualitativamente sconsigliata viste le compressioni spinte dell'mpeg IPB. Il secondo motivo sta nel fatto che la compressione diretta in Mpeg IPB, a meno di apparecchiature molto costose, è normalmente inferiore rispetto ad una buona compressione fatta via sw. Naturalmente il fattore tempo può spingere ad utilizzare direttamente l'Mpeg IPB, pur sacrificando leggermente la qualità.

Riguardo la digitalizzazione  in Mpeg IPB in tempo reale, i dispositivi in grado di competere qualitativamente con una buona compressione via Sw sono molto costosi e sono gli apparecchi utilizzati per l'authoring DVD che costano decine di milioni (sono quasi sempre architetture parallele multiprocessore nel momento in cui l'mpeg è il classico algoritmo facilmente implementabile in parallelo ). 
Seguono i dispositivi Hw il cui costo si assesta tra 1 e 2 milioni: vedi ad esempio il Fast DVD master, la Matrox RT2000 che può digitalizzare in Mpeg IPB con i nuovi driver. La qualità in questi casi, anche se non al top, è un ottimo compromesso per tutti quelle situazioni in cui per esigenze di tempo si è disposti a sacrificare un po' nella qualità.
 
Il mio consiglio è, per tali soluzioni real time, quello di incrementare leggermente il bitrate video dove possibile
: se per video 720*576 con un ottimo encoder SW è possibile già  avere una buona qualità video con bitrate medi attorno ai 4000-4500 Kbits/s, con tali schede conviene salire ad esempio attorno ai 6000 Kbits/s compensando la minore capacità della scheda a fare una buona compensazione del moto (ricerca dei blocchi di video simili), con un maggiore bitrate video. Questo in generale: ovviamente per ogni scheda occorre valutare i pro e i contro di ogni soluzione.
Ultimo caso sono i SW per PC in grado di digitalizzare in mpeg IPB senza alcun ausilio dell'HW, che normalmente fornisce al software di cattura,  video digitalizzato in YUV non compresso. In ciascuno di questi software, molti forniti di serie con schede video dell'ultima generazione (Matrox Marvel G450, Ati All-in Wonder Radeon,..) è possibile scegliere il tempo CPU da dedicare alla compensazione del moto tramite un parametro normalmente detto "Qualità" . Per ottenere video fluido senza perdita di fotogrammi  a secondo della CPU posseduta occorre limitarsi alla risoluzione 352*288 o al massimo la 352*576 con il massimo valore di qualità concesso dal proprio sistema. Spingersi a risoluzioni superiori è qualitativamente sconsigliato;  anche in presenza di CPU con frequenza attorno al GHz, ci si deve limitare ad un fattore di qualità basso. In tutti i casi la qualità rimane al di sotto delle implementazioni non in tempo reale ed occorre aspettare CPU con frequenze maggiori e una evoluzione dei SW per qualità superiori.

Il metodo più indicato per le compressioni mpeg in tempo reale fatte via Sw, è secondo me quello di optare in una prima leggera compressione in mpeg I frame, fatta al bitrate massimo possibile a cui segue il montaggio e la creazione del video finale in mpeg IPB fatta via Sw ma non in tempo reale. Ovviamente se è possibile, conviene utilizzare l'mpeg2 al posto dell'mpeg1. Per imporre nella digitalizzazione  l'mpeg I frame basta settare nella scelta del  GOP  la presenza dei P e B frame a zero (spesso ciò è indicato come preset MPEG IIIIII o I frame only ), mentre per il bitrate consiglio i valori della  tabella che segue. Molte implementazioni (vedi quella delle ATI Radeon) offrono il massimo bitrate possibile pari a  15 Kbits/s (1,857Mbyte/s) che  è il limite massimo imposto dall'mpeg2 Main Profile e Main Level (MP@ML) ; in tal caso è da escludere la digitalizzazione 720*576 che risulterebbe di qualità scadente.

Ovviamente la potenza della CPU limita la massima risoluzione ottenibile senza perdita di fotogrammi, mentre un  bitrate più basso ne inficia la qualità !!

Mpeg I frame - Bitrate alta qualità
Risoluzione Bitrate  (Mbits/s) Bitrate  (MByte/s)
352*288 9 - 11 1,1 - 1,4
352*576 12 - 17 1,5 - 2,1
480*576 15 - 22 1,9 - 2,7
720*576 20 - 30 2,5 - 3,8

Come termine di paragone ricordo come il formato DV, simile all'Mpeg I frame utilizza il bitrate di 25 MBits/s e risoluzione 720*576,formato colore 4:2:0 e compressione circa 1:5. Riguardo l'mpeg2 I frame (720*576 4:2:0) esistono i due standard rispettivamente a 25  e a 50 Mbits/s; quest'ultimo è qualitativamente quasi uguale video non compresso.

Utilizzando bitrate inferiori  si ottiene ovviamente una qualità che peggiora al diminuire del bitrate utilizzato ma che rimane sufficiente se non ci si allontana di molto dai valori indicati ( diciamo il 30-35 % in meno) . Riguardo la possibilità, concessa da alcuni encoder realtime sw, di utilizzare la risoluzione 720*576, Mpeg I frame e bitrate 15 Kbits/s ( il max concesso dal MP@ML),  al di là del problema dei fotogrammi persi, risolvibile con CPU con frequenze superiori al Ghz, si ottiene una qualità solo discreta, ma con un video costellato da artefatti chiaramente visibili con il fermo immagine: quadrettature e solarizzazioni dei colori. L'ulteriore compressione in formati IPB non fa che peggiorare la situazione, con un risultato finale certamente più che sufficiente ma sicuramente non al top.

Osservo come l'mpeg I frame ,analogamente all'mpeg IPB, può essere utilizzato direttamente all'interno di Tmpeg per le conversioni nei classici formati (VCD, XVCD, SVCD, XSVCD, MiniDVD,....): il metodo lo trovate trattato nel punto 8


Difetto Video Mpeg 2 visualizzato correttamente sul computer, che sul  televisione produce in tutti i soggetti in moto immagini a scatti, sdoppiate e traballanti.   
Causa Campi (Field A o B) invertiti. 

E' il classico problema che si presenta nel caso in cui si comprime in mpeg 2 con una risoluzione del tipo XXX* 576 (352*576, 480*576, 704*576 o 720*576) e con video di origine interalacciata (telecamera, videocamera,....): parlo di 576 righe poiché mi riferisco al sistema PAL; tutto analogo nel caso delle 480 righe del NTSC.

Ricordo come l'mpeg2, diversamente dall'mpeg 1 prevede la compressione in modalità interallacciata come ho abbondantemente trattato nell'articolo sull'MPEG.  Ovviamente occorre comprimere risoluzioni in cui compaiono entrambi i semiquadri (XXX* 576), e pertanto sono escluse tutte le risoluzioni a 288 righe, tipo la classica 352*288.

Prima di proseguire è importante non confondere il video interallacciato o meno dalla modalità di compressione mpeg 2 che può essere interallacciata o meno. Il video interallacciato è quello di origine telecamera o videocamera ed è video in cui ci sono 50 semiquadri di 288 righe al secondo che immortalano una immagine ogni cinquantesimo di secondo; al contrario il video progressivo utilizza 25 fotogrammi di 576 righe al secondo e proviene  normalmente da telecine di film o da immagini di sintesi (computer grafica). Vi rimando all'articolo sul PAL per approfondimenti. Al contrario la modalità di compressione mpeg2 interallacciata fa si che l'encoder INDIPENDENTEMENTE DAL TIPO DI VIDEO, divide il frame XXX*576 in due frames XXX*288, comprimendoli separatamente ed evitando così di rovinare le discontinuità dovute all'interallacciamento. La modalità di compressione mpeg2 progressiva al contrario non compie questa divisione e comprime i singoli fotogrammi XXX*576.

Il difetto descritto deriva dal fatto che convenzionalmente non esiste un ordine fissato con il quale iniziare a digitalizzare il video interallacciato ; ci sono delle schede che digitalizzano  prima i campi pari (le righe 0,2,4,6,.....575) e poi le righe dispari (1,3,5,7,...576): in tal caso si parla di 
digitalizzazione con campo (field in inglese)
A o Pari (Even ) o superiore (Top)
Nel caso opposto in cui vengono digitalizzati prima i campi dispari e poi i pari si parla di 

digitalizzazione con campo (field in inglese)
B o Dispari (Odd)  o superiore (Bottom)

Per la visualizzazione sul televisore le due convenzioni non producono nessuna differenza qualitativa poiché i campi pari o dispari saranno sistemati SEMPRE NELL'ORDINE GIUSTO E NELLA POSIZIONE GIUSTA (non verranno mai inserite le righe pari in quelle dispari e viceversa): il sistema PAL utilizza semiquadri di 288 righe visualizzati a 50 Hz (semiquadri al secondo).

Quando l'encoder deve  comprimere  in mpeg2 interallacciato e organizzare i 50 semiquadri al secondo di 288 righe, deve sistemare i campi nelle giuste posizioni e per far ciò deve sapere l'ordine con cui sono stati digitalizzati; poichè non può indovinare tale informazione, questa deve essere comunicata dall'utente. 

Se si indica l'ordine sbagliato si ottiene il difetto visto. In ogni Sw mpeg che gestisce il video interallacciato c'è la possibilità di variare tale parametro, che come detto NON HA ALCUN EFFETTO nel caso di video 352*288 o nel caso in cui si utilizza la XXX* 576 ma in mpeg2 progressivo. L'mpeg 1 al contrario non è in grado di comprimere in modalità interallacciata e il problema non si pone.

Ecco una tabella che riassume le possibili situazioni.

Risoluzione e formato del video da comprimere Tipo di compressione 
mpeg
Selezione campo (field) Note
352*288 Mpeg1 Impossibile per l'mpeg1 E' il tipo di formato gestito al meglio dall'mpeg1.
352*288 Mpeg2 Indifferente essendo video a 288 righe Resa leggermente superiore rispetto all'mpeg1 
352 (480, 704, 720)* 576 progressivo Mpeg1 Impossibile per l'mpeg1 E' possibile ottenere buoni risultati data la natura progressiva del video.

352 (480, 704, 720)* 576 progressivo

Mpeg2 progressiva

Non influenza la compressione  essendo la modalità di compressione mpeg2 progressiva 

Ottima qualità

352 (480, 704, 720)* 576 progressivo

Mpeg2 interallacciata

Indifferente essendo il video progressivo (non esistono le discontinuità dovute all'interallacciamento)

Potrebbe sembrare un controsenso, ma gran parte dei DVD utilizzano la compressione mpeg2 interallacciata anche per video progressivo. In pratica non esistono differenze qualitative rispetto alla compressione  mpeg2 progressiva, nonostante la compressione utilizzi un algoritmo diverso.

352 (480, 704, 720)* 576 interallacciato Mpeg1 Impossibile per l'mpeg 1 E' il tipo di video che mette in crisi l'mpeg 1: tutte le discontinuità dovute all'interallaccio sono considerate alte frequenze video e molto spesso eliminate o filtrate: il risultato è un video sporco su tutti i dettagli in movimento 

352 (480, 704, 720)* 576 interallacciato

Mpeg2 progressiva

Non influenza la compressione  essendo la modalità di compressione mpeg2 progressiva 

ASSOLUTAMENTE DA EVITARE: si ottengono gli stessi problemi visti per l'mpeg 1

352 (480, 704, 720)* 576 interallacciato

Mpeg2 interallacciata

Occorre indicare il field corretto: in caso contrario si ottengono nella visualizzazione sul televisione immagini a scatti e traballanti su  tutti i soggetti in moto. 

Ottima qualità

E' ovvio ma lo ricordo: se si utilizza video interallacciato e compressione mpeg2, per risoluzioni XXX*576 NON SI DEVE USARE ALCUN FILTRO DI DEINTERALLACCIAMENTO: tali filtri servono se si devono usare risoluzioni con meno di 576 righe, quale la classica 352*288 partendo da materiale interallacciato. In altri ambiti (DivX;-) ad esempio) i filtri di deinterallacciamento servono a sopperire la incapacità dei codec a visualizzare correttamente su PC video interallacciato.

Riguardo la scelta giusta del Field order, l'unica possibilità è quella di fare un test per ogni coppia encoder - video digitalizzato dalla propria scheda. Poiché i casi possibili sono solo 2 (field A e B) basta prendere un video xxx*576 interallacciato con soggetti in movimento e comprimerlo nei 2 metodi settando mpeg2 interallacciato e field A o B; il video prodotto dovrà poi essere visto su TV nel momento in cui la visualizzazione su PC non evidenzia i difetti grazie alle modalità Bob e Weave. Non potendo testare tutti gli encoder in commercio, a meno di errori da parte dei software nel chiamare i Campi, individuato l'ordine giusto per un encoder,  questo va bene per un altro.

Per chi non vuole procedere con questo metodo "empirico" magari perché non dispone della possibilità di visualizzare l'mpeg2 su TV (tramite DVD player o player HW per PC)  , è possibile scoprire il field order corretto tramite Tmpeg. Lo vedrò tra brevissimo.

Vediamo come settare i parametri visti in alcuni encoders mpeg2:

Tmpeg 

Setting/video: tutti i parametri  presenti in questa finestra sono memorizzati nei template (load-save mpeg setting). Qui si sceglie il tipo di modalità di compressione: interallacciata (interlace) o progressiva (non interlace)  Setting/Advantage: qui si sceglie l'odine dei campi. Il parametro Video source type NON SERVE AD INDICARE a tmpeg se comprimere in modalità interallacciata o meno (vale il parametro visto a sinistra) ma serve unicamente nelle eventuali operazione di ridimensionamento fatte da tmpeg per rispettare i semiquadri e le relative discontinuità.

NOTA1. Tutti i parametri presenti in questa finestra NON SONO memorizzati nei template e vanno di volta in volta risistemati. 

NOTA2. Tmpeg a partire dalla versione b12c ha cambiato terminologia riguardo al "field order" e in caso di dubbio occorre rifare i test. 

 

Come anticipato, con tmpeg è possibile scoprire il field order corretto; vediamo come. Dopo aver caricato il video xxx*576 interallacciato, si setta come visto uno dei due campi, ad esempio Top field first (field A).  

Doppio click su Deinterlace 

Metodo "Even-Odd field (field) e enable filter (attenti a non inserire uno degli innumerevoli altri metodi)

A questo punto basta cliccare ripetutamente o mantenere premuta la freccia di scorrimento all'estrema destra  (è la freccia |>| di avanzamento di un fotogramma alla volta  ).

Se la scelta del field è corretta si vedrà il video fluire normalmente, con una velocità che dipende dalla potenza del processore; al contrario se il field order è errato, si osserverà proseguendo un fotogramma alla volta, un susseguirsi di immagini che si muovono a scatti, un fotogramma in avanti e uno indietro. Se si tiene premuta la freccia |>| si vedrà avanzare il video in maniera traballante con movimenti assolutamente innaturali.

Per avere la conferma basta uscire dalla finestra di deinterallacciamento, invertire l'ordine del field e riprovare: se in un caso va bene nell'altro si vedranno gli artefatti descritti.

Ovviamente per fare la compressione occorre settare il field corretto e DESELEZIONARE IL FILTRO DEINTERLACE.

 

LSX MPEG encoder 3.5

Scelto l'mpeg 2 nella finestra principale sono indicate le 3 possibili alternative.

 

LSX MPEG encoder for adobe premiere v1.2

Come indicato sul manuale i settaggi vanno impostati in Export movie setting/Keyframe and Rendering: ovviamente no field sta per progressivo.

 

BBmpeg v1.24

Le opzioni vanno settate in advanced video setting. Tramite top field first si seleziona con 1 (top, odd) e 0 (bottom,even).
Per la compressione in modalità interallacciata occorre settare
Progressive sequence  0 
Progressive frame  0 
Field pictures  1 

Per la compressione in modalità progressiva occorre settare

Progressive sequence  1 

 gli altri 2 parametri saranno automaticamente deselezionati.

 


 Difetto   Audio e video non perfettamente sincronizzati : il video appare in ritardo o in anticipo rispetto all'audio.  
Cause Molteplici : 
- video digitalizzato con encoder in tempo reale che "pasticciano" sul sincronismo audio-video
- errato utilizzo della catena Flaskmpeg--> Avisynth--> Tmpeg
- flusso audio video di provenienza DVB con sincronismi errati
- compressione di video originariamente non sincronizzato
..................

 

Consideriamo il caso più semplice in cui il sincronismo si mantiene costantemente errato di un valore fisso nel tempo; ad esempio video costantemente in anticipo o in ritardo di 300 ms. Nel caso in cui tale ritardo o anticipo aumenta o diminuisce progressivamente nel tempo, accennerò in seguito come operare.

La soluzione all'asincronimo costante tra audio e video si risolve con i seguenti passi:

1) Demultiplexing del file mpeg, creando così in maniera distinta due file contenenti l'audio e il video.
2) Creazione di un nuovo mpeg mediante un sw che permette il simultaneo multiplexing e il settaggio di un valore di ritardo per i flussi audio e video.

Il primo metodo che consiglio utilizza 2 sw freeware: Tmpeg e BBmpeg; gli indirizzi per scaricarli li trovate nella sezione links della pagina Digital video

Questo metodo vale per video mpeg1 o 2  e audio mpeg  ( non funziona per l'audio ac3 )

Per il demultiplexing basta caricare Tmpeg e in file/MPEG Tool selezionare  Simple De-multiplex e scegliere il file da elaborare in Input/ Browse.

Click su RUN per avviare l'operazione: è necessario disporre di uno spazio libero su HD pari alla dimensione dell'mpeg originario che non viene minimamente modificato..

 

Per la correzione del sincronismo basta utilizzare BBmpeg: occorre eseguire avi2mpg2.exe , click su , su e successivamente su  input and output file.

Open PS (program stream) per scrivere il nome del nuovo file da creare 
Open VS (video stream) per caricare il flusso video  creato da tmpeg
Open AS1 (audio stream) per caricare il flusso audio creato da tmpeg

Osservo come è possibile inserire 2 flussi audio come previsto dal SVCD, grazie alla Open AS2  che nel caso in esempio non serve. 

Attenzione alle estensioni dei flussi audio e video: eventualmente basta ricorrere ad "All file *.* " per selezionare quello creato da tmpeg.

 

In program stream setting occorre prima di tutto indicare il tipo di formato che si sta utilizzando.

Per l'XVCD sia a 352*288 che con risoluzioni superiori (352*576, 704*576,...) occorre selezionare Mpeg1 e non VCD che è sottinteso standard e non va bene. Occorre in seguito rimultiplexare il video come vedremo tra breve.

Per i SVCD occorre selezionare ovviamente SVCD.

Nel caso di SVCD fuori standard (CVCD 352*288, 352*576) o XSVCD (SVCD fuori standard con risoluzione 704*576 o 720*576) va ancora bene SVCD

Nel caso di mpeg da utilizzare per i DVD ( con audio mpeg 48000 Hz) o VCD standard, basta selezionare i relativi nomi.

 

Riguardo la scelta dei valori da inserire per risistemare il sincronismo, occorre intervenire su Startup delays (ms); al contrario tutti gli altri parametri vanno lasciati come sono.

I due valori da modificare sono il ritardo in millisecondi per il Video (di defoult 180) e per l'audio 1 (di defoult 180): Pack va lasciato a 0 (indica un buffer aggiuntivo da inserire, cosa che serve solo per il VCD standard, unico caso in cui va messo il valore 400). Sia per video che per l'audio, a causa della bufferizzazione dei flussi audio-video in pacchetti occorre eventualmente aumentare e non diminuire tali valori.

Audio 2 è utilizzabile nel caso di mpeg con doppio audio: non è il caso che stiamo considerando.

Osservo come nel sistema PAL a 25 fps, ogni fotogramma corrisponde a 40 ms e normalmente asincronismi di 3- 4 fotogrammi (120-160 ms) sono difficilmente percepibili.

Nel caso di audio in anticipo rispetto al video (prima si ascoltano le parole e in seguito si muovono le labbra del personaggio che le ha pronunciate) per compensare l'anticipo occorre incrementare i valori relativi ad audio1 delay: 180-->220-->260-->300--->340-->380.....

Nel caso di audio in ritardo rispetto al video (prima  si muovono le labbra del personaggio e in seguito si ascoltano le parole) per compensare il ritardo  occorre incrementare i valori relativi a video delay: 180-->220-->260-->300--->340-->380.....

 

Essendo l'operazione del sincronismo abbastanza difficoltosa poiché non è obbiettivamente facile beccare al primo tentativo il ritardo, sarebbe opportuno fare dei test su brevi spezzoni di video (non vorrei stare nei panni di chi si trovasse a fare 10 tentativi su flussi audio-video di centinaia di Megabyte!!!).

Grazie al cielo viene in soccorso BBmpeg che non obbliga ad operare sull'intero flusso audio video ma  permette di scegliere un intervallo su cui compiere l'operazione di risincronizzazione ed in generale di multiplexing.

Basta selezionare General Setting e modificare i parametri che esprimono in secondi la posizione di inizio e fine : nell'esempio sarà creato un file che contiene il video corrispondente all'intervallo 2-15 secondi. E' importante selezionare prima il valore di END e poi eventualmente modificare quello di START: in caso contrario  appare un messaggio di errore.

Le tre opzioni di sotto (reset.., set.., write..) vanno selezionate solo se start è diverso da zero.

Il parametro MAX size (espresso in Megabyte) se posto ad un valore diverso da zero, fa si che invece di creare un unico file, BBmpeg suddivide il video in tanti file  (es. test01.mpg, test02.mpg,test03.mpg,...) ognuno avente al massimo la dimensione fissata. 
Ovviamente se si inserisce un certo valore (ad esempio MAX = 100 MB ) e l'mpeg d'origine  non supera tale valore (è ad esempio 60 MB), verrà creato un unico file.

Come ultima cosa occorre verificare che sono selezionati i parametri

Per iniziare la conversione click su OK e poi su Start.

L'operazione è terminata tranne nel caso in cui si è elaborato un mpeg 1 con il quale poi creare un XVCD (352*288, 352*576, 704*576).

In tal caso occorre operare una nuova conversione con Tmpeg che dovrà creare un nuovo mpeg ma questa volta  multiplexando l'audio e il video secondo lo standard VCD (in pratica il flusso audio-video deve essere impacchettato in blocchi di 2324 KByte al posto dei 2048 dell' mpeg1. Ovviamente tale operazione, parecchio rapida, non modifica o ricomprime i flussi audio e video lasciando inalterata la loro qualità.

Per fare ciò basta caricare Tmpeg e in file/MPEG Tool selezionare  Merge & Cut.

Click su ADD per selezionare il file da convertire e inserimento di Type Mpeg1 VideoCD (non-standard). 

Click su output Browse per immettere il nome del file da creare.

Click su RUN per avviare l'operazione.

 


 5   Difetto SVCD che è visualizzato da alcuni DVD player (vedi i Pioneer DV 333 e 525) con l'immagine divisa in 2 pezzi aventi dimensioni pari a 1/3 e 2/3 di schermo.
Cause Bug nel software Tmpeg B12c , B12d e nell'encoder MPEG2 real time ATI MMC (Multimedia center) fornito con le schede All in Wonder

Il problema nasce dalla presenza all'interno dei flussi mpeg del SHC (Sequence Header Code) e del SDE (Sequence Display Extension), che a secondo del lettore o player (SW o HW), vengono interpretati più o meno correttamente, creando decodifiche video diverse.

Cercherò di chiarire in profondità la questione, vista la enorme confusione che ho letto nei vari newsgroup.

Ancora una volta appare evidente come il formato mpeg è ancora lontano dalla universale compatibilità tra player e encoder: ci si trova molto spesso davanti a forme più o meno consentite di "dialetti mpeg" che hanno come unico effetto  l'imprevedibilità dei risultati; il video appare così corretto su di un player ma inguardabile su di un altro.

In attesa di una standardizzazione più spinta, come ho più volte ripetuto negli articoli presenti nel mio del sito, se da un lato è sempre possibile trovare una felice combinazione "versione e tipo di encoder-parametri-particolare player", occorre cercare il più possibile la compatibilità più universale possibile, per non rischiare di realizzare una serie di dischi utilizzabili solo per un particolare player.

Ritorniamo ai SHC (Sequence Header Code) e SDE (Sequence Display Extension): l'mpeg per come è strutturato prevede l'indicazione al player di gran parte delle proprie caratteristiche tramite una serie di byte, presenti nel file mpeg, detti SHC (Sequence Header Code); risoluzione, rapporto proporzioni del video (4:3, 16:9, 1:1,....), bitrate, matrice di quantizzazione, vbv_buffer_size, numero di fotogrammi al secondo,....

Tale SHC (Sequence Header Code) può essere scritto solo all'inizio del video, o a scelta ad ogni GOP  o periodicamente dopo un numero fissato di GOP. 
Osservo come ad esempio tale parametro lo si ritrova nell'LSX Mpeg encoder in Advanced/ Headers ; al contrario Tmpeg preferisce scrivere il SHC sempre per ogni
GOP.

Se un encoder deve obbligatoriamente inserire il SHC (Sequence Header Code) almeno all'inizio del filmato, al contrario per la SDE (Sequence Display Extension) tale obbligo non esiste. La SDE non è prevista nell'mpeg1.

Il parametro più importante della SDE è quello relativo al ridimensionamento del video: è teoricamente possibile realizzare un unico video mpeg2 , ad esempio 480*576,  che in punti diversi viene ridimensionato in maniere diverse grazie a SDE che variano durante il filmato ( è possibile così alternare video anamorfico o meno sullo stesso mpeg).

Da qui nascono gli eventuali conflitti: ci sono alcuni lettori e DVD player che semplicemente ignorano tale estensione che se trovata viene semplicemente scartata. Il video viene ridimensionato unicamente in base al SHC . Per questi lettori la presenza di un SDE errato non crea ovviamente nessun problema e i vantaggi visti ( ridimensionamento variabile durante la visualizzazione del filmato) non sono possibili. 

Ecco un esempio di SHC e SDE ottenuto con il sw freeware di analisi dei flussi mpeg BBtools v1.7 che trovate nel mio sito scaricando  BBtools v1.7 La sintassi da utilizzare a linea di comando (cioè all'interno di una finestra Dos, START/programmi/prompt MS Dos ovviamente selezionando la directory in cui si trova il programma) 

Bbvinfo video_mpeg.m2v 3 > dati.txt 

dove video_mpeg.m2v è il file solo video ad esempio ottenuto tramite il Simple demultiplex di Tmpeg (file/mpegtools/simple demultiplex) e nella sintassi dell'esempio si trova nella stessa directory del file mpeg.

SHC (Sequence Header Code)

SDE (Sequence Display Extension)

sequence_header_code = 0x000001B3
horizontal_size_value = 480
vertical_size_value = 576
aspect_ratio_information = 2
frame_rate_code = 3
bit_rate_value = 6300
marker bit = 1
vbv_buffer_size_value = 56
constrained_parameters_flag = 0
load_intra_quantiser_matrix = 0
load_non_intra_quantiser_matrix = 1
read 64 non_intra_quantiser_matrix bytes = 7667204

extension_start_code = 0x000001B5
sequence_extension_id = 1
profile_and_level_indication = 72
progressive_sequence = 0
chroma_format = 1
horizontal_size_extension = 0
vertical_size_extension = 0
bit_rate_extension = 0
marker bit = 1
vbv_buffer_size_extension = 0
low_delay = 0
frame_rate_extension_n = 0
frame_rate_extension_d = 0
extension_start_code = 0x000001B5
sequence_display_extension_id = 2
video_format = 1
colour_description = 1
colour_primaries = 5
transfer_characteristics = 5
matrix_coefficients = 5
display_horizontal_size = 480
marker bit = 1
display_vertical_size = 576

Tmpeg inserisce l' SHC ad ogni GOP
Con l' LSX Encoder è possibile scegliere dove inserirlo
 L' LSX Encoder non inserisce la SDE
 Riguardo Tmpeg, vedi sotto.

I problemi del video (1/3 e 2/3 di schermo) nascono quelle volte in cui si ha un inserimento errato della SDE , a causa di un bug di programmazione dell'encoder e la visualizzazione di tale mpeg con un player, vedi i Pioneer, capaci di leggere tale estensione: i player che l'ignorano non incappano nell'errore.

Se ad esempio  LSX Encoder non inserisce la SDE e quindi il problema non si pone, il problema nasce per video creati con Tmpeg B12c , B12d e con l'encoder MPEG2 real time ATI MMC (Multimedia center). Non è da escludere che esistano altri encoders con lo stesso problema.

Se le versioni precedenti alla Tmpeg B12c/d inserivano la SDE corretta (pari alla risoluzione dell'mpeg), nelle Tmpeg B12c/d è stato inserito, di nascosto agli utenti, la possibilità di utilizzare SDE diversi dalla risoluzione video impostata.

Tale parametro è presente a partire dalla versione Tmpeg B12c nei preset (template con estensione mcf) relativi al SVCD di tmpeg con il nome 

MPEG.Video.DisplayWidth = XXX
MPEG.Video.DisplayHeight = XXX

e non è accessibile se non modificando con un editor di testo il template utilizzato .

Esistono 3 tipi di template che per comodità chiamoT_B12a, T_B12cd,T_B12e/f 

T_B12a Template prodotti dalla B12a o precedente (tra questi i miei vecchi Template). Lo indico in arancio per questo motivo. Non sono presenti le estensioni MPEG.Video.DisplayWidth e MPEG.Video.DisplayHeight
T_B12cd  Template prodotti dalla B12c e B12d  Sono presenti i seguenti valori errati
MPEG.Video.DisplayWidth = 720
MPEG.Video.DisplayHeight = 540
T_B12e/f Template prodotti dalla B12e e versioni successive (attualmente B12f e B12g): tra questi i miei nuovi Template_B12f Sono presenti i seguenti valori corretti
MPEG.Video.DisplayWidth = 0
MPEG.Video.DisplayHeight = 0

che indicano all'encoder di utilizzare come SDE i valori scelti dall'utente per la risoluzione(setting/video/size): 480*576 per i SVCD standard, 352*288, 352*576, 704*576, 720*576 per i SVCD non standard. 

Vediamo le possibili combinazioni tra le versioni di tmpeg utilizzate e il tipo di template usato :

Versione dell' encoder  template utilizzato   Visualizzazione  corretta dei SVCD  
 B12a  T_B12a SI
 B12a  T_B12cd SI (i valori errati di MPEG.Video.DisplayWidth e MPEG.Video.DisplayHeight non sono riconosciuti come validi e quindi ignorati)
 B12a  T_B12e/f SI
 B12e/f/..e succesive  T_B12a

SI tranne nel caso in cui l'ultima codifica in formato SVCD è stata fatta utilizzando un template T_B12cd: in tal caso  occorre prima di tutto caricare il template SuperVideoCD (PAL).mcf fornito insieme con la B12e e poi è possibile caricare un qualsiasi template T_B12a e avviare la conversione che creerà un mpeg corretto. Il motivo sta nel fatto che ogni versione di tmpeg ricorda gli ultimi parametri utilizzati e li memorizza in CurrentCfg.tpr.  Caricando un template corretto vengono risistemati i valori giusti di MPEG.Video.DisplayWidth e MPEG.Video.DisplayHeight, errati se si è prima utilizzato un template T_B12cd ; al contrario i T_B12a non contenendo alcun riferimento ai valori di MPEG.Video.DisplayWidth e MPEG.Video.DisplayHeight  lascia in memoria gli ultimi valori utilizzati che se errati rimangono tali.
Considerando la sostanziale differenza con cui è implementato il bitrate variabile nella versione b12e/f... rispetto alla B12a è comunque assolutamente sconsigliato l'utilizzo dei vecchi template T_B12a

B12e/f/..e succesive   T_B12e/f SI
B12e/f/..e succesive  T_B12cd NO
 B12c/d  T_B12cd NO
 B12c/d  T_B12e/f SI

Se si possiede un Template SVCD realizzato con la B12c o d per correggere l'errore, basta editare il template con un editor di testo e sostituire 

MPEG.Video.DisplayWidth = 720
MPEG.Video.DisplayHeight = 540
 con 

MPEG.Video.DisplayWidth = 0
MPEG.Video.DisplayHeight = 0

 

Concludendo, il mio consiglio è quello di utilizzare una versione di Tmpeg a partire dalla B12e (la B12f va benissimo) con i nuovi template Template_B12f che ho scritto. Se ci sono problemi occorre ricorrere alla accoppiata B12a con i "vecchi " Template

Rimane da considerare il caso in cui si è creato (....ovviamente prima di aver letto questa guida !!!!!) un MPEG errato con Tmpeg o con l'encoder MPEG2 real time ATI MMC.

Per correggere tali mpeg è possibile utilizzare il sw fix12c :  la sintassi da utilizzare è semplice. Sempre in modalità DOS ( o in questo caso anche all'interno della finestra "indirizzo" dell'Internet Explorer) basta piazzarsi nella directory che contiene fix12c e scrivere 

fix12c nomefile.mpg -h 480 -v 576

nell'esempio nomefile.mpg è il video da correggere, ovviamente presente nella stessa directory di fix12c: osservo come la modifica, velocissima, opera direttamente sull'mpeg e non crea alcuna copia di backup. Vengono modificati solo i pochi byte dell' SDE relativi ai parametri display_horizontal_size  e display_vertical_size . Tutto il resto del file è lasciato imodificato.

Ovviamente nel caso di SVCD non standard andrà immessa la risoluzione relativa; ad esempio

fix12c nomefile.mpg -h 352 -v 576
fix12c nomefile.mpg -h 704 -v 576

Utilizzando i driver Direct Show di WinDVD 2000 ( iviaudio.ax e ivivideo.ax ) , attivi dopo la installazione di WinDVD, visualizzando con il media player un Mpeg in formato SVCD 480*576 prima e dopo la correzione, si ha la conferma  della modifica; nelle proprietà si legge la risoluzione errata di 720*540 prima della correzione e di 768*576 dopo la correzione. In entrambi i casi si ha il ridimensionamento nelle corrette proporzioni  1.33:1  e pertanto è evidente come tale player non manifesta il bug che al contrario si ha ad esempio con i DVD player Pioneer.


 6  

Lettura di filmati Quick Time e Avi con Tmpeg. Considerazioni sui plug-in per Tmpeg e sulla  sua capacità di creare file avi oltre che mpeg1 e 2

 

Tmpeg, uno dei leader indiscussi della compressione mpeg, presenta notevoli capacità di gestire ed elaborare vari formati video grazie alla modularità con cui è stato progettato. 
Al di là della ottima compressione mpeg, uno dei suoi pregi maggiori sta nella capacità di utilizzare plug-in esterni o di sfruttare librerie di sistema per caricare e convertire i diversi formati audio-video. Tramite la scelta da parte dell'utente della libreria o del plug-in da utilizzare è possibile sfruttare al massimo tale caratteristica prevenendo eventuali incompatibilità: ci ritorno traa breve.

Un secondo aspetto da molti trascurato è la capacità di Tmpeg di comprimere in AVI (DivX;-) compreso) uno qualsiasi dei video o audio che è in grado di leggere: la cosa interessantissima sta nel fatto che TUTTI I FILTRI VIDEO disponibili (correzione colori, deinterallacciamento, filtraggi denoise,...)  sono utilizzabili sia per le conversioni in mpeg che quelle in avi. 

In pratica per la creazione degli AVI con tmpeg, sono funzionanti i seguenti parametri modificabili cliccando su setting (ovviamente tali parametri, insieme con altri, servono anche per la compressione in mpeg1 e 2):

Dimensione dell'avi (sezione video) 
Velocità in fotogrammi al secondo (sezione video) 
Filtraggi e ridimensionamento (sezione advanced)

Osservo come doppio cliccando su source range è possibile tramite l'opzione correggere eventuali asincronismi nel caso di video in anticipo o ritardo.

Valori positivi in millisecondi ritardano l'audio e correggono tutti i casi in cui l'audio è in anticipo sul video (prima si ascoltano le parole e in seguito si muovono le labbra del personaggio)

Valori negativi in millisecondi anticipano l'audio e correggono tutti i casi in cui l'audio è in ritardo sul video (prima  si muovono le labbra del personaggio e in seguito si ascoltano le parole )

Per avviare la conversione in avi occorre cliccare su  file/output to file/avi file e scegliere il codec di compressione

Anche se è possibile selezionare i codec mp3 non conviene farlo poichè si creano asincronismi audio-video; se si vuole creare un avi (es DivX;-) con audio mp3 occorre selezionare l'audio  PCM non compresso ed in seguito utilizzare virtual Dub per l'audio in mp3 (vedi l'articolo sul DivX;-)).

Osservo comunque che se si decide di ridimensionare il video in ingresso per creare un Avi con risoluzione diversa, si otterrà una velocità complessiva inferiore rispetto ad altri SW, quali Virtual dub, a causa delle routine di ridimensionamento di Tmpeg pensate nell'ottica della massima qualità piuttosto che velocità.

Per attivare in Tmpeg la possibilità di leggere e convertire i video Quick Time v.4.0 in mpeg 1/2 o in Avi, basta scaricare il plug-in QTReader.vfp e copiarlo nella directory in cui risiede TMPGEnc.exe. Il plug-in lo trovate sul mio sito QTReader.zip

Dopo aver copiato il QTReader.vfp occorre eseguire Tmpeg e fissare la priorità con cui tale plug-in verrà considerato.

Tmpeg nel momento in cui deve caricare un file da convertire utilizza uno dei plug-in di lettura compatibili con tale formato nell'ordine di priorità fissato dall'utente (è possibile escludere momentaneamente ciascuno dei plug-in installati). Tale meccanismo è utile tutte le volte in cui lo stesso filmato può essere letto da più di un plug-in installato, utile come vedremo dopo, ad esempio per le conversioni dei DivX;-) o per avi particolarmente" ostici" da visualizzare.

Per la scelta delle priorità all'interno di tmpeg basta cliccare in option/environmental setting/VFAPI plug-in e settare le priorità come in figura : le priorità sono i numeri a destra che modificano l'ordine delle righe dello schema. Il plug-in più in basso è quello a priorità minore.

Ovviamente a secondo dei plug-in installati la lista sarà uguale o diversa rispetto a quella in figura. Ciò che occorre fare per poter caricare sia file quicktime che avi, è semplicemente diminuire le priorità in maniera tale da porre come in figura:

Plug-in

 Priorità 
DirectShow Multimedia File Reader -1
Avi VFW compatibility Reader -2
Quick Time Movie Reader  -3

L'ordine indicato sembra garantire la massima compatibilità (almeno sul mio sistema): è importante porre il Quick Time Movie Reader alla priorità più bassa non permettendo così di sovrapporsi al caricamento degli altri formati (ho riscontrato con la priorità pari a 0 un suo interferire con il caricamento di alcuni AVi in formato DV).

REGOLA GENERALE: nel caso di conflitti  tra plug-in è possibile deselezionare momentaneamente il plug-in  considerato responsabile, e provare a ricaricare il file da convertire. 

Per diminuire la priorità basta selezionare il plug-in scelto: dopo essere stato evidenziato click destro e Lower priority. Per aumentare la priorità ovviamente occorre settare Higher priority.

Windows si appoggia a due librerie per la lettura degli avi: la DirectShow e  VFW (Video for Windows) . Tramite le librerie DirectShow sono letti correttamente i video nei formati quali Avi2 OPEN DML (il formato che suddivide eventuali file maggiori di 2GB in avi successivi), Mpeg, mov, asf ,..... Al contrario ci sono alcuni vecchi avi (vedi quelli digitalizzati con le matrox Marvel o gli avi DV type 1) che utilizzano le vecchie VFW il tutto in maniera trasparente all'utente.

Tmpeg permette l'accesso ai file avi tramite 3 plug-in distinti :  DirectShow , VFW o tramite delle routine interne AVI2 (OpenDML) File Reader

AVI2 (OpenDML) File Reader Librerie interne di Tmpeg compatibili con il formato AVI2 (OpenDML)
DirectShow Multimedia File Reader Librerie DirectShow di Windows
Avi VFW compatibility Reader Librerie VFW (Video for Windows) di Windows

Riguardo gli avi, tutte quelle volte in cui non si riesce a leggere correttamente con Tmpeg un filmato in formato avi occorre operare sulla selezione o la priorità dei 3 plug-in visti.

 

Ad esempio può bastare selezionare o deselezionare AVI2 (OpenDML) File Reader per poter leggere un avi prima illeggibile.

Ritornando al caso di file Quick time, dopo il caricamento nel 90% dei casi verrà selezionato automaticamente un frame rate doppio (forse perché il codec considera i filmati interallacciati).

Quindi occorre selezionare Stream Type/setting/ Frame rate e inserire il frame rate corretto; se è indicato 60 va posto a 30; 25 se è indicato 50.

Riguardo il ridimensionamento a secondo di quello che si vuole ottenere occorre operare sulla risoluzione (video/size) e sul video arrange Method (setting/arrange). 

Concludo osservando come se si desidera convertire i file in mpeg non standard, ma visualizzabili su PC, non è necessario utilizzare le classiche risoluzioni 352*288, 480*576, 720*576 normalmente utilizzate per XVCD, SVCD, XSVCD,... ma è possibile utilizzare una qualsiasi risoluzione multipla di 8 , e ASPECT RATIO 1:1. Un esempio classico sono i trailer di film Quick Time aventi risoluzione 480*260 e 30 fps e codec Soreson Video.


Conversione da DivX;-) a Mpeg (o avi) con Tmpeg. Considerazioni generali sulle 3 modalità di accesso di Tmpeg al formato avi: risoluzione ai problemi di lettura degli avi (schermo nero, artefatti video ). 

Ecco un esempio pratico di quanto visto nel punto precedente, che invito a leggere se siete "saltati" direttamente qui.

Windows si appoggia a due librerie per la lettura degli avi: la DirectShow e  VFW (Video for Windows) . Tramite le librerie DirectShow sono letti correttamente i video nei formati quali Avi2 OPEN DML (il formato che suddivide eventuali file maggiori di 2GB in avi successivi), Mpeg, mov, asf ,..... Al contrario ci sono alcuni vecchi avi (vedi quelli digitalizzati con le Matrox Marvel o gli avi DV type 1) che utilizzano le vecchie VFW. 
Nel momento in cui viene caricato un AVi, in maniera del tutto in maniera trasparente all'utente, Windows utilizza la libreria che ritiene più adattatte.

Un discorso analogo vale per Tmpeg che permette l'accesso ai file avi tramite 3 plug-in distinti :  DirectShow , VFW o tramite delle routine interne AVI2 (OpenDML) File Reader

AVI2 (OpenDML) File Reader Librerie interne di Tmpeg compatibili con il formato AVI2 (OpenDML)
DirectShow Multimedia File Reader Librerie DirectShow di Windows
Avi VFW compatibility Reader Librerie VFW (Video for Windows) di Windows

Tmpeg in maniera automatica e in base ad un ordine di priorità modificabile , sceglie la libreria che ritiene più adatta: se tale scelta non è corretta,  o si ottengono artefatti nella visualizzazione e in seguito nella conversione (video completamente nero, immagini a scatti,....) o compare un messaggio di errore  (formato video non riconosciuto) . Per ovviare a tali problemi in gran parte dei casi basta  o deselezionare uno dei 3 plug-in visti o cambiare l'ordine di priorità. per far ciò occorre cliccare su  option/environmental setting/VFAPI plug-in

 

Ad esempio può bastare deselezionare AVI2 (OpenDML) File Reader per poter visualizzare e convertire un avi prima illeggibile ( ad esempio un avi con video nero e audio corretto). Come sempre per avere un preview dell'avi , verificando che tutto è a posto, basta cliccare su (file/preview) e poi su play. Ovviamente se il preview non mostra correttamente l'avi non ha alcun senso iniziare la conversione.

Nel caso del video DivX;-) per ottenere la migliore conversione possibile è fondamentale poter operare sui parametri del DivX e selezionare la CPU Quality al massimo: in caso contrario il filmato sarà decodificato con una qualità inferiore rispetto a quella teorica con un evidente calo qualitativo nella conversione ad esempio in Mpeg !!! .

 

Come fare ad accedere a tali parametri con Tmpeg?

L'unica maniera per farlo è quello di appoggiarsi al plug-in DirectShow Multimedia File Reader; al contrario utilizzando AVI2 (OpenDML) File Reader e Avi VFW compatibility Reader si bypassano tali parametri e al contrario viene utilizzato un valore di CPU Quality inferiore. (ad occhio il valore 0 o al massimo 1) .

In pratica per procedere occorre:

1) Caricare con il Windows media player (o software analogo) un qualsiasi DivX;-) e settare i parametri corretti : CPU Quality = 4 ed eventualmente brightness attorno a 56-60. Nel caso del  Windows Media player 6 ( In Win 95 e 98 è il file  Programmi/Lettore Multimediale/mplayer2.exe ) occorre cliccare in file/proprietà/avanzate/DivX;-) mpeg4 DVD video Decompressor/proprietà.

2) Caricare Tmpeg e configurare i plug-in in maniera tale che dall'alto verso il basso il primo plug-in attivo tra i 3 visti  sia DirectShow Multimedia File Reader: il modo più semplice di procedere è quello di deselezionare AVI2 (OpenDML) File Reader

3) Caricare il DivX;-) all'interno di Tmpeg e procedere normalmente con la conversione.

Per accertarvi della cosa è possibile ad esempio a scopo di test aumentare il parametro Brightness a 65-70 e caricare il DivX;-) prima e dopo la sistemazione del plug-in; la differenza ( diversa luminosità) è subito evidente. E' possibile anche valutare l'influenza del parametro CPU (Quality) tramite la funzione di preview (file/preview) cliccando su H (high speed) e poi su play. Apparirà in alto il frame rate. 
Per fare questo piccolo test occorre selezionare la risoluzione pari a quella originaria e tra gli mpeg setting/advanced/video arrange method inserire "Full Screen": in questa maniera tmpeg non effettua nessun ridimensionamento del video, operazione che rallenta parecchio la visualizzazione.

Con il mio P2 400 e DivX;-) 512*384 ottengo 13 fotogrammi al secondo con CPU=4 e 20 con CPU=0.



Conversione da Mpeg 1 o 2 a Mpeg 1/2 o avi. Il plug-in freeware m2v.vfp 

Sono numerosissimi i casi in cui occorre riconvertire video mpeg in un altro formato mpeg (naturalmente con caratteristiche diverse): vediamo in breve alcuni metodi che utilizzano sw freeware.  

Conversioni mpeg1 ----> mpeg1, mpeg2 o avi

Conversioni mpeg2 ----> mpeg1, mpeg2 o avi 

Prima di tutto quando parlo di mpeg1, mpeg 2 e avi , mi riferisco al caso generale che comprende i seguenti casi particolari:

mpeg1  VCD, XVCD
mpeg 2 SVCD, XSVCD, CVCD, DVD (file di estensione .vob)

 avi

DivX;-)

 

Convertire un XVCD--->VCD significa pertanto fare una conversione mpeg1-->mpeg1; DVD---> SVCD è una conversione mpeg2-->mpeg2 ,........ 

Prima di elencare alcuni diversi metodi possibili mi preme sottolineare come , se possibile, è preferibile evitare la riconversione di video mpeg già notevolmente compresso (tipicamente quello presente nei SVCD, XVCD,...), nel momento in cui a causa degli artefatti sempre presenti nell'mpeg (mascherati solo nelle conversioni migliori), una ulteriore compressione non può che essere qualitativamente inferiore. 
In tutti i casi vale sempre la regola che per preservare la qualità è fondamentale avere il video da riconvertire il meno compresso possibile: se questo è addirittura un XVCD o SVCD proveniente dalla conversione di un DVD, il file ottenuto  deriva da 3 compressioni successive; film-->DVD(mpeg2)--->XVCD o SVCD (mpeg1 o 2)---> mpeg o avi... Pretendere in tali casi una buona qualità è sempre molto difficile.

Riguardo l'opportunità di conversioni del genere , quasi sempre il motivo è quello della compatibilità: una conversione ad esempio SVCD--->XVCD ha senso nel caso in cui si possiede un DVD player incompatibile con il SVCD o viceversa la conversione XVCD--->SVCD nel caso di DVD player incompatibili con l'XVCD (vedi alcuni modelli della Philips).

Naturalmente se si possiede il video originale è ovvio che conviene partire da quello: se ad esempio si possiede il DVD di "Contact" e il relativo SVCD e si vuole creare un XVCD,  ovviamente conviene fare la conversione DVD--> XVCD piuttosto che SVCD--> XVCD. Perdonatemi la banalità della affermazione ma è bene ricordarlo per chi si è affacciato da poco al mondo del Digital Video. 

Conversioni mpeg1 ----> mpeg1, mpeg2 o avi

Vediamo brevemente alcuni dei metodi possibili: tra i tanti mi riferisco all'utilizzo di Software Freeware. 
Per convertire un mpeg1 in un altro formato occorre garantire la compatibilità in lettura con l'mpeg 1 da parte del sw che effettua la conversione: se ciò non è possibile in maniera nativa lo può diventare sfruttando le capacità di decodifica di altri sw con cui è possibile interfacciarsi, come vedremo nel caso della lettura di mpeg2. 

Software

Lettura dei file mpeg1 

Lettura dei file mpegav/AVseqXX.dat dei VCD e XVCD 

Note 
Tmpeg

SI

SI

Attenzione: per la lettura dei file AVseqXX.dat dei VCD o XVCD, se si è installato il plug-in STRDECODE.vfp per la lettura dei filmati della playstation 1, occorre deselezionarlo in option/environmental setting/VFAPI plug-in

Legge gli mpeg 1 sfruttando le librerie mpeg1 Mediamatics-Microsoft presenti su tutti i sistemi Windows.

 

Virtual Dub

SI 

SI 

Al caricamento dell'mpeg occorre attendere una prima lettura del file, che nel caso di un intero VCD o XVCD può richiedere un 2-3 minuti. Appare la finestra 
Flaskmpeg

SI

NO

 
DVD2avi

NO

NO

Con DVD2avi è impossibile leggere file mpeg1 ma solo mpeg2.

 

Vediamo brevemente alcuni casi possibili di conversioni mpeg 1----->mpeg1/2 o avi con i SW visti.

 

Lettura di Mpeg1 con  TMPEG

E' possibile creare sia video mpeg 1 o 2 sia avi. Per leggere gli mpeg1, in perfetta analogia alle conversioni di file avi,  basta caricare in video source/Browse il file mpeg1 (o tramite *.* (All file) i file AVseqXX.dat dei VCD o XVCD) , scegliere i parametri caricando ad esempio dei Template e click su Start per le conversioni mpeg1---> mpeg1/2.

Sono possibili in questa maniera ad esempio conversioni quali , XVCD--> VCD, XVCD--> CVCD, XVCD--> SVCD.

Per le conversioni mpeg1--> avi, dopo aver caricato il file mpeg ed eventualmente modificato risoluzione o applicati i filtraggi come di consueto (click su setting) basta cliccare su file/output_to_file/avifile. Vi rimando alla sezione in cui ne ho già parlato.
Brevissimamente nel caso di conversioni mpeg1--> DivX;-) (es. xvdd-->DivX;-)) osservo come con tmpeg occorre creare il DivX;-) con audio PCM non compresso, mentre per la compressione dell'audio occorre utilizzare virtual dub. (vedi l'articolo sul DivX;-)) E' importante tra l'altro ridimensionare il video nel momento in cui il DivX;-) utilizza la visualizzazione 1:1 : un XVCD 352*288 va ridimensionato a 384*288; un SVCD 480*576 va ridimensionato a 768*576.
Per velocizzare le operazioni è sempre possibile il ritaglio di eventuali bande nere. 

 

Lettura di Mpeg1 con Virtual Dub

E' possibile creare avi direttamente o mpeg1 o 2 tramite tmpeg. Per leggere gli mpeg1, in perfetta analogia alle conversioni di file avi,  basta caricare in video in open video file ( Ctrl- O ) scegliere i parametri audio e video, i punti di inizio e fine conversione e avviare la conversione.

E' possibile creare mpeg1 o 2 tramite il Frame Serving verso tmpeg: l'unico vantaggio rispetto alla conversione autonoma all'interno di tmpeg sta nella maggiore velocità dell'eventuale  ridimensinamento fatto da VirtualDub. Negli altri casi non ha molto senso utilizzare il frame serving.

Per permettere il passaggio dei dati da VirtualDub a Tmpeg  (si parla di Frame serving) si deve operare così: dopo aver caricato l'mpeg all'interno di virtualDub

Click su file/: appare la finestra con a destra il nome del file.

Cliccando su START occorre inserire il nome del file di frame serving che nell'esempio è server.vdr (è conveniente memorizzare il file in una directory facilmente accessibile poichè occorre richiamarlo da tmpeg) 

ATTENZIONE: E' fondamentale scrivere l'estensione .vdr : va bene qualsiasi nome (server.vdr, pippo.vdr, test.vdr) ma non va bene scrivere server o pippo o test senza estensione; in tal caso tmpeg non riconoscerebbe il frame serving di tmpeg.

Cliccando su SALVA, si ha che la finestra di Virtual Dub si trasforma in

Da questo momento in poi, qualsiasi applicazione compatibile con lo standard Frame Serving caricando il file che nell'esempio ho chiamato server.vdr è in grado di ricevere i dati da Virtual dub; è quello che dobbiamo fare con tmpeg.

L'ultima operazione da fare è settare i parametri con tmpeg e avviare la conversione. Per permettere l'utilizzo del frame serving occorre modificare l'ordine con cui sono utilizzati i plug-in VFAPI pena un blocco del sistema. Occorre cliccare su option/environmental setting/VFAPI plug-in e deselezionare "DirectShow Multimedia File Reader"

Fatto questo si possono caricare il file da convertire: click su Video source/ Browse, ) e occorre caricare il file server.vdr . La parte audio sarà automaticamente settata come appare in "Audio source"

 

A questo punto si può avviare la conversione (click su Start)

Lettura di Mpeg1 con Flaskmpeg

Con flaskmpeg è impossibile leggere gli mpeg1 presenti nei VCD e XVCD ma solamente file mpeg1 prodotti direttamente dagli encoder: la causa sta nel particolare impacchettamento dei Dati dei file AVseqXX.dat dei VCD e XVCD incompatibile con flaskmpeg.

Se si desidera utilizzare tali file occorre convertirli in mpeg1 ad esempio tramite gli mpeg tools di tmpeg: 

Per fare ciò basta caricare Tmpeg e in file/MPEG Tool selezionare  Merge & Cut. Click su ADD per selezionare il file da convertire e inserimento di  Mpeg1 System (automatic). Click su output Browse per immettere il nome del file da creare.

Click su RUN per avviare l'operazione.

 

Con Flaskmpeg è possibile utilizzare file mpeg1 per creare mpeg 1 /2 o avi: diventa possibile creare SVCD, XSVCD, VCD, DivX;-). Il metodo da utilizzare è perfettamente analogo alle conversioni di DVD a cui ho dedicato degli articoli specifici; la differenza sta ovviamente nel fatto che occorre caricare i file mpeg 1 (file/apri ) invece che caricare i Vob o gli ifo come al contrario si deve fare per la conversione dei DVD.

Ali articoli che descrivono il procedimento sono :

creazione di SVCD   Link 
creazione di XVCD Link 
creazione di DivX;-)  Link 

 

Conversioni mpeg2 ----> mpeg1, mpeg2 o avi

Vediamo brevemente alcuni dei metodi possibili: anche per l'mpeg2 mi riferisco all'utilizzo di Software Freeware. 
Per convertire un mpeg2 in un altro formato occorre garantire la compatibilità in lettura con l'mpeg 2 da parte del sw che effettua la conversione: se ciò non è possibile in maniera nativa lo può diventare sfruttando le capacità di decodifica di altri sw con cui è possibile interfacciarsi (avisynth o DVD2avi). 

Software

Lettura nativa dei file mpeg2 e vob 

Note

Tmpeg

NO 

 

E' possibile ugualmente leggere e quindi convertire mpeg2 tramite l'ausilio di uno dei seguenti sw:

- catena Flaskmpeg-->avisynth-->tmpeg
- lettura tramite l'ausilio di DVD2avi (file.d2v o avi virtuali)
- utilizzo del plug-in
m2v_vfp 

Virtual Dub

NO

E' possibile ugualmente utilizzare mpeg2 tramite l'ausilio degli avi virtuali prodotti da DVD2avi

Flaskmpeg

Si

 
DVD2avi

Si

 

 

Lettura di Mpeg2 con  VirtualDub

La descrizione del metodo, che utilizza gli avi virtuali prodotti da DVD2avi lo trovate nell' Articolo dedicato a DVD2avi.

 

Lettura di Mpeg2 con  flaskmpeg

Con Flaskmpeg è possibile utilizzare nativamente  mpeg2 per creare mpeg 1 /2 o avi: diventa possibile creare SVCD, XSVCD, VCD, DivX;-). Il metodo da utilizzare è perfettamente analogo sia per le conversioni di DVD (grazie alla possibilità di flaskmpeg di caricare i Vob e/o gli ifo)  e sia per le conversioni di file mpeg 2 che sono correttamente letti e decodificati sempre cliccando su file/apri .

Ali articoli che descrivono il procedimento sono :

creazione di SVCD   Link 
creazione di XVCD Link 
creazione di DivX;-)  Link 

 

 

Lettura di Mpeg2 con  DVD2avi

Anche in questo caso vi rimando all' Articolo dedicato a DVD2avi.

 

Mpeg2 e TMPEG

Riguardo la lettura e la conversione di mpeg2 fatta con tmpeg ci sono 3 possibilità:

La prima utilizza la capacità di decodifica dell'mpeg 2 da parte di flaskmpeg che tramite il SW avisynth passa i dati a Tmpeg; la seconda utilizza la capacità di decodifica di DVD2avi; in entrambi i casi  a tmpeg toccherà creare i nuovi mpeg 1 o 2. Gli articoli di riferimento sono i soliti:

creazione di SVCD   Link 
creazione di XVCD  Link 
creazione di DivX;-)  Link 
creazione di XVCD, SVCD, DivX;-)  tramite DVD2avi    Link 

 

Rimane da considerare un ultimo caso: è una alternativa che permette all'interno di tmpeg, la lettura diretta del video mpeg2 presente sia nei VOB che nei file mpeg2. Si utilizza il plug-in m2v.vfp.

Prima di ogni altra cosa occorre installare il plug-in freeware m2v.vfp che potete scaricare dal mio sito: m2v_vfp L'indirizzo dell'autore per eventuali aggiornamenti o per scaricare i listati  è http://www.isc.meiji.ac.jp/~ee69011/mpeg2/ 
Per l'installazione di tale plug-in basta decomprimere i file in una directory (es c:\programmi\m2v_vfp ) e eseguire il programma m2vconf.exe e settare come in figura:

Le scritte in Italiano le ho aggiunte : importante selezionare Non ridimensionare, IDCT ottimizzata e Non interallacciare come in figura.

Ridimensiona non va selezionato: in caso contrario si otterranno decodifiche estremamente più lente a seguito di un inutile ridimensionamento da parte del plug-in alla risoluzione impostata dal formato: ad esempio un SVCD 480*576 viene inutilmente ridimensionato a 768*576 dal plug-in e in seguito nuovamente ridimensionamento da tmpeg alla risoluzione scelta: in tal caso la decompressione è anche 2-3 volte più lenta.

IDCT reference è lenta e messa a scopo di test: la qualità della IDCT ottimizzata è elevatissima essendo compatibile con le specifiche IEEE-1180.

La selezione "non interallacciare" garantisce il rispetto dei semiquadri, stranamente sfasati negli altri 2 casi ,penso inseriti per la gestione del 3:2 Pull Down, che interessa il video NTSC e non il nostro PAL.

Ovviamente riguardo la Ottimizzazione della CPU se possedete P3 o P4 è possibile selezionare SSE o SSE2: riguardo la correzione colori ,conviene lasciare il valore standard e ricorrere ad eventuali correzioni con i filtri colori di tmpeg.

Installato il plug-in conviene garantirsi l'ordine di priorità in Tmpeg cliccando in option/environmental setting/VFAPI plug-in ed eventualmente modificare le priorità come in figura. Una eventuale successiva incompatibilità per altri tipi di conversioni, può essere eliminata deselezionando il plug-in m2v.vfp

Il plug-in m2v.vfp permette la lettura diretta del video mpeg2 presente sia nei VOB che nei file mpeg2: per l'audio occorre procedere come vedremo.

A questo punto ci sono 2 metodi possibili che analizzo separatamente.

 

Metodo1: caso generico NON valido per la conversione dei SVCD

Metodo2: metodo valido per la conversione di SVCD

 

 

Metodo1: caso generico NON valido per la conversione dei SVCD

Questo metodo funziona  nei casi in cui video da riconvertire NON è un SVCD presente su CD (il file Avseq01.mpg presente nella directory mpeg2 del SVCD), ma è un qualsiasi video mpeg2 con audio mpeg o PCM compresso. Il metodo  funziona anche nel caso in cui l'mpeg2 è di tipo I frame only, oltre che per gli mpeg2 IPB: è possibile in tale maniera convertire in SVCD o XVCD video digitalizzato in tale formato ad esempio con una scheda video Ati Radeon.

Sia ad esempio originale.mpg il file da riconvertire: video mpeg2 e audio mpeg. Ipotizziamo il caso in cui l'audio del nuovo file da creare sia diverso rispetto all'originale; ad esempio ho un originale compresso in mpeg1 layer1 44100 224 Kbits/s stereo e desidero un mpeg1 layer1 32000 64 Kbits/s mono (può essere il caso di un mpeg1 da inserire su internet, in cui si desidera risparmiare il più possibile sul bitrate).

Eseguito tmpeg, click su file/mpeg tools/De-multiplex /Input Browse  e caricamento del file originale.mpg .

Appariranno le caratteristiche dei flussi audio: il primo passaggio da fare è estrarre il flusso audio; per far ciò basta un doppio click su audio stream e verrà chiesto il nome del file da creare, ad esempio audio.

In pochissimo tempo viene copiato il flusso audio con il nome audio.mp2.

Non occorre estrarre il flusso video.

La seconda operazione da fare è indicare a tmpeg i flussi audio e video da convertire : per il flusso video basta semplicemente caricare tramite Video source/Browse il file mpeg da convertire DAL QUALE IL PLUG IN m2v.vfp PRELEVERA' SOLO IL FLUSSO VIDEO. Nel nostro caso occorre indicare il file originale.mpg
Per il flusso audio basta semplicemente caricare tramite Audio source/Browse il file audio appena demultiplexato, nel nostro caso audio.mp2 (per caricarlo occorre indicare come tipo file, ALL files*.* )

A questo punto è possibile scegliere i parametri di compressione caricando o modificando un template e avviare la conversione: se si desidera creare un avi basta come visto cliccare su file/output_to_file/avifile.

Può succedere che a pochi fotogrammi prima del termine della conversione, appare un errore sulla lettura del flusso audio: nessun problema, la conversione è stata fatta correttamente e mancheranno solo gli ultimi fotogrammi (40-50) a seguito della approssimazione con cui sono indicate le durate dei contributi audio-video. Per ovviare alla cosa (non è ovviamente indispensabile), prima della conversione basta andare in setting/arrange/ selezionare e doppio click su source range. 
Occorre scorrere il cursore verso la fine del filmato
 
e muovendosi con i puntatori e   selezionare
l'ultimo frame che contenga audio non nullo, ovvero in corrispondenza del quale viene visualizzata interamente una forma d'onda (la finestra delle forme d'onda disegna l'audio che si ha in corrispondenza del fotogramma selezionato). Ecco un esempio

frame 2002
No: forma d'onda nulla (nessun audio)
frame 2001 No: forma d'onda parzialmente nulla (il fotogramma precedente è quello giusto)
frame 2000 Si: forma d'onda completa

Individuato il fotogramma finale che contiene audio, basta cliccare su "set end frame": ovviamente start frame per una conversione totale  va settato a 0.

IMPORTANTE

Nei casi in cui si utilizzano in ingresso flussi audio e video separati è buona norma verificare il sincronismo audio video: per far ciò basta andare in setting/advanced/ doppio click su Source Range e scegliere un breve pezzo per fare un test (ad esempio 200-250 fotogrammi). Se il video prodotto contiene audio in anticipo o ritardo è possibile tramite l'opzione correggere tali asincronismi, come visto prima

Il caso visto ha lo svantaggio di ricomprimere anche l'audio operazione che ha senso solo se il formato audio di uscita (l'mpeg o avi da creare) deve essere diverso da quello d'ingresso (il file originale.mpg dell'esempio): sono numerosi i casi in cui l'audio d'ingresso e di uscita si desidera abbiano lo stesso formato. Ad esempio l'audio mpeg1 layer1 44100 224 Kbits/s stereo usatissimo non va riconvertito per le conversioni Mpeg-->XVCD tipo SVCD con audio 224-->XVCD. 
Vediamo come procedere  per non ricomprimere l'audio (il metodo NON funziona nelle conversioni mpeg2-->avi)

Per mantenere lo stesso audio, occorre per prima cosa, come nel caso appena visto  estrarre il flusso audio; per far ciò click su file/mpeg tools/De-multiplex /Input Browse  e caricamento del file originale.mpg. Doppio click su audio stream e verrà chiesto il nome del file da creare, ad esempio "audio".
In pochissimo tempo viene copiato il flusso audio con il nome audio.mp2
La seconda operazione da fare è creare con tmpeg un mpeg contenente solo video. Basta semplicemente caricare tramite Video source/Browse il file mpeg da convertire DAL QUALE IL PLUG IN m2v.vfp PRELEVERA' SOLO IL FLUSSO VIDEO. Nel nostro caso occorre indicare il file originale.mpg.

In output file si sceglie il nome del file da creare, ad esempio video.

A questo punto, non occorre come prima indicare il flusso audio, ma verificato che in tmpeg sia selezionato è possibile scegliere i parametri di compressione caricando o modificando un template e avviare la conversione: verrà creato il file mpeg solo video, nell'esempio video.m1v ( l'estensione è scelta da tmpeg, m1v per video mpeg1, m2v per video mpeg2).

L'ultima operazione da fare è creare l'mpeg finale multiplexando l'audio ottenuto nella prima operazione (audio.mp2) e il video creato nella seconda (video.m1v).

Per far ciò click su file/mpeg tools/Simple-multiplex : come prima cosa occorre indicare il tipo di mpeg da creare (nell'esempio mpeg1 Video-cd non standard se si desidera creare degli XVCD)
Nome dei flussi audio e video (video.m1v e audio.mp2 nell'esempio) e in output il nome del file da creare.

Click su Run per creare il file. 

Noto che è possibile fare il multiplexing anche con BBmpeg come visto prima, eventualmente correggendo eventuali asincronismi.

 

Metodo2: metodo valido per la conversione di SVCD

Questo metodo può interessare ad esempio alla conversione SVCD-->XVCD; i risultati qualitativi sono ovviamente molto inferiori rispetto alla conversione diretta DVD--> XVCD nel caso in cui il SVCD è stato ottenuto da un DVD.

Se si utilizza uno dei 2 metodi visti operando sul file Avseq01.mpg presente nella directory mpeg2 del SVCD (o XSVCD), il video non viene riconosciuto come valido.

Per procedere occorre prima di tutto demultiplexare il file Avseq01.mpg presente su CDR copiando separatamente i flussi audio e video su HD; poi si dovrà procedere alla conversione.

Anche in questo caso vediamo, come prima, il caso di audio di ingresso e di uscita diversi e poi il caso in cui il formato è lo stesso.

La prima operazione da fare è demultiplexare il file Avseq01.mpg: per far ciò click su file/mpeg tools/Simple De-multiplex /Input Browse  e caricamento del file Avseq01.mpg.

Occorre poi scegliere il nome e la directory dell'Hd dei due flussi audio e video, tramite video output Browse e audio output Browse.

Click su Run per il demultiplexing al termine su HD si avranno i file video e audio AVseq01.m2v e AVseq01.mp2.

Per creare l'mpeg occorre indicare a tmpeg (browse) i due flussi audio e video ricavati (occorre indicare come tipo file, ALL files*.*) e selezionare il nome del file da creare 

A questo punto è possibile scegliere i parametri di compressione caricando o modificando un template e avviare la conversione: se si desidera creare un avi basta come visto cliccare su file/output_to_file/avifile.

Vediamo come procedere  per non ricomprimere l'audio (il metodo NON funziona nelle conversioni mpeg2-->avi): questo metodo è utile per le conversioni SVCD-->XVCD nell'ipotesi in cui l'audio del SVCD è mpeg1 layer1 44100 224 Kbits/s stereo (è un formato abbastanza standard).

Il primo passaggio è lo stesso appena visto: demultiplexing del video Avseq01.mpg con la creazione dei file AVseq01.m2v e AVseq01.mp2 tramite file/mpeg tools/Simple De-multiplex.

La seconda operazione da fare è creare con tmpeg un mpeg contenente solo video. Basta semplicemente caricare tramite Video source/Browse il file video appena ottenuto, AVseq01.m2v.

In output file si sceglie il nome del file da creare, ad esempio video.

A questo punto, non occorre come prima indicare il flusso audio, ma verificato che in tmpeg sia selezionato è possibile scegliere i parametri di compressione caricando o modificando un template e avviare la conversione: verrà creato il file mpeg solo video, nell'esempio video.m1v ( l'estensione è scelta da tmpeg, m1v per video mpeg1, m2v per video mpeg2).

L'ultima operazione da fare è creare l'mpeg finale multiplexando l'audio ottenuto nella prima operazione (AVseq01.mp2) e il video creato nella seconda (video.m1v).

Per far ciò click su file/mpeg tools/Simple-multiplex : come prima cosa occorre indicare il tipo di mpeg da creare (nell'esempio mpeg1 Video-cd non standard se si desidera creare degli XVCD)
Nome dei flussi audio e video (video.m1v e AVseq01.mp2 nell'esempio) e in output il nome del file da creare.

Click su Run per creare il file. 

Noto che è possibile fare il multiplexing anche con BBmpeg come visto prima, eventualmente correggendo eventuali asincronismi.


Come unire o dividere in più parti un file mpeg1 o mpeg2 con Tmpeg o BBmpeg. 

I due software freeware che esaminerò sono i "soliti" BBmpeg e Tmpeg: gli indirizzi per scaricarli li trovate nella sezione links della pagina Digital video.

Con Tmpeg è possibile sia tagliare un mpeg (cut) scegliendo le posizioni di inizio e fine video e sia unire più Mpeg (join) che naturalmente devono avere le stesse caratteristiche. Lo svantaggio di tmpeg sta nella assoluta impossibilità di avere dei riferimenti sulle dimensioni dei file: è impossibile ad esempio tagliare un mpeg fissando la dimensione massima che si è disposti a ottenere. Nei casi della creazione di un SVCD o di un XVCD servirebbe limitare le dimensioni dei file a 739,098 MByte (XVCD o SVCD su cdr 74) o 793,457 Mbyte (XVCD o SVCD su cdr 80).

Con BBmpeg è possibile tagliare l'mpeg (cut) sia mediante l'indicazione delle posizioni di inizio e fine taglio e sia mediante la dimensione massima che si è disposti a creare : 739 e 793 MB che per "prudenza" conviene fissare a 738 MB (XVCD e SVCD su cdr 74) o 792 MB (XVCD e SVCD su cdr 74). Lo svantaggio di BBmpeg sta nel fatto che non è in grado di operare direttamente sull'mpeg audio-video creato ad esempio da tmpeg, ma al contrario occorre fornirgli separatamente il file video e audio: in pratica occorre preventivamente demultiplexare l'mpeg creato, ad esempio utilizzando gli mpegtools di Tmpeg, operazione semplice ma non velocissima se si opera su file molto grossi. Naturalmente occorre avere spazio sufficiente su HD nel momento in cui con il demultiplexing si ottengono 2 file la cui dimensione totale è quasi pari all'mpeg originale, che naturalmente non viene cancellato.

Le 3 possibilità che analizzo, ovvero i nostri "strumenti di lavoro" per la divisione dell'mpeg in più parti , sono

Taglio di un file mpeg con Tmpeg (mpeg tools)

Unione di più file mpeg con Tmpeg (mpeg tools)

Taglio di un file mpeg con BBmpeg

 


Taglio di un file mpeg con Tmpeg (mpeg tools)  

La premessa da fare è che Tmpeg permette la visualizzazione dell'mpeg da tagliare per la scelta della posizione dei punti di inizio e fine taglio appoggiandosi nel caso dell'mpeg 1 sui codecs Mediamatic presenti in windows e per l'mpeg 2 sugli eventuali driver DirectX di decodifica mpeg2 presenti nel PC, che sono automaticamente inseriti nel sistema quando viene installato un Sw player DVD quali Windvd2000 o PowerDvd.

E' importante osservare come la visualizzazione del video per la scelta dei punti di taglio NON E' NE' INDISPENSABILE E NE' DETERMINANTE  nel momento in cui Tmpeg considera validi i  loro valori numerici (nel formato minuti:secondi,centesimi di secondi) INDIPENDENTEMENTE da ciò che è visualizzato nella finestra di preview: tali valori numerici possono essere inseriti anche manualmente.

Ciò significa prima di tutto che nel caso dell'mpeg2, se nel sistema non è installato nessun driver, le operazioni di taglio possono essere eseguite ugualmente, rinunciando al preview dei punti di taglio: la seconda conseguenza è che se i driver di visualizzazione non mostrano correttamente il video in corrispondenza di una data posizione, è possibile ottenere tagli in punti diversi da quanto visualizzato: in tal caso la "colpa" è dei driver di visualizzazione e non di tmpeg. 

Detto in altre parole se si fissano i punti di taglio come in figura (vediamo tra breve come fare)  Tmpeg preleverà il video compreso tra istanti 1 min.: 8 sec.  e 1 min.: 23 sec. indipendentemente da ciò che i driver visualizzano in quegli istanti. Per questo motivo se i driver installati sono precisi si otterrà il taglio esattamente nei punti visualizzati: in caso contrario, si avrà in punti diversi ma corrispondenti agli istanti indicati. 

E' importante considerare tale potenziale causa di problemi nel momento in cui per l'mpeg2, su molti sistemi, la installazione di diversi DVD player SW in relazione alle librerie DirectX installate possono creare una combinazione di driver che hanno difficoltà nel sincronizzare i flussi mpeg e che pertanto visualizzano gli mpeg in posizioni sfasate rispetto a quanto indicato.

Attualmente con Win98SE, DirectX 8 e i driver mpeg di Windvd2000 v2.4 ottengo dei risultati perfettamente coerenti con ciò che è visualizzato negli mpegtools di Tmpeg Beta12f sia per l'mpeg1 che mpeg2.

LE VERSIONI DI TMPEG PRECEDENTI LA BETA12f hanno alcuni problemi nel taglio degli mpeg2: è praticamente indispensabile ricorrere alla versione Beta12f o successive .

Vediamo come procedere:  

Caricato Tmpeg, occorre cliccare su File/mpeg tools/ Merge & Cut e selezionare il formato che si deve elaborare:   
MPEG 1 system (automatic) Mpeg1 file generico, riconoscimento automatico del  bitrate variabile
MPEG 1 system (VBR)  Mpeg1 file generico, bitrate variabile.
MPEG 1 VCD  VCD standard
MPEG 1 VCD (non-standard) XVCD
MPEG2 Program (VBR) Mpeg2 file generico
MPEG2 Super Video CD (VBR) SVCD, CVCD, XSVCD

- click su Add per caricare l' mpeg da tagliare
- click su  Browse a destra di Output per indicare il nome del file da creare 
- Doppio click sul file per scegliere i punti di inizio e fine taglio.

Appare la finestra in figura: al centro tranne nel caso di mpeg 2 in un sistema in cui non sono stati installati dei driver per la loro visualizzazione  apparirà il filmato da tagliare.

La prima cosa da fare è cliccare su Play : se al contrario si muove lo slider in basso o si modificano subito i valori di Range, quasi certamente il programma si blocca (è un problema che stranamente l'autore di tmpeg non ha ancora corretto).

Dopo aver premuto su play è possibile selezionare i punti di inizio o fine taglio : è possibile farlo sia con il player in pausa che durante il play.

La selezione può essere fatta o cliccando su o inserendo i valori numerici in Range: come detto il formato è minuti:secondi, centesimi di secondo.

Nell' esempio 00:10,00 corrisponde alla posizione 10 secondi; 
18:30,00 a 18 minuti e 30 secondi.

Come visto nel caso dell'mpeg2 può non essere opportuno affidarsi alla visualizzazione che dipende dei driver DirectX mpeg 2 installati nel sistema: per questo motivo in certi casi o per conferma è conveniente individuare i punti di taglio con un player esterno. Basta infatti caricare lo stesso filmato da tagliare in sw quali Windvd2000 e appuntarsi gli istanti che vanno poi inseriti manualmente in Tmpeg. Ovviamente è possibile aprire tali sw esterni contemporaneamente senza problemi: un ottimo SW freeware con cui effettuare la visualizzazione dell'mpeg2 e identificare visivamente i punti di taglio, è l'ottimo DVD2AVI: caricato l'mpeg per visualizzare il tempo basta selezionare STATISTIC (F6) e leggerlo nella finestra relativa mentre si muove il cursore in basso o si esegue il preview (F5). Il vantaggio di DVD2AVI, che è freeware, sta nel fatto che è indipendente dalle librerie mpeg2 DirectX: in pratica funziona correttamente su ogni configurazione.

Scelti i punti di taglio basta cliccare su OK e ritornando alla finestra precedente cliccare su RUN.

Osservo come quasi sempre, al termine dell'operazione Tmpeg impiega un certo quantitativo di tempo in cui sembra bloccato, per ricontrollare e probabilmente modificare il file creato: tale operazione può durare anche parecchi muniti.

Come già detto il vantaggio di tmpeg sta nel fatto di poter tagliare direttamente gli mpeg senza alcuna operazione preventiva di demultiplexing: lo svantaggio sta nella incapacità di limitare la dimensione massima a 738 MB (XVCD o SVCD su cdr 74) o 792 MB (XVCD o SVCD su cdr 80). Se tali dimensioni sono superate occorre effettuare un nuovo taglio per eliminare la parte in eccesso.

Unione di più file mpeg con Tmpeg (mpeg tools)  

L'unione (Join) di più file mpeg aventi le stesse caratteristiche, la si effettua in maniera analoga a quanto visto prima.

Per ciascuno dei pezzi da unire è possibile scegliere se utilizzare l'intero file o una sua porzione e in questo caso i punti di inizio e fine sono selezionati nella stessa maniera vista per il taglio. 

Per scegliere i 2 o più mpeg da unire basta semplicemente cliccare su ADD per ogni mpeg da aggiungere. L'unica differenza con il metodo di taglio sta nel fatto che si vogliono unire in successione 2 o più mpeg completi non occorre doppio cliccare sul file e selezionare i punti di inizio e fine video. Tramite trascinamento è anche possibile modificare la successione degli mpeg da unire.

Caricato Tmpeg, occorre cliccare su File/mpeg tools/ Merge & Cut e selezionare il formato che si deve elaborare:   
MPEG 1 system (automatic) Mpeg1 file generico, riconoscimento automatico del  bitrate variabile
MPEG 1 system (VBR)  Mpeg1 file generico, bitrate variabile.
MPEG 1 VCD  VCD standard
MPEG 1 VCD (non-standard) XVCD
MPEG2 Program (VBR) Mpeg2 file generico
MPEG2 Super Video CD (VBR) SVCD, CVCD, XSVCD

- Click su Add per caricare in successione i 2 o più mpeg da unire.
- Doppio click sul file per scegliere eventualmente i punti di inizio e fine taglio che si desidera inserire (vale tutto ciò che è stato detto per le operazioni di taglio). 
- Click su  Browse a destra di Output per indicare il nome del file da creare 
- Doppio click sul file per scegliere i punti di inizio e fine taglio.

Dopo aver caricato i diversi contributi è anche possibile , tramite trascinamento, modificarne la successione con cui vanno uniti spostando il file da unire nella giusta posizione.

L'opzione Correct serve semplicemente ad eliminare dall'unione, file non dello stesso formato: in pratica se si cerca di unire ad esempio più Mpeg di risoluzioni diverse, cliccando  su Correct è possibile eliminare il contributo sbagliato; è un modo rapido per verificare di non aver inserito nella lista mpeg diversi, evitando così una segnalazione di errore durante la operazione di unione.

Per avviare l'unione basta cliccare su cliccare su RUN: anche in questo caso al termine dell'operazione di unione Tmpeg impiega un certo quantitativo di tempo in cui sembra bloccato, per ricontrollare e probabilmente modificare il file creato: tale operazione può durare anche parecchi muniti.

Alcune osservazioni:

- come per il taglio, anche per l'unione conviene utilizzare la versione Beta12f o successiva: ad esempio la B12e crea nel caso dei SVCD degli mpeg incompatibili.
- se si sta lavorando per la creazione di un SVCD o XVCD, grazie alla possibilità di Nero Burning di inserire diversi contributi video (file mpeg) da visualizzare in successione nel SVCD o XVCD, l'operazione di unione appena vista, in certi casi può essere pertanto evitata e sostituita con tale possibilità. Il vantaggio dell'unione realizzata con Tmpeg sta nel fatto che nel passaggio tra uno spezzone e il successivo normalmente non ci sono   particolari problemi; spesso c'è solo una breve interruzione dell'audio (qualche decimo di secondo) un brevissimo "bip" ed eventualmente qualche artefatto video nell'arco dei GOP adiacenti (qualche fotogramma). Se invece si opta nell' inserire i 2 o più contributi in successione nel SVCD o XVCD con Nero Burning, senza creare con Tmpeg un unico file c'è l'ovvio vantaggio del risparmio di tempo (si evita l'unione) e in più è possibile inserire in successione contributi video aventi caratteristiche anche diverse (ad esempio nel caso di problemi di spazio è possibile inserire i titoli di coda del film con una qualità video inferiore) . Lo svantaggio sta nel fatto che nel passaggio tra un contributo e il successivo occorre preventivare almeno una pausa di un paio di sec dovuta al tempo che il lettore impiega per passare dalla lettura di un file al successivo : tale pausa può non essere avvertibile in un cambio scena ma diventa evidente e fastidiosa negli altri casi.

- a causa della sintassi dell'mpeg è impossibile ottenere con Tmpeg delle unioni perfette senza artefatti nel passaggio tra i pezzi che sono stati uniti. Il motivo sta nel fatto che Tmpeg quando realizza le unioni, a cavallo del punto di taglio, non opera alcuna ricompressione del video e dell'audio ma posiziona in successione pacchetti audio e video provenienti da codifiche diverse. Poichè i pacchetti audio-video presenti nel flusso mpeg hanno durata pari a circa una decina di fotogrammi per il video e qualche decimo di secondo per l'audio, l'unione non potrà mai essere particolarmente precisa: al contrario l'unica maniera per ottenere unioni virtualmente corrette, è quella di decomprimere audio e video a cavallo del punto di unione, creare un brevissimo crossfade per l'audio (evitando così discontinuità e pertanto fastidiosi click) e ricomprimere nuovamente in mpeg tale porzione audio-video. Ci sono software quali MPEG-VCR della Womble Multimedia, Inc  che realizzano le unioni in tale maniera; lo svantaggio sta nel fatto che spesso vengono modificati  i parametri relativi al multiplexing audio-video e occorre verificare la compatibilità degli mpeg così prodotti. 
- Riguardo la possibilità di unire mpeg aventi caratteristiche diverse,  nel caso di mpeg prodotti con tmpeg e lo stesso template, non ci sono ovviamente problemi compatibilità. Nel caso di video mpeg 2, 
è ad esempio possibile unire due Mpeg con bitrate audio o video diversi: al contrario è  impossibile unire mpeg con risoluzioni diverse o mpeg interallacciati con progressivi. Voglio osservare come tale caratteristica  può essere utilizzata in maniera creativa per ottimizzare il bitrate audio-video nella conversione di film in cui ci sono problemi di spazio. 

Taglio di un file mpeg con BBmpeg  

Riguardo la capacità di BBmpeg di operare sugli mpeg , diversamente da Tmpeg è in grado di tagliare gli mpeg (cut) ma non di operare delle unioni (join). 

Lo svantaggio di BBmpeg sta nel fatto che non è in grado di operare direttamente sull' mpeg ma al contrario occorre fornirgli separatamente il file video e audio: in pratica occorre preventivamente demultiplexare l'mpeg creato, ad esempio utilizzando gli mpegtools di Tmpeg, operazione semplice ma non velocissima se si opera su file molto grossi. Naturalmente occorre avere spazio sufficiente su HD nel momento in cui con il demultiplexing si ottengono 2 file la cui dimensione totale è quasi pari all'mpeg originale.

Il secondo grosso svantaggio sta nel fatto che BBmpeg amplia la dimensione dell'mpeg pur senza modificarne la qualità: infatti

IMPORTANTE: BBmpeg crea un multiplexing in maniera diversa da Tmpeg incrementando la dimensione dell'mpeg di circa lo 0,65%; ciò significa che si prende un mpeg creato da tmpeg, lo si demultiplexa nelle parti audio e video e lo si rimultiplexa senza tagliare nulla , si ottiene un mpeg con 
Dimensioni_file_bbmpeg = dimensioni_file_tmpeg * 1,0065 

Il circa 0,65% corrisponde a circa 5 MByte in più per ogni SVCD o XVCD (738 * 0,0065= 4,8 MByte), valore che deve essere considerato nel caso di compressioni "al limite" della capienza dei CD.

Il vantaggio di BBmpeg al contrario sta nella varietà dei parametri che è possibile gestire non ultimo la possibilità di eliminare eventuali ritardi o anticipi dell'audio rispetto al video (asincronismi) e la possibilità, già citata, di porre dei vincoli sulla dimensione massima del file creato.

Con BBMPEG è impossibile visionare gli mpeg da elaborare: per la scelta dei punti di taglio, che andranno immessi numericamente, può essere opportuno utilizzare un player esterno (WinDVD 2000, PowerDVD,...) o l'ottimo freeware DVD2AVI (solo mpeg1) o il windows media player.

Prima di vedere in pratica come operare, analizziamo i 3 principali parametri da settare; dopo aver indicato i file video e audio mpeg ottenuti eventualmente demultiplexando un mpeg audio-video, vengono creati uno o più mpeg audio-video a secondo dei seguenti parametri:

Start second : la posizione espressa in secondi da cui iniziare a creare l'mpeg. 
0 coincide con l'inizio del video

Naturalmente nota la posizione in ore:min:sec 

Secondi = (ore*3600) + (minuti*60) + secondi 

 

End second : la posizione espressa in secondi in cui terminare la creazione del'mpeg. Se Start ed End second sono entrambi posti a 0, viene multiplexato l'intero video (audio e video sono ricongiunti in un unico mpeg) ed è eventualmente tagliato in pezzi aventi ciascuno la dimensione pari a Max size.
Max size: se settato a 0 non vengono posti limiti sulle dimensioni del file da creare e viene creato pertanto sempre un solo mpeg compreso tra gli istanti Start e End.

Se Max size è posto ad un valore diverso da zero, vengono creati uno o più mpeg in base ai parametri Start e End con la condizione che ogni qual volta viene eventualmente raggiunta la dimensione MAX Size, viene spezzato l'mpeg  creando cosi 2 o più file (es. test01.mpg, test02.mpg,test03.mpg,.....). Naturalmente l'ultimo pezzo avrà dimensioni inferiori al massimo indicato a meno di multipli perfetti di Max size.

Osservo come Max size è espresso in Mega Byte dove

1MB =1024 KByte=1 048 576 byte (=1024*1024 byte)

Naturalmente il taglio è fatto rispettando la sintassi dell'mpeg (pacchetti audio-video la cui cella minima è il GOP) così che la dimensione massima non è mai esattamente pari al valore massimo impostato ma normalmente 200-300 Kbyte in meno.

Nel caso di SVCD o XVCD, considerando la capienza massima disponibile su di un CD, è consigliabile inserire i valori 738 MB (XVCD e SVCD su cdr 74) o 792 MB (XVCD e SVCD su cdr 80)

Ecco alcuni esempi dell'utilizzo delle operazioni di taglio con BBmpeg.

 Esempio 1

Creazione del secondo SVCD (o XVCD)  di un film di 200 minuti da dividere in 3 CDR-74. I 10 secondi in più servono per creare continuità tra parti successive. Ecco i valori da inserire:
.................... Start second = 2400 (40:00) ..................
End second = 4810 (80:10)
Max size = 738 

Nel caso in cui l'mpeg compreso tra 2400 e 4810 ha una dimensione inferiore a 738 MB, BBmpeg crea un solo file come in figura. 

Nel caso in cui l'mpeg compreso tra 2400 e 4810 ha una dimensione superiore a 738 MB BBmpeg crea un primo mpeg di 738 MB da inserire nel SVCD (o XVCD) e il pezzo rimanente in un secondo mpeg: naturalmente nella fase successiva (creazione del terzo SVCD o XVCD) occorre tener conto del pezzo non inserito e iniziare la nuova divisione in modo da recuperare tale pezzo, iniziando nell'esempio in figura dall'istante precedente di qualche secondo all' istante 4740.

 

 

 Esempio 2

Divisione in 3 parti di un film di 120 minuti da inserire rispettivamente in 3 CDR-74 min: formato SVCD o XVCD.

.................... Start second = 0  ..................
End second = 0 (va anche bene 7200 =120 min*60 sec)
Max size = 738 

Nel caso in cui la dimensione totale dell'mpeg è inferiore a circa 2228 MB (738 MB *3 dischi *1,0065) si ottengono 3 mpeg come in figura: osservo come il taglio è fatto in modo tale che NON esistono parti in comune, cosa abbastanza fastidiosa per la visione del film. E' il metodo più rapido ma meno "artistico" del taglio: per la legge di Murphy si otterrà con ottima probabilità il "ti.." in un disco e "...amo" nel successivo; come ricorda il buon Murphy la probabilità che il taglio vada a finire in un cambio di scena è pari a ZERO!!!!!! (scherzi a parte senza scomodare la statistica è molto probabile di ottenere un taglio nel ben mezzo di un dialogo)

Nel caso in cui la dimensione totale dell'mpeg è superiore a 2228 MB (738 MB *3 dischi *1,0065) si ottengono 4 mpeg ad esempio come in figura:  
 

Vediamo come operare il taglio con BBmpeg. 

La prima operazione da fare è demultiplexare l'mpeg creato da Tmpeg, cioè creare 2 distinti file, uno contenente il video e l'altro l'audio mpeg.

Per il demultiplexing basta caricare Tmpeg, in file/MPEG Tool selezionare  Simple De-multiplex e scegliere il file da elaborare in Input/ Browse.

Click su RUN per avviare l'operazione: è necessario disporre di uno spazio libero su HD pari alla dimensione dell' mpeg originario che non viene minimamente modificato.

 

Per la creazione dell'mpeg occorre eseguire avi2mpg2.exe (uno degli eseguibili distribuiti con il pacchetto di BBmpeg),  click su , poi su e successivamente su  input and output file.

Open PS (program stream) per scrivere il nome del nuovo file da creare 
Open VS (video stream) per caricare il flusso video  creato da tmpeg
Open AS1 (audio stream) per caricare il flusso audio creato da tmpeg

Osservo come è possibile inserire 2 flussi audio come previsto dal SVCD, grazie alla Open AS2. 

Attenzione alle estensioni dei flussi audio e video: eventualmente basta ricorrere ad "All file *.* " per selezionare quello creato da tmpeg.

 

In program stream setting occorre prima di tutto indicare il tipo di formato che si sta utilizzando.

Per l'XVCD sia a 352*288 che con risoluzioni superiori (352*576, 704*576,...) occorre selezionare Mpeg1 e non VCD che è sottinteso standard e non va bene. Occorre in seguito rimultiplexare il video come vedremo tra breve.

Per i SVCD occorre selezionare ovviamente SVCD.

Nel caso di SVCD fuori standard (CVCD 352*288, 352*576) o XSVCD (SVCD fuori standard con risoluzione 704*576 o 720*576) va ancora bene SVCD

Nel caso di mpeg da utilizzare per i DVD ( con audio mpeg 48000 Hz) o VCD standard, basta selezionare i relativi nomi.


Per selezionare i parametri  che ho appena commentato basta selezionare General Setting. E' importante selezionare prima il valore di END e poi eventualmente modificare quello di START: in caso contrario  appare un messaggio di errore.

Le tre opzioni di sotto (reset.., set.., write..) vanno selezionate solo se start è diverso da zero.

Occorre inoltre verificare che sono selezionati i parametri

BBmpeg permette anche di risistemare il sincronismo audio-video cosa che può essere utile in tutte le situazioni in cui l'audio è costantemente in ritardo o in anticipo rispetto al video. Riguardo la scelta dei valori da inserire per risistemare il sincronismo, occorre intervenire su Startup delays (ms); in figura a destra ci sono i valori da inserire nel caso non si desidera fare alcuna modifica sul sincronismo.  

I due valori eventualmente da modificare sono il ritardo in millisecondi per il Video (di defoult 180) e per l'audio 1 (di defoult 180): Pack va lasciato a 0 (indica un buffer aggiuntivo da inserire, cosa che serve solo per il VCD standard, unico caso in cui va messo il valore 400). Sia per video che per l'audio, a causa della bufferizzazione dei flussi audio-video in pacchetti occorre eventualmente aumentare e non diminuire tali valori.

Audio 2 è utilizzabile nel caso di mpeg con doppio audio, opzione ad esempio prevista nel formato SVCD.

Osservo come nel sistema PAL a 25 fps, ogni fotogramma corrisponde a 40 ms e normalmente asincronismi di 3- 4 fotogrammi (120-160 ms) sono difficilmente percepibili sopratutto nel caso di film doppiati.

Nel caso di audio in anticipo rispetto al video (prima si ascoltano le parole e in seguito si muovono le labbra del personaggio che le ha pronunciate) per compensare l'anticipo occorre incrementare i valori relativi ad audio1 delay: 180-->220-->260-->300--->340-->380.....

Nel caso di audio in ritardo rispetto al video (prima  si muovono le labbra del personaggio e in seguito si ascoltano le parole) per compensare il ritardo  occorre incrementare i valori relativi a video delay: 180-->220-->260-->300--->340-->380.....

 

Per iniziare la conversione click su OK e poi su Start.

Poiché il video non è ricompresso, la velocità dell'operazione dipende da quella dell'HD, che è il collo di bottiglia. In tutti i casi la velocità è elevata (sul mio sistema circa 15 minuti per ogni mpeg di 738 MB, un CDR).

L'operazione è terminata tranne nel caso in cui si è elaborato un mpeg 1 con il quale poi creare un XVCD (352*288, 352*576, 704*576).

In tal caso occorre operare una nuova conversione con Tmpeg che dovrà creare un nuovo mpeg ma questa volta  multiplexando l'audio e il video secondo lo standard VCD (in pratica il flusso audio-video deve essere impacchettato in blocchi di 2324 KByte al posto dei 2048 dell' mpeg1. Ovviamente tale operazione, parecchio rapida, non modifica o ricomprime i flussi audio e video lasciando inalterata la loro qualità.

Per fare ciò basta caricare Tmpeg e in file/MPEG Tool selezionare  Merge & Cut.

Click su ADD per selezionare il file da convertire e inserimento di Type Mpeg1 VideoCD (non-standard). 

Click su output Browse per immettere il nome del file da creare.

Click su RUN per avviare l'operazione.

 


 10  

Difetto

Tmpeg non comprime in mpeg2

 

Cause Limite posto nella compressione mpeg 2 a causa delle pressioni imposte della società "MPEG LA"

La premessa da fare è che non sono un Hacker e che tutti i SW che trovate sul mio sito sono freeware e pertanto legali: in quest'ottica sembrerà strano trovare un mezzo per superare una limitazione posta dall'autore del SW. In realtà la questione è molto particolare.

Nella totalità dei casi i limiti posti su di un software (disabilitazione di certe caratteristiche o blocco dopo un certo numero di giorni) è una maniera utilizzata dagli autori per far provare il loro programma e incoraggiare all'acquisto della versione perfettamente funzionante. Qualsiasi modifica atta ad eliminare tali limiti è chiaramente illegale.

Nel caso di tmpeg la questione è diversa: l'autore di Tmpeg, famoso per la produzione di sw freeware (tra cui le mitiche librerie freeware che permettono di interfacciare Delphi alle Direct X) ha scritto e pensato a tmpeg come un software freeware. Il progetto dell'autore è quello di utilizzare la modalità di distribuzione freeware per "sfruttare" l'intera comunità mondiale come immenso beta tester: non a caso tutte le versioni di tmpeg sono delle versioni Beta tra l'altro con un numero di Bug ridottissimo (spesso casi particolari presenti solo in concomitanza di rare configurazioni SW-HW ). Al termine di questo periodo l'idea è quella di mettere in vendita una versione chiamata Tmpeg Pro dotata di tutte le caratteristiche delle versioni precedenti, con l'aggiunta di caratteristiche nuove: il prezzo, come riferito dall'autore si dovrebbe mantenere inferiore a quello di un gioco per Playstation !!!.. 

Il progetto, ottimo per l'autore ma nello stesso tempo per chi sfrutta un sw così potente in maniera gratuita, è in parte saltato a causa della società "MPEG LA" che sfruttando una serie di cavilli burocratici è riuscita un pò di anni fa' a garantirsi i diritti sullo standard mpeg2: in pratica qualsiasi HW o SW che utilizzano l'mpeg2 deve pagare una quota a tale società. I nomi delle aziende che, pagando, sono autorizzate ad usare l'mpeg2 sono le solite: Columbia University, France Telecom (CNET), Fujitsu, General Instrument Corp., Hitachi, Ltd., KDD Corporation (KDD), Matsushita, Mitsubishi, Nippon Telegraph and Telephone Corporation (NTT), Philips, Samsung, Sanyo Electric Co., Ltd., Scientific Atlanta, Sony, Toshiba, and Victor Company of Japan, Limited (JVC).

A questo punto, l'autore di tmpeg è corso ai ripari: per continuare a distribuire Tmpeg è ricorso alle stesse armi. Dalla versione B12c, la compressione mpeg2 funziona per un mese a partire dalla installazione: diventando di fatto una versione Trial vengono così esclusi i vincoli sui diritti. La cosa particolare è che il meccanismo di protezione è degno di un programmatore alle prime armi e facilmente superabile. Ovviamente un genio della programmazione come l'autore di Tmpeg, ha creato volutamente un limite così stupido, banalmente superabile, per continuare nel suo progetto e bypassare così il limite imposto dalla società "MPEG LA".

Attualmente non esiste ancora la versione Tmpeg Pro e continuano a essere messe on line all'incirca ogni mese delle nuove versioni di tmpeg, per permettere a chiunque di superare il "famoso" limite utilizzando di volta in volta la versione più recente. Stranissimo il fatto che continuano ad essere presenti on line altri Sw freeware di compressione mpeg2 (vedi BBmpeg) senza che la società "MPEG LA" batta ciglio!!!

Vediamo come superare il limite del mese sull'mpeg2: sono riuscito a scovare  tale metodo il 19 febbraio poche ore dopo l'uscita della versione B12c, la prima caratterizzata da tale limite (prova evidente della assoluta semplicità del meccanismo di protezione). 

Il meccanismo utilizzato da tmpeg è il seguente: quando tmpeg è installato la prima volta, crea tra le altre cose una chiave nel registro di windows che è [HKEY_CLASSES_ROOT\CLSID\{63902277-B101-4049-8B46-C24B67E155E5}] (ho scovato la cosa semplicemente monitorando la prima esecuzione del nuovo tmpeg con il sw freeware Regmon http://www.sysinternals.com e cercando l'esecuzione del l'istruzione "crea nuova chiave" ). Tale chiave contiene all'interno il seguente valore AppID"="{00A8DB50-0AB9-4D90-0E40-000816334555}" dove la cifra in rosso contiene l'informazione sulla data della prima installazione.

{00A8DB50-0AB9-4F90-0E40-000816334555} 19 febbraio 2001
{0088450B-8BC5-
E390-0E40-000816334555} 19 luglio 2001
{0088589C-3AC6-
5092-0E40-000816334555} 19 luglio 2002
{0030884A-2DC7-
0598-0E40-000816334555} 19 luglio 2006
{00807E07-F6E3-
768E-0F40-000816334555} 13 settembre 2099 
Ad ogni nuova esecuzione di tmpeg viene letta tale chiave, che ovviamente è creata solo la prima volta.

Scovato il metodo usato da tmpeg , la maniera per eliminare la limitazione è banale: ecco come procedere

 

Metodo  versione di Tmpeg  Download 
Doppio click sul file scadenza_13_9_2099.reg quando Tmpeg NON E' in esecuzione: viene modificata la chiave del registro responsabile della protezione, resettando la scadenza; da quel momento in poi è possibile utilizzare la compressione mpeg2 per ulteriori 30 giorni.

Naturalmente ripetendo l'operazione almeno ogni 30 giorni, è possibile superare il limite per sempre....... o quasi  visto che la cosa funziona sino al 13 settembre del 2099, 100 anni dal "giorno del distacco"........Tra cent'anni ne riparliamo!!!!!

Beta12c 
Beta12d 
Beta12e 
Beta12f 
Beta12g 
Scadenza_13_9_2099.reg è presente all'interno del file zip
scadenza_13_9_2099.zip
Esecuzione del file patch_tmpeg_b12e.exe all'interno della directory in cui è presente tmpeg versione 12e: indicata la posizione dell'eseguibile tmpeg.exe, viene modificato il programma(sono cambiati solo 4 byte, sicuramente una istruzione di salto condizionato) in maniera tale che non è più eseguito il controllo sulla data di installazione. Scompare definitivamente il limite del mese sull'mpeg2 Beta 12e Patch_tmpeg_b12e.exe è presente all'interno del file zip scadenza_13_9_2099.zip
Metodo assolutamente analogo a quello appena visto ma valido per la versione  beta12f.Il file da utilizzare è patch_tmpeg_b12f.exe Beta 12f Patch_tmpeg_b12f.exe è presente all'interno del file zip scadenza_13_9_2099.zip
Scaricare dal mio sito la versione in cui ho già eliminato il limite tramite l'esecuzione del file patch_tmpeg_b12e.exe.

PER CHI HA GIA' SCARICATO LA VERSIONE ORIGINALE DI TMPEG E' UN INUTILE SPRECO DI BANDA SCARICARE L'INTERO PACCHETTO DAL MIO SITO: BASTA SCARICARE scadenza_13_9_2099.zip (solo 7 Kbyte rispetto a più di 900KByte) E APPLICARE LA MODIFICA TRAMITE patch_tmpeg_b12e.exe .

Beta 12e Tmpeg_B12e
Tutto analogo a quanto appena visto ma valido per la versione  beta12f: ovviamente anche in questo caso è inutile scaricare l'intero pacchetto se già lo si possiede.  Beta 12f Tmpeg_B12f

Il sito ufficiale di Tmpeg è http://www.tmpgenc.com/e_main.html (occorre scaricare i 2 file  presenti in http://www.tmpgenc.com/e_download.html  e decomprimerli in una stessa directory) 

Come al solito  per qualsiasi commento e parere potete contattarmi al mio indirizzo di posta elettronica
benedettodue@tiscalinet.it .

26 Giugno 2001

Ultimo aggiornamento 6 Luglio 2001

Benedetto.

 

Indice  

Ritorna alla pagina digital video

Ritorna alla home page