11.23
Sebbene NoKo non approvi, ho perso ancora un po’ di tempo con la transcodifica video per PSP.
In particolare, ho notato che vobcopy non gestisce bene certi DVD (in particolare quelli di Buffy… forse preferisce Angel), rippando più del dovuto. Inoltre, non prevede (ancora) la possibilità di rippare un unico capitolo, piuttosto che un titolo intero. Ma il mondo del software libero è bello perché è (fin troppo) vario, e ho subito trovato un’alternativa: mplayer, con il suo switch -dumpstream. Basta infatti fare qualcosa tipo:
sukko@unholycathedral tmp $ mplayer dvd://1 -dumpstream MPlayer 1.0pre7try2-3.4.5 (C) 2000-2005 MPlayer Team CPU: Advanced Micro Devices (Family: 8, Stepping: 0) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Compilato per CPU x86 con estensioni: MMX MMX2 3DNow 3DNowEx SSE SSE2 Opening joystick device /dev/input/js0 Can't open joystick device /dev/input/js0 : No such file or directory Can't init input joystick In riproduzione dvd://1 Leggo la struttura del disco, per favore aspetta... Ci sono 6 titoli su questo DVD. Ci sono 24 capitoli in questo titolo del DVD. Ci sono 1 angolature in questo titolo del DVD. DVD aperto con successo! core dumpedIn uscita... (Fine del file)
Otteniamo così stream.dump, l’equivalente del .vob che ottenevamo con vobcopy. Se il nome non vi piace, basta aggiungere lo switch -dumpfile xxx.vob. Se invece volete rippare solo un capitolo vi servirà -chapter x-y, dove x e y sono il capitolo iniziale e quello finale da rippare (per ripparne solo uno, usate lo stesso valore per x e y, non solo x).
Ultima cosa: la PSP prevede la possibilità di creare una piccola immagine di anteprima per i video. Basta un file JPEG di dimensione 160×120, che abbia lo stesso nome del video, ma estensione .THM. Possiamo facilmente ottenere anche questo con ffmpeg:
mplayer dvd://1 -chapter 6-6 -dumpstream -dumpfile /dev/stdout | ffmpeg -y -i - -f mjpeg -ss 5 -vframes 1 -s 160x120 -an MAQ00001.THM
Questo esempio ci mostra anche come, con mplayer (ma penso sia possibile anche con vobcopy), sia possibile evitare di creare file temporanei, utilizzando le pipe di Linux (di UNIX in generale, actually) per mettere direttamente in comunicazione mplayer e ffmpeg. Figo, eh?
Vediamo qualche nota:
- -i -: Serve a dire a ffmpeg di leggere l’input dallo standard input.
- -ss 5: Inizia a codificare dopo 5 secondi dall’inizio del file. Se volete prendere un’immagine da più avanti/indietro nel video, cambiate questo parametro.
- -an: Evita di codificare l’audio.
Bene, adesso penso di avere fatto una guida discretamente completa, fatemi sapere se vi serve altro!