CrazITeam
Watching rather than fansubbing
Introduzione hardsub su Linux

PREMESSA: questa guida risale al 2015, potrebbe funzionare ancora come no, in caso lasciate un commento

L'hardsub su Linux si effettua tramite ffmpeg, un vero coltellino svizzero per chi si cimenta con encoding video su questa piattaforma.

La sintassi base di ffmpeg è la seguente

ffmpeg -i input.xxx output.xxx

ffmpeg è un comando parecchio intelligente; capisce già da solo che librerie utilizzare per effettuare le conversioni.
Se ad esempio avessimo:

ffmpeg -i input.mkv output.mkv

ffmpeg carica già in automatico Lavf55.26.100 (nella mia build, ma potrebbe cambiare in qualsiasi momento) per effettuare il muxing dell’mkv.

NB: se il file di input contiene già sottotitoli in softsub, essi saranno impressi a video in automatico senza ulteriori opzioni. Avrete quindi realizzato il vostro primo hardsub senza tani grattacapi.

Ora che conoscete la sintassi di base possiamo cominciare a fare qualcosa di un pochino più “serio”.

Specificare il codec video da usare

Il parametro da utilizzare per decidere che che encoder utilizzare per l’output è -c:v.
Scelto il codec, potete applicare tutte le opzioni relative ad esso. Se ad esempio scegliessimo libx264 avremmo a disposizione tutte le opzioni “classiche” come il crf, il numero di thread da utilizzare e così via.
Ad esempio:

ffmpeg -i input.xxx -c:v libx264 -preset slow -crf 20 -threads 0 output.mkv

NB: in questo esempio, se avete compilato x264 con il supporto a 10 bit, l’output sarà a 10 bit di consegueza, stesso discorso per o bit o 16 bit

Specificare il codec audio

Il comparto audio funziona in modo analogo a quello video. Il parametro da usare è -c:a.
Non essendo un esperto in audio solitamente preferisco lasciare tutto in aac (se possibile); di conseguenza utilizzo l’opzione copy. Quindi con queste opzioni il comando precedente diventerebbe:

ffmpeg -i input.xxx -c:v libx264 -preset slow -crf 20 -threads 0 -c:a copy output.mkv

Filtri: subtitles e ass

Imprimere sottotitoli a video è un’operazione che si effettua con l’ausilio dei filtri (come in in AviSinth).
Ci sono due filtri che è possibile utilizzare per imprimere sottotitoli a video:

  • subtitles
  • ass

Il primo si utilizza con tutti i formati più diffusi come .txt, .sub e .ass. Il secondo si utilizza specificatamente per gli ass/ssa (ed è consigliabile che usiate questo se avete ass/ssa tra le mani, fidatevi).
La sintassi per utilizzare i filtri è, in generale, la seguente: -vf “filtro1=valore1[,filtro2=valore2,filtroN=valoreN]”.
In casi più specifici la sintassi dei singoli filtri può cambiare parecchio.
In generale:

  • Ogni coppia filtro – valore all’interno di una stessa chain è separata da una virgola
  • Ogni chain è separata da un punto e virgola

Per ora a noi non interessa far uso delle chain, le tratteremo forse in dei futuri tutorial.
Supponendo di utilizzare il filtro ass per i nostri sottotitoli il comando precedente diventa:

ffmpeg -i input.xxx -vf "ass=subs.ass" -c:v libx264 -preset slow -crf 20 -threads 0 -c:a copy output.mkv

Bene, se non avete fatto errori (come ad esempio path e nomi dei file errati) avrete in output il vostro video hardsubbato!


Last modified on 0001-01-01