Newsgroup: it.comp.software.divx
Titolo: mp3 editor per linux: avidemux2?

Qualcuno sa consigliarmi un buon mp3 editor per Linux?  Conosco
mpgedit, ma vorrei qualcosa con interfaccia grafica come avidemux2.
Ho una tentazione: combinare l'mp3 con una traccia video di
un'immagine statica, facendo un'avi, poi editare con avidemux2, e
infire ri-estrarre l'mp3.
E' mica possibile con transcode, mplayer, e avimerge combinare un .mp3
arbitrario con una traccia video della stessa durata, fabbricata a
partire da un'immagine statica di uno schermo vuoto?
Ciao,
-- 
Alberto

 partire da un'immagine statica di uno schermo vuoto?
si'.
ti dico la prima soluzione che mi viene in mente, anche se sicuramente
si puo' fare molto meglio :-)
innanzitutto bisogna sapere quanto dura il mp3 in secondi; un modo
potrebbe essere questo:
$ mplayer -identify 01-byzantine-chant-alleluia.mp3 -frames 0
  2>/dev/null | grep ID_LENGTH 
ID_LENGTH=166.00
ecco, mplayer dice che dura 166 secondi (piu' o meno); facciamo 167
per andare sul sicuro :-)
adesso, dando questo comando:
$ mencoder /dev/zero -rawvideo pal:fps=25 -demuxer rawvideo -audiofile
01-byzantine-chant-alleluia.mp3 -audio-demuxer 17 -oac copy -ovc lavc
-lavcopts vcodec=mpeg4 -o prova.avi -frames 4175 -ffourcc DIVX
-vf scale=100:100
si ottiene un AVI/DivX (codec mpeg-4 di libavcodec) con schermo
100x100 vuoto (verde), e avente come audio l' mp3 desiderato; la
durata del filmato e' esattamente di 167 secondi (opzione
"-frames 4175"; 4175 e' 167*25).
naturalmente si puo' fare molto meglio (gia', selezionando un
algoritmo di scaling piu' veloce, con "-sws", si ha un leggero
aumento di velocita'...)

> fabbricata a partire da un'immagine statica di uno schermo vuoto?
Frank> si'.  ti dico la prima soluzione che mi viene in mente, anche
Frank> se sicuramente si puo' fare molto meglio :-)
[...]
Veramente grazie, la soluzione proposta mi sembra un ottimo punto di
partenza per fare una script!  Non avevo ancora immaginato che mplayer
puo' anche ottenere la durata degli mp3.
Ciao,
-- 
Alberto

 puo' anche ottenere la durata degli mp3.
attenzione! ho scoperto che con gli mp3 VBR il calcolo della
durata da parte di mplayer e' errato (appena posso, mandero'
una patch!).
esempio:
$ mplayer -frames 0 -identify 01-single-edit.mp3
2>/dev/null | grep ID_LENGTH
ID_LENGTH=369.00
su questo mp3, mplayer riporta una lunghezza di 369 secondi.
$ mp3info -x 01-single-edit.mp3 | grep -i length
Length:      3:53
mp3info invece, sullo stesso mp3, riporta 233 secondi.
ha ragione mp3info.
quindi, mplayer calcola la durata correttamente solo sui CBR,
mentre sui VBR non e' affidabile...
ti conviene usare un altro programma (tipo mp3info).

     -frames $frames >/dev/null 2>&1
perfetto, hai tolto la sotto-opzione "pal" e impostato direttamente
la risoluzione 16x16, e aggiunto "vqscale=4"... la generazione dello
stream dovrebbe quindi essere adesso molto veloce...
inoltre, se non sbaglio, dovrebbe generare esattamente un keyframe
ogni 250 (il valore di default della sotto-opzione "keyint" di
"lavcopts"); puoi controllare con "avidemux2" cliccando ripetutamente
sul bottone "next keyframe" (in questo caso banale i motion vectors
sono tutti nulli, quindi il codec genera i keyframes solo ogni keyint
frames);
se avidemux2 ci lavora meglio, puoi costringerlo a generare solo
keyframes, aggiungendo la sotto-opzione "keyint=1" (o "keyint=0"),
ma credo che la generazione sara' un po' piu' lenta e il file verra'
piu' grande... ma se avidemux2 lavora bene anche con pochi keyframes,
allora non conviene; fai tu...
ciao

