SSA Fansub Forum Index SSA Fansub
SSA Fansub Forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Hardsubbare un video VFR

 
Post new topic   Reply to topic    SSA Fansub Forum Index -> Guide e programmi
View previous topic :: View next topic  
Author Message
Nicky
SSA Staff


Joined: 11 Jun 2009
Posts: 512
Location: Rovigo (ma più vicino a Ferrara)

PostPosted: 2012-02-16 15:30    Post subject: Hardsubbare un video VFR Reply with quote

HARDSUBBARE UN VIDEO VFR

A CHI È DEDICATA QUESTA GUIDA?

Per tutti coloro che vogliono hardsubbare partendo un video vfr, generalmente mkv. È utile per esempio ai fansubber che vogliono ottenere un mkv vfr ibrido, cioè un mkv con i sottotitoli dei dialoghi softsub ma con i cartelli hardsubbati.

SPIEGAZIONI PRELIMINARI

Quando encodiamo il nostro filmato e notiamo che i nostri sottotitoli o l'audio sono desincronizzati col video potrebbe essere che il video da cui siamo partiti sia vfr, cioè a framerate variabile. Come sapete, il video è composto da immagini che vengono visualizzate ad una certa velocità. L'unità di misura è in fps, cioè frame al secondo. Nello standard PAL la velocità è 25 fps, nell'NTSC è 29,970. I fansubber di anime partono da materiale NTSC (tvrip, dvdrip o bdrip) e normalmente eseguono l'IVTC, cioè portano il framerate da 29,970 a 23,976 tramite i noti TIVTC o Decomb, pacchetti per l'IVTC via Avisynth. Tali video sono spesso e volentieri cfr, cioè a framerate costante. Ma non è sempre così, a volte le fonti, cioè i filmati di partenza sono ibridi, cioè composti da parti telecinate (chiamate in inglese "film") e da parti denominate sempre in inglese "video", cioè nate originariamente a 29,970. Le parti telecinate sono quelle che originariamente erano a 24 fps e che poi, per lo standard NTSC, sono state portate a 29,970 fps tramite un processo denominato telecine o telecinema. Le parti telecinate vanno detelecinate, ovvero portate a 23,976 fps mentre quelle "video" vanno lasciate stare per evitare di ritrovarsi con un filmato che scatta nelle scene appunto "video", con un risultato estetico orribile. Le fonti ibride ormai sono rare, ma anni fa non erano così difficili da trovare. Molti anime vecchi lo sono. E considerando che una volta i fansubber di anime se ne fregavano o ignoravano il concetto di vfr, si limitavano a fare l'IVTC di tutto il filmato causando così quegli scatti così vistosi nei panning orizzontali e verticali.

L'AVI non è in grado di gestire il vfr se non portando il framerate a 120 fps (perdendo la compatiblità con i lettori DVD da salotto), ma l'MP4 e l'MKV sì. Tuttavia è solo su quest'ultimo che dobbiamo puntare per encodare un filmato vfr in quanto non esistono ancora strumenti validi per farlo con l'MP4. Ci sono dei programmi che lo fanno ma che dobbiamo evitare. Per i vfr, bisogna sempre optare per gli MKV.

Detto questo, veniamo al punto della questione. Se trascurato, il vfr diventa un problema quando dobbiamo hardsubbare in quanto abbiamo una desincronizzazione dei nostri sottotitoli. Perciò, se partite da un file mkv e vedete che quando andate ad hardsubbarlo, i sottotitoli sono desincronizzati, allora è possibile che quell'MKV sia vfr. Come prima cosa, quindi, dobbiamo verificare se è vfr o no. Per farlo, ci viene incontro un ottimo programma: mkv2vfr.exe.

Se avete installato il CCCP per riprodurre i vostri filmati (se non l'avete fatto, provvedete subito!!!), potrete trovarlo all'interno della cartella Filters\Haali della cartella di installazione del CCCP. Da me, per dire, il percorso completo è: C:\Programmi\Combined Community Codec Pack\Filters\Haali

Cosa fa questo programma?

In poche parole, dandogli in pasto il file mkv, crea un file AVI e un file TXT ed è proprio quest'ultimo che ci interessa. Il file txt conterrà i timecode del video ed è in base ad essi che possiamo agevolmente capire se l'mkv è vfr o no.

PASSIAMO AL LATO PRATICO

Copiate l'mkv in questione nella cartella Haali, poi aprite il DOS (Command line di windows o come cazzo si chiama) e posizionatevi tramite il comando cd nella directory Haali.

Adesso digitate:

[font:e028d30273="monospace"]mkv2vfr nome_mkv.mkv pippo.avi paperino.txt[/font:e028d30273]

(dove al posto di nome_mkv.mkv ci mettete il nome del vostro mkv)

e premete INVIO.

N.B. I nomi dell'avi e del txt li ho scelti a caso, potete chiamarli come vi pare.

Aspettate un po' e quando il programma avrà terminato, aprite il txt generato.

Se l'mkv è cfr, cioè a framerate costante, vi apparirà una cosa simile:

[font:e028d30273="Courier"]# timecode format v1
Assume 23.976
0,34877,23.976[/font:e028d30273]

La prima riga indica la tipologia del formato dei timecode. Ci sono due formati: v1 e v2. Il v1 è comprensibile a voi poveri umani mentre il v2 per niente.
Mkv2vfr.exe parte dal presupposto che il video sia a 23,976 fps come leggete dalla seconda riga.
Il fatto che ci sia solo una terza riga ci dice che il filmato è cfr. Infatti, se controlliamo i frame, notiamo che dall'inizio (cioè dal frame 0) alla fine (cioè il frame numero 34877) il framerate è sempre 23,976. Questo è infatti il txt generato da un mkv cfr.

Questo invece è un txt generato da un mkv vfr:

[font:e028d30273="Courier"]# timecode format v1
Assume 23.976
0,535,23.9757
536,538,18.0723
539,1750,23.9758
1751,1753,17.9641
1754,2453,23.9759
2454,2523,29.9786
2524,2699,23.9749
2700,2789,29.9700
2790,3117,23.9766
3118,3172,29.9728
3173,4480,23.9758
4481,4550,29.9658[/font:e028d30273]

N.B. Per comodità ho tagliato i timecode perché non volevo occupare troppo spazio.

Al di là dei valori che sono certo non coincidono perfettamente, di sicuro potete rendervi conto facilmente di come l'mkv in questione sia vfr. Dopo la 2° riga vengono riportati tutte le sezioni del filmato che girano ad una velocità differente. Se non l'avete ancora capito, dalla 3° riga in poi, i campi sono 3: frame iniziale, frame finale e velocità in fps.

Questo è ciò che dovete fare per capire se avete a che fare con un mkv vfr o no. Come ho già detto, è possibile trovare anche mp4 vfr. Per poter analizzare un mp4, rimuxatelo prima all'interno di un mkv tramite mkvmergegui e poi fate come ho appena spiegato.

Ma perché su Aegisub era tutto sincronizzato mentre una volta encodato non lo è più?

Semplice, quando caricate un filmato vfr su Aegisub col metodo standard (cioè come si fa per un qualunque filmato cfr), questi lo carica in modalità vfrac, cioè assume che sia cfr anche se in realtà non lo è. Quando salvate il vostro file .ass, questo sarà predisposto per il vfrac e non per il vfr, motivo per cui quando andate ad hardsubbare i sottotitoli, questi andranno in desincronizzazione.

Come procedo allora?

Se avete appurato che l'mkv è vfr, per prima cosa dovete estrarre il file con i timecode. Potreste usare quello generato con mkv2vfr.exe oppure, come vi consiglio perché migliore, estrarlo tramite ffvideosource(). Per farlo, dovrete creare nella cartella contenente l'mkv in questione, un semplice script di avisynth con questa forma:

[font:e028d30273="monospace"]ffvideosource("nome_mkv.mkv", timecodes="nome_txt.txt")[/font:e028d30273]

(dove al posto di nome_mkv.mkv ci mettete il nome del vostro file mkv e al posto di nome_txt.txt il nome del txt che conterrà i timecode)

N.B. Generalmente, per non confondersi, il txt lo si chiama banalmente timecodes.txt ma nessuno vi vieta di chiamarlo anche suka.txt

Aprite il vostro script con avspmod (abituatevi comunque a crearlo già con avspmod) e premete F5. Dopo pochi istanti vi apparirà il video, ma se andate a controllare la cartella, noterete che è sbucato fuori dal nulla il txt con il nome che gli avete dato. Quel txt contiene i timecode nel formato v2, una cosa così:

[font:e028d30273="Courier"]# timecode format v2
0.000000
42.000000
83.000000
125.000000
167.000000
209.000000
250.000000
292.000000
334.000000
375.000000
[/font:e028d30273]
Come vedete, non si capisce niente. Questo è il motivo per cui all'inizio, quando vi ho spiegato come ricavare i timecode per sapere se un mkv è vfr o no, non vi ho consigliato di usare questo metodo. Cosa potreste mai capire da qui? Un cazzo, già.

--FINE PRIMA PARTE--
_________________


Last edited by Nicky on 2012-04-09 14:16; edited 2 times in total
Back to top
View user's profile Send private message
Nicky
SSA Staff


Joined: 11 Jun 2009
Posts: 512
Location: Rovigo (ma più vicino a Ferrara)

PostPosted: 2012-02-16 15:37    Post subject: Reply with quote

--INIZIO SECONDA PARTE--

Adesso preparate un secondo semplice script di avisynth identico a quello precedente ma senza l'opzione dei timecode, in altre parole una cosa del tipo:

[font:be90eb324f="monospace"]ffvideosource("nome_mkv.mkv")[/font:be90eb324f]

Questo script carica l'mkv senza ovviamente creare un txt con i timecode.

IMPORTANTE: se avete fatto DVDrip o Bdrip e avete ottenuto il file txt con i timecode tramite i pacchetti Decomb o TIVTC, dovrete usare quello come riferimento.

Per timmare bene i sottotitoli, dovete aprire il file .ass con Aegisub, caricare l'mkv tramite lo script appena creato (per farlo, selezionate Video->Apri video e selezionate lo script avs), attendete qualche secondo, poi caricate il txt con i timecode v2 (ripeto, quello creato con ffvideosource) o quello generato con Decomb o TIVTC tramite Video->Apri file timecode. Caricate l'audio da Audio->Apri file audio (l'audio dovrete caricarlo separamente in quanto ffvideosource non carica l'audio, perciò, nel caso, estraetelo dall'mkv prima). Quando avete finito di timmare, selezionate File->Esporta sottotitoli, selezionate Trasforma framerate, selezionate variabile, cliccate su Esporta, dategli un nome e salvate. Quello che otterete sarà l'ass che andrà hardsubbato.

IMPORTANTE!!!
Questo procedimento vi permette di partire da un mkv vfr e di hardsubbarlo mantenendo il vfr. Non potete ottenere un AVI o MP4 hardsubbato mantenendo il vfr in quanto l'AVI, come già detto all'inizio, non supporta il vfr, mentre per gli MP4 non esistono ancora strumenti validi in grado di inserirci i timecode agevolmente come per i MKV.

Se proprio volete ottenere un AVI o un MP4 hardsubbato partendo da un MKV vfr, allora sappiate che dovete trasformare il framerate da variabile a costante, con la conseguente scattosità in certe scene.

Chiaramente, optando per questa opzione, le cose cambiano.

Prima di timmare i sottotitoli, dovrete crearvi una workraw, cioè una versione del vostro mkv compresso, anche a qualità merda, con il framerate costante, in modo che possa essere usato per timmare i sottotitoli. Non potete infatti caricare l'mkv su Aegisub, dovete per forza caricare la workraw con il framerate costante, se no addio sincronizzazione.

Per ottenere la workraw, preparate un semplice script di questo tipo:
[font:be90eb324f="monospace"]
Directshowsource("file.mkv", convertfps=yes, fps=23.976)[/font:be90eb324f]

e datelo in pasto a Virtualdub, comprimete con XviD con la qualità che volete voi, e otterrete un AVI con il framerate costante (23.976 in questo caso), lo stesso framerate che avrà l'AVI o MP4 hardsubbato definitivo.

Quando dovete timmare, caricate pure l'ass su Aegisub, caricate la workraw come fareste per un video normale, timmate e salvate normalmente.

Alla fine, createvi uno script così:

[font:be90eb324f="monospace"]loadplugin("C:\Programmi\AviSynth 2.5\plugins\vsfilter.dll")
Directshowsource("nome_file.mkv", convertfps=yes, fps=23.976)
textsub("nome_file.ass")[/font:be90eb324f]

(dove al posto di nome_file.mkv ci mettete il vostro mkv, e al posto di nome_file.ass il file con i sottotitoli)

Datelo in pasto a Virtualdub se volete ottenere un AVI o all'x264 se volete ottenere un MP4.

COMUNQUE vi consiglio caldamente di rimanere in mkv.
_________________
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSA Fansub Forum Index -> Guide e programmi All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group