Come trasformare file da un formato all'atro usando i programmi liberi disponibili per Linux e, magari, usando semplicemente la riga di comando |
Argomenti |
Conversioni |
Tags/parole chiave: conversioni • audio • video • testo • linux • mp3 • wav • lame • audio • video • pdf • oggenc • oggdec • wma • flv
Esistono diversi tipi di file e, nell'ambito di file dello stesso tipo (audio, video, testo), formati diversi, ognuno dei quali adatto meglio di un altro a specifici scopi.
Ecco quindi che un file audio -ad esempio- può essere un Wave oppure un Mp3; un video può essere un Mjpeg (motion jpeg) oppure un contenitore avi. Può, quindi, tornare comodo avere i comandi giusti per eseguire una conversione tra i diversi formati.
Precisazione superflua ma estremamente utile: convertire tra formati non significa solo cambiare il suffisso al nome del file (.WAV, .MP3, .AVI, .MPG). Linux è un sistema intelligente e non si affida al vecchio mezzuccio del suffisso (o estensione) di file per identificarne il tipo!
Immaginiamo di avere un file che non conosciamo, del quale -magari- ci siamo persi l'estensione; rammento che l'estensione (il suffisso del file) -spesso nascosto su alcuni sistemi operativi commerciali- è una regola che associa al tipo di file un codice di tre (recentemente, anche di quattro) caratteri alfanumerici, separati dal nome vero del file da un puntino. E' una vecchia codifica che affonda le radici nel DOS di trenta anni fa! Un sistema vecchio ed obsoleto che i sistemi commerciali sedicenti moderni usano ancora oggi.
Come si vede nella foto, sul desktop ho salvato un file con suffisso XXX: ciononostante, posizionandomi sopra con il cursore, Linux identifica correttamente il tipo di file, fornendo informazioni ed anteprima:
Per chi ama la console, il comando equivalente all'anteprima è file:
$ file doc_sconosciuto.XXX
doc_sconosciuto .XXX: PDF document, version 1.3
Una delle conversioni più utili in ambito ufficio è la conversione da immagine a PDF.
E' importante ricordare che il PDF deve essere legato al formato di pagina in fase di stampa: pertanto, qualsiasi sia la dimensione dell'immagine, questa deve essere stampata correttamente su un foglio di carta che, normalmente, è A4 (210 x 297 mm). Per ottenere un buon risultato, convertiremo l'immagine prima in PS (PostScript) e, successivamente, in PDF attribuendo le corrette dimensioni di pagina (A4):
$ convert immagine.jpg immagine.ps
$ ps2pdf -sPAPERSIZE=a4 immagine.ps immagine.pdf
Notare il parametro di ps2pdf che attribuisce al file finale il corretto formato per la successiva stampa. Ricordo che convert e ps2pdf sono installati di default sulla Slackware.
Il formato Wave (.WAV) è un formato audio proprietario non compresso; al contrario, il formato Mp3 è un formato compresso con perdita di informazione: ne risultano file molto piccoli (se confrontati con il wave) e, siccome -spesso- la perdita è legata a frequenze non percepite dall'orecchio umano, ne risultano file di ottima qualità.
Per convertire questo tipo di file, usiamo il pacchetto principe per l'audio in Linux: Lame; Lame non è installato di default, ma può essere installato prelevando i pacchetti per la propria distribuzione dai repository Slackware più noti, come LinuxPackages.net e Slacky.eu.
Ecco il comando per convertire da wave a mp3:
$ lame -s44.1 -b256 Traccia_03.wav traccia_03.mp3
Dove -s indica il campionamento (default 44.100), -b il bitrate (default 128); se vogliamo un comando ancora più veloce, basta scrivere:
$ lame -h Traccia_03.wav traccia_03.mp3
Dove -h indica che il processo deve essere eseguito alla massima qualità.
Il processo inverso (da mp3 a Wave) implica una decodifica del file compresso
$ lame --decode traccia_03.mp3 traccia_3.wav
Riotteniamo così il file wave di partenza (con le opportune perdite di dati dovute alla precedente compressione, anche se probabilmente suonerà bene lo stesso). Ora, se volete riascoltare al volo il brano da console, senza perdere tempo con i player grafici, scrivete:
$ play traccia_3.wav
Facile, vero?
Vorbis è un algoritmo di compressione per i file audio libero da royalties e brevetti. Dovrebbe essere usato sempre al posto della codifica in MP3 che, al contrario, sfrutta un algoritmo di compressione proprietario. Vediamo, dunque, come convertire i file Wave in formato Ogg Vorbis.
La nostra Slackware ha già installato tutto ciò che serve per trattare questo tipo di files; in sintesi, sono necessari solo due programmi: oggenc per convertire in vorbis e oggdec per l'operazione opposta.
Per convertire un file da Wave a Ogg Vorbis usare il seguente comando:
$ oggenc input.wav -b 256 -o output.ogg
il parametro -b 256 fissa il bite rate a 256 e può essere omesso; in sua assenza oggenc codificherà il brano audio in VBR.
Per fare il contrario, cioè per trasformare un brano audio da Ogg Vorbis a WAV, usare il comando oggdec:
$ oggdec -o file-output.wav file-input.ogg
sarà creato il file di uscita file-ouput.wav
Il passaggio ad un formato proprietario non è consigliato; tuttavia, molti lettori portatili leggono MP3 e non Ogg Vorbis: in questo caso la conversione è d'obbligo. Per fare questo direttamente, è necessario usare lo standard output del decoder (oggdec) che sarà riversato attraverso unoperazione di piping sullo standard input dell'encoder (lame). E' più difficile spiegarlo che farlo. Usare il seguente comando:
$ oggdec -o - input.ogg ¦ lame -b 256 -s 44.1 - output.mp3
Dove, ovviamente, input ed output sono due nomi arbitrari di file ed il semplice trattino (-) indicato nelle due parti del comando indicato lo standard output per oggdec e lo standard input per lame. I paramentri di codifica di lame possono essere variati secondo le esigenze o sostituiti da un più rapido -h per una alta qualità di default.
Vediamo ora come passare dal formato audio WMA a MP3. Diciamo subito che il WMA è un formato proprietario inventato da Microsoft. Al contrario del formato MP3 ha una portabilità più limitata e per chi usa Linux non è certamente uno dei formati preferiti.
Per passare da questo formato ad MP3 sono necessari due software: Mplayer, un decoder universale che permette di convertire senza perdita di informazioni nel formato non compresso WAV che sarà a sua volta applicato a LAME, il nostro compressore libero che comprime il contenuto del file WAV per ottenere, finalmente, il nostro file compresso in formato MP3.
Spiegato in questo modo sembra un processo lungo. In realtà possiamo eseguire in un'unica riga l'intero comando di conversione, dimostrando, nello stesso istante la potenza della riga di comando di Linux. Ecco la riga di conversione di un file:
$ mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader audio.wma && lame -m s -b 160 audiodump.wav -o "`basename audio.wma .wma`.mp3"
Vediamo di spiegare la lunga riga di questo comando di conversione da wma a mp3; per prima cosa abbiamo lanciato Mplayer, che ha decompresso il formato WMA del file audio.wma per ottenere un file di transito transito.wav. Immediatamente dopo viene lanciato il coder Lame che, partendo dal audiodump.wav (nome assegnato automaticamente da mplayer), applica su di esso la compressione necessaria per trasformarlo in MP3. Notare i flag -m s (che considera la traccia stereo) e -b 160 che applica una compressione a 160 Kb/s.
No, Linux non è fatto per fare gli scribacchini e ripetere il comando cento volte! Abbiamo scelto Linux per la sua potenza, non per perdere tempo.
Per processare 100 o mille file contenuti in una cartella (abbiamo semplificato: avremmo anche potuto cercare tutti i file wma del disco e convertirli con un solo rigo!) scrivere il comando che segue nella shell di Linux:
$ for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader $i && lame -m s -b 160 audiodump.wav -o "`basename $i .wma`.mp3"; done
Sono degne di nota: il ciclo FOR che permette di eseguire il comando tante volte quanti sono i file wma trovati; la variabile $i che contiene il nome del file; il comando basename che permette di togliere wma al nome del file e metterci il nostro mp3. Al termine del lavoro avremmo ottenuto nella cartella tutti i file mp3: sono da rimuovere i file di origine wma e l'ultimo dei file audiodump.wav.
Abbiamo avuto modo di parlare di come sia possibile, con Linux e grazie ad uno script in Python, scaricati da Youtube dei file e successivamente convertirli in un formato video classico (AVI o MPEG, ad esempio) usando i programmi disponibili sul sistema del Pinguino.
Può succedere che si renda necessario salvare solo la parte audio del video (come nel caso di una conferenza), eliminando le immagini e risparmiando spazio sul disco. Come possiamo fare?
Diciamo subito che l'estrazione è quasi sempre possibile, a patto che il video non abbia una codifica proprietaria per la quale non esistano tool open source. Per l'estrazione useremo il classico ffmpeg, ricodificando l'audio in formato MP3:
$ ffmpeg -i video.flv -f mp3 -vn -acodec copy audio.mp3
Sono da notare i parametri -vn che blocca la registrazione della parte video, -f che forza il formato a mp3 ed infine il parametro -acodec che forza l'uso di un codec specifico che, in questo caso, è copy che è un codec particolare che indica a ffmpeg che il flusso deve essere estratto e copiato così com'è.
Questo documento del blog vuole essere un piccolo promemoria per la trasformazione dei file da un formato all'altro, da fare velocemente usando facili comandi da console che, all'occorrenza, possono automatizzarsi per convertire tutti i file di una directory e, perché no, tutti i file di un intero disco!
E' un documento in evoluzione: aggiungeremo comandi e metodi nel tempo, quando ce ne capiterà l'occasione.
Letture collegate sul nostro Circuito |
Altro su Blog di Japigia.com:Come salvare i file FLV : Come salvare i file FLV con Linux. |
Lascia un commento o leggi quelli scritti dagli altri .
Il menu del Post: |
I più letti! |
|
|||||
Japigia di P.B. Arcano, Casarano (Lecce) Realizzazione siti Internet, Portali, Grafica computerizzata. E' vietato il plagio, anche parziale, dei contenuti del sito. Per informazioni e suggerimenti: Contattateci! Copyright by Japigia.com 2000/2012 Partita IVA 03471380752 - REA CCIAA Le/224124 *** Questo Sito Web NON utilizza Cookie *** |