> DIVX \ -frames $frames >/dev/null 2>&1
Frank> perfetto, hai tolto la sotto-opzione "pal" e impostato
Frank> direttamente la risoluzione 16x16, e aggiunto "vqscale=4"... la
Frank> generazione dello stream dovrebbe quindi essere adesso molto
Frank> veloce...  inoltre, se non sbaglio, dovrebbe generare
Frank> esattamente un keyframe ogni 250 (il valore di default della
Frank> sotto-opzione "keyint" di "lavcopts"); puoi controllare con
Frank> "avidemux2" cliccando ripetutamente sul bottone "next keyframe"
Ora non posso, ma ti faro' sapere in un successivo messaggio il
risultato.
Frank> (in questo caso banale i motion vectors sono tutti nulli,
Frank> quindi il codec genera i keyframes solo ogni keyint frames); se
Frank> avidemux2 ci lavora meglio, puoi costringerlo a generare solo
Frank> keyframes, aggiungendo la sotto-opzione "keyint=1" (o
Frank> "keyint=0"), ma credo che la generazione sara' un po' piu'
Frank> lenta e il file verra' piu' grande... ma se avidemux2 lavora
Frank> bene anche con pochi keyframes, allora non conviene; fai tu...
Riguardo l'mp3 editor, ho provato ad usare xmpgedit, cioe' mpgedit con
interfaccia grafica gtk, e non e' disprezzabile.  Nessuna rifinitura,
ma lo sporco lavoro di taglia e cuci lo fa, e fa anche ascoltare i
pezzi tagliati.  L'interfaccia e' un po' ostica.
Ciao e grazie per i commenti,
-- 
Alberto

> DIVX \ -frames $frames >/dev/null 2>&1
Frank> perfetto, hai tolto la sotto-opzione "pal" e impostato
Frank> direttamente la risoluzione 16x16, e aggiunto "vqscale=4"... la
Frank> generazione dello stream dovrebbe quindi essere adesso molto
Frank> veloce...  inoltre, se non sbaglio, dovrebbe generare
Frank> esattamente un keyframe ogni 250 (il valore di default della
Frank> sotto-opzione "keyint" di "lavcopts"); puoi controllare con
Frank> "avidemux2" cliccando ripetutamente sul bottone "next keyframe"
Confermo, un keyframe ogni 250.
Frank> (in questo caso banale i motion vectors sono tutti nulli,
Frank> quindi il codec genera i keyframes solo ogni keyint frames); se
Frank> avidemux2 ci lavora meglio, puoi costringerlo a generare solo
Frank> keyframes, aggiungendo la sotto-opzione "keyint=1" (o
Frank> "keyint=0"), ma credo che la generazione sara' un po' piu'
Frank> lenta e il file verra' piu' grande... ma se avidemux2 lavora
Frank> bene anche con pochi keyframes, allora non conviene; fai tu...
Si' avidemux2 lavora bene anche con pochi keyframes, non vedo la
necessita' di cambiare le opzioni.  Ciao,
-- 
Alberto

 pezzi tagliati.  L'interfaccia e' un po' ostica.
allora ti conviene usare quello :-)
cmq avidemux2 non mi convince... mi riferisco al fatto di tagliare
i divx in punti qualsiasi (non keyframes); sono abbastanza scettico
su questa cosa :-)
ora sono un po' incasinato, appena riesco vorrei fare delle prove
per capire cosa fa.
(secondo me e' molto difficile anche tagliare in un punto qualsiasi
un mpeg-2, perche' anche gli mpeg-2 sono costituiti da frame I, P,
B...)
ciao

 per capire cosa fa.
ho fatto qualcosa, che riporto in un post dal nuovo subject
"tagliare un divx in qualsiasi posizione (avidemux2)"