04.01.07
Dividere un AVI (divx / xvid) in 2 o più parti con Mencoder
Con Linux ed in particolare con il tool mencoder (parte del progetto mplayer) è semplicissimo ( in realtà si può fare anche su windows, basta scaricare e installarsi mplayer/mencoder per windows). Quindi per prima cosa cercate ed installate “mencoder” (apt-get install mencoder sarà sufficiente)
AGGIORNAMENTO (3 marzo 200
- vicenda opzione
-sbho lasciato passare molto tempo sperando in una soluzione del problema con l’opzione
-sb(seek byte). Alla fine penso che non verrà scritta a breve una soluzione… In sostanza l’opzione “seek byte” non ha alcuna intelligenza: pare un insulto ma è semplicemente una constatazione, fa quello che gli dite e cioè parte dal byte indicato! Questo a prescindere da dove si trovi quel byte: non cerca un keyframe (fotogrammi in cui l’immagine è memorizzata totalmente, tra un keyframe e l’altro sono memorizzati solo i cambiamenti) e non legge l’header (parte iniziale del video con le informazioni su di esso)! In sostanza è come se per mplayer/mencoder il file partisse dal punto indicato.L’opzione
-ssinvece ha questo tipo di intelligenza e quindi legge l’header e cerca i keyframe.Il manuale di mplayer da questo punto di vista è fuorviante perché ci invita a osservare l’opzione
-sbsia quando leggiamo come utilizzare-endposche quando leggiamo come usare-ssil che ci porta a pensare che-sbabbia lo stesso funzionamento. Ebbene-sbha poco a che fare con queste altre 2! È utile solo a scopo di debugging..Conclusione?
Se dovete spezzare un video secondo la sua dimensione non potete con mencoder… Usate avisplit (con i relativi problemi di sincronia audio/video) oppure spezzate il video usando le informazioni sul tempo!
Se ci fossero novità in questo senso non mancherò di aggiornare questo articolo
Se avete un DivX o un Xvid, o comunque un qualunque tipo di video, di grosse dimensioni potreste volerlo suddividere in file più piccoli, ad esempio per poterlo masterizzare in differenti CD-ROM.
i comandi sono da console, ma sono veramente semplici
Ecco come separare un grosso video (ad esempio un film) in due parti (secondo i tempi):
mencoder -endpos hh:mm:ss.ms -ovc copy -oac copy grandevideo.avi -o prima-parte.avi
mencoder -ss hh:mm:ss.ms -ovc copy -oac copy grandevideo.avi -o seconda-parte.avi
allora..
ho evidenziato questo: hh:mm:ss.ms che va sostituito con il tempo esatto a cui volete spezzare il video
se ad esempio volete spezzare il video ad 1 ora, 23 minuti, 42 secondi e 122 millesimi di secondo vi basterà scrivere 01:23:42.122
scrivete lo stesso identico orario in entrambi i comandi e il video verrà spezzato esattamente in quel punto
nota: se volete spezzare a 40 minuti esatti vi basta scrivere.. 40:00 notate che ho omesso ore e millisecondi (non è necessario scriverli, ma se volete non fa male metterci degli zeri)
Può essere utile però spezzare in base alla dimensione invece che in base al tempo, se vogliamo spezzare un video per farlo stare in 2 cd ad esempio vorremmo spezzare a 700mb
i comandi cambiano così:
mencoder -endpos 700mb -ovc copy -oac copy grandevideo.avi -o prima-parte.avi
questo non funzionamencoder -sb 700mb -ovc copy -oac copy grandevideo.avi -o seconda-parte.avi
IMPORTANTE
mi hanno segnalato nei commenti che questo la seconda parte non funziona, in particolare il comando
-sbda errore, pare richieda un “intero”.. dalla pagina del manuale di mencoder questo non traspariva.. ad ogni modo ho pensato volesse i byte esatti, invece con i byte esatti da un altro errore che ho motivo di credere sia un bug di mencoder, provvederò a segnalarlo agli sviluppatori e mi rifarò vivo al più presto, nel frattempo (anche se la guida è fatta per mencoder vi riporto qui un metodo alternativo di spezzare un file AVI)installate transcode pacchetto contenente il comando avisplit e date questo comando:
avisplit -s 700 -i grandevideo.aviche spezzerà il video in pezzi da massimo 700 MB ( mi dicono che alcune volte sfalsa l’audio.. me spiace!! )
Vedere anche gli aggiornamenti ad inizio articolo
invece che il tempo a cui spezzare abbiamo messo i megabyte a cui vogliamo venga spezzato il video, (notate che nella seconda istruzione abbiamo usato -sb invece che -ss, che significa appunto che vogliamo indicargli una dimensione invece che un tempo)
per farvi capire cosa abbiamo fatto vi spiego quale sia il significato degli altri parametri che ho scritto:
-ovc copydice a mencoder di copiare lo stream video senza ricodificarlo (ovvero lo lascia esattamente com’è)-oac copydice a mencoder di copiare lo stream audio senza ricodificarlo (ovvero lo lascia esattamente com’è)grandevideo.aviè il file che noi vogliamo spezzettare-o prima-parte.avisignifica che il file di uscita deve chiamarsi prima-parte.avi-endpos hh:mm:ss.msdice che mencoder che deve smettere di ricodificare al tempo indicato (il tempo è conteggiato dall’inizio del filmato o da dove indicato con l’opzione-ss)-endpos [byte]dice a mencoder di smettere di codificare ad un certo [byte] ( [byte] va sostituito a cose tipo -> 10b = 10 byte, 10kb = 10 kilobyte, 10mb = 10 megabyte ) - (tale dimensione è conteggiata dall’inizio del filmato o da dove indicato con l’opzione-ss)-ss hh:mm:ss.msdice a mencoder di iniziare a codificare dal tempo indicato-sb [byte]dice a mencoder di iniziare a codificare dal [byte] indicato, nel modo spiegato prima
Se invece volete spezzare un file in più parti (non solo 2) allora dovete combinare le istruzioni precedenti, vi porto un esempio che spezza un file di 2 ore e 45 minuti in 3 file, i primi due da 1 ora e l’ultimo da 45 minuti
mencoder -endpos 01:00:00 -ovc copy -oac copy grandevideo.avi -o prima-parte.avi
mencoder -ss 01:00:00 -endpos 01:00:00 -ovc copy -oac copy grandevideo.avi -o seconda-parte.avi
mencoder -ss 02:00:00 -ovc copy -oac copy grandevideo.avi -o terza-parte.avi
notate come per il file intermedio vengono indicate sia inizio che fine, mentre il primo indica solo dove finire (l’inizio è sotto inteso se non è indicato come inizio del file di partenza ) e l’ultimo solo da dove iniziare (la fine e sotto intesa come fine del file di partenza)
per spezzare in più parti secondo le dimensioni anziché i tempi il modo è analogo
qui immagino di spezzare un file da 2 Gb (2 gb * 1024 = 2048 mb ) in 3 file da circa 700 mb l’uno (2048 / 3 = 682.66 mb), in realtà farò in modo che i primi 2 file siano da 700 mb esatti e l’ultimo i restanti ( 2048 - 1400 = 648 mb)
mencoder -endpos 700mb -ovc copy -oac copy grandevideo.avi -o prima-parte.avi
mencoder -sb 700mb -endpos 700mb -ovc copy -oac copy grandevideo.avi -o seconda-parte.avi
mencoder -sb 1400mb -ovc copy -oac copy grandevideo.avi -o terza-parte.avi
Per unire in un solo video tanti video più piccoli il procedimento è ancora più semplice (suppongo che i video debbano essere però codificati nello stesso modo
mencoder -ovc copy -oac copy parte1.avi parte2.avi parte3.avi -o video-riunito.avi
altrimenti potete ricodificarli
mencoder -ovc x264 -oac mp3lame parte1.avi parte2.avi parte3.avi -o video-riunito-e-ricodificato.avi
dubbi? domande?
non dubito che ci siano tool grafici per fare la stessa cosa.. ma credo che non sia difficile copiare e incollare queste istruzioni adattando i valori in grassetto (e i nomi dei file) alle proprie esigenze
Guide correlate





anonimo detto,
6 Aprile, 2007 a 23:21
ma non bastava un avisplit?
mastro detto,
7 Aprile, 2007 a 2:38
@anonimo
però con mencoder puoi anche ricodificare nel frattempo e suppongo funzioni con più formati.. diciamo così.. sono abituato ad usare mencoder e mi ci trovo bene 
si.. in effetti
Anonimo detto,
16 Aprile, 2007 a 20:49
ciao
ho provato più volte ad usare queste combinazione su file mpeg-ps
nice -n 3 mencoder -ss 15:00 -endpos 5:00 -idx -ovc copy -oac copy -of mpeg “/origine.mpg” -o “/destinazione.mpg”
ma l’opzione “-ss 15:00″ non funziona (persiste a “copiarlo” dall’inizio
hai qualche suggerimento
grazie
mastro detto,
16 Aprile, 2007 a 22:42
@Anonimo
ciao..
non ti saprei dire.. è molto strano! il tuo comando mi sembra corretto.. unico dubbio su quel “-of mpeg”
perché lo hai messo? se dai “copy” che senso ha poi dirgli di codificare l’uscita in “mpeg”?
se fosse quel formato a dare problema prova prima a ricodificare tutto il video in un altro formato
bruno detto,
2 Maggio, 2007 a 15:40
Ciao ragazzi. E’ possibile con mencoder inserire in un file video (che nn ha audio) un file musicale ad esempio come sottofondo ad 1 video di paesaggi? Grazie anticipatamente.
Bruno
mastro detto,
3 Maggio, 2007 a 23:02
@bruno
ti rispondo in privato perché è off-topic rispetto all’argomento trattato dall’articolo
Francesco detto,
15 Giugno, 2007 a 18:07
E’ molto bella questa guida, però io ho un problema:
quando provo a fare il secondo tempo mi dice che:
The sb option must be an integer
Error parsing option on the command line: -sb
Exiting… (error parsing command line)
il comando che do è il seguente:
mencoder -sb 700mb -ovc copy -oac copy grandevideo.avi -o secondo-tempo.avi
come mai mi dice così?
mastro detto,
15 Giugno, 2007 a 20:18
@Francesco
credo che ci sia un errore nella guida..
ho verificato e da lo stesso errore anche a me..
provvederò a correggere al più presto..
devo solo capire dov’è il problema
Francesco detto,
15 Giugno, 2007 a 21:35
Grazie mille mastro!
mastro detto,
15 Giugno, 2007 a 22:39
@Francesco
grazie a te.. non mi ero accorto del problema perché non avevo mai usato quel particolare comando…
credo che non accetti 700mb.. probabilmente vuole il numero in byte.. però anche così a me da un errore.. è possibile che ci sia un bug in mencoder… mi rifaccio vivo appena ne so qualcosa di più..
Francesco detto,
16 Giugno, 2007 a 8:51
Si in effetti anche io ho provato a dare il numero in byte, stessa cosa che succede a te, un altro errore! Allora a presto!
p.s. uso mencoder proprio per questa sua funzionalità, mi andrebbe bene anche tagliare in base al tempo, ma ho provato a tagliare un film esattamente a metà del tempo, eppure una parte veniva da 640mb e l’altra da 760.. per questo sarebbe meglio poter usare la funzione che taglia in base alla dimensione.
Grazie, Francesco
mastro detto,
16 Giugno, 2007 a 17:05
@Francesco
possono essere 8 o 12 in base al contenuto…
il motivo è che la compressione si adatta al contenuto, quindi non è detto che 10 mega siano sempre 10 minuti (esempio)
un’alternativa sarebbe dividere con il tempo andando per “tentativi”, ma è obiettivamente una rottura!
il secondo errore, che hai avuto anche tu, è qualcosa del tipo: questo non è un file Avi (giusto?) il che mi fa pensare che ci sia un baco in mencoder…
e quello non lo posso risolvere da solo
Francesco detto,
16 Giugno, 2007 a 17:34
Si esatto! Quindi come facciamo? Se si riuscisse a risolvere ne sarei felice perchè è veramente valido mencoder.. Se no avresti qualche consiglio da darm su qualche altro programma?
Grazie!
mastro detto,
16 Giugno, 2007 a 17:47
@Francesco
ho appena modificato la guida segnalando questa cosa e consigliando un sostituto
Francesco detto,
16 Giugno, 2007 a 19:34
Grande Mastro
Francesco detto,
16 Giugno, 2007 a 19:55
Ho provato con avisplit:
credo che però la sintassi sia:
avisplit -i grandevideo.avi -s 700
però ho notato che sfalsa l’audio dal video..
mastro detto,
17 Giugno, 2007 a 0:22
ups…
mi son perso il -i per strada
hum.. che sfalsa l’audio non è bene :/
ecco perché usavo mencoder!
Francesco detto,
17 Giugno, 2007 a 0:36
allora nel frattempo non ci resta che aspettare
truegod detto,
21 Settembre, 2007 a 17:12
-endpos non indica che deve fermarsi al tempo indicato, bensì l’offset di tempo dopo cui fermarsi!!!
Per spiegarmi, nell’esempio indicato di divisione in 3 file:
Il primo dura 1 ora
Il secondo durerebbe 2 ore, ma poiché non c’è abbastanza video da codificare dura 1 ora e 45 minuti, cioè da 1 ora fino alla fine
il terzo è come ci si aspetta che sia
mastro detto,
21 Settembre, 2007 a 19:44
@truegod
caspita hai ragione!
che svista
correggo subito
Un plagio per Natale « L’importante è avere un titolo detto,
28 Dicembre, 2007 a 20:47
[...] questo simpaticone ha ben pensato di plagiare un mio articolo [...]
Palo@BC » Dividere un avi detto,
8 Gennaio, 2008 a 15:34
[...] il link … Posted by admin [...]
Mencoder - Wooo! « Riscoprirsi liberi detto,
7 Febbraio, 2008 a 11:40
[...] Come usare questa spezia? Semplice, seguiamo la guida di mastro [...]
mastro detto,
3 Marzo, 2008 a 20:15
@per chi ancora seguisse i commenti a questo articolo…
ho spiegato a cos’è dovuto il non funzionamento dell’opzione -sb
non c’è modo di spezzare tramite megabyte con mencoder al momento
Togliere la pubblicità, o quel che non ci interessa, di un video con mencoder « L’importante è avere un titolo detto,
10 Marzo, 2008 a 22:59
[...] dividere un video in più parti con mencoder [...]
luckygala detto,
19 Maggio, 2008 a 13:40
se ho un file avi creato con mencoder (acquisisco con scheda tv il video e con la soundblaster l’audio…)…e dopo un po di minuti audio e video non risultano sincronizzati….posso con mencoder ovviare a questo problema?…ricodificando il filmato?
grazie mille…
scusate l’intromissione
mastro detto,
19 Maggio, 2008 a 13:43
@luckygala
i problemi di sincronizzazione audio/video non sono semplici da risolvere
ma questo ti è successo dopo che hai diviso/riunito il video seguendo la mia guida?
prova a lanciare il video con: mplayer -fps 25 nomevideo.avi
prova con 25 e anche con 30 fps
se riesci a ottenere un video sincronizzato puoi ricodificarlo usando quell’opzione (-fps)
luckygala detto,
19 Maggio, 2008 a 14:58
grazie mille per la risposta…e il consiglio
i problemi di sincronia li ho nella cattura e sfogliando la tua guida pensavo di ricodificare il file o a qualche altro suggerimento…
oppure pensavo semplicemente di usare a/v delay di mplayer durante la riproduzione ma è effettivamente un po noioso….
grazie di nuovo…se hai idee…