Newsgroup: it.comp.software.divx
Titolo: [Linux] Cambiare ordine tracce audio

Ho degli avi con tracce
1 Inglese
2 Italiano
Visto che il mio lettore da tavolo legge solo la prima traccia (eh sì, è di
quelli da 30 Euro) vorrei poterle invertire.
C'è un modo per farlo senza passare da demux e remux?
Ho cercato sul man di transcode, ma mi sono perso.

 C'è un modo per farlo senza passare da demux e remux?
che io sappia, no.
Se ti va bene perdere la traccia inglese, puoi rimuxare al volo con mencoder
selezionando la seconda traccia; il risultato pero' avra' la sola traccia
in italiano.
Non credo che avimerge abbia un'opzione per cambiare l'ordine delle tracce,
non penso che si possa fare usando le opzioni '-a' '-A'...
Anche perche' l'AVI in input potrebbe avere un numero qualsiasi di tracce
e ci vorrebbe una sintassi non ambigua per specificare quali si vogliono
muxare nell'output e in quale ordine...
Probabilmente e' facile modificare avimerge in modo che inverta l'ordine...
si potrebbe aggiungere un'opzione, da usare solo se le tracce sono due,
che abbia l'effetto di scambiarle...
Altrimenti, la soluzione piu' veloce e' questa:
1) estrai la prima traccia (inglese);
2) usi mencoder per creare un AVI con la sola seconda traccia (italiano);
3) aggiungi con avimerge la traccia estratta, che diventa la seconda
-- 
Home page di Frank: 
http://fsinapsi.altervista.org
Home page di Giubbe e FAQ: 
http://giubbe.altervista.org

 che io sappia, no.
sai che poco dopo aver postato (cioe', in questo momento) mi hai fatto
venire in mente che ci sarebbe una soluzione semplicissima? :-)
Basta fare questo:
si risalva l'AVI scambiando gli headers delle due tracce audio, e
scambiando gli indici dei relativi chunks...
Penso di poterlo implementare in pochi minuti nel mio programma
avinaptic, in pratica aggiungerei un'opzione simile a quella gia'
esistente "salva senza il chunk Google", cioe' aggiungerei
l'opzione "salva invertendo l'ordine delle due tracce audio"
(usabile solo se l'AVI ha due tracce audio). Potrebbe andare?
Certo, sarebbe meglio generalizzare a un numero qualsiasi di
tracce, in modo che l'utente possa spostare le posizioni di
qualsiasi traccia, ma mi fa fatica scrivere la GUI. Invece,
limitando al caso di due sole tracce, non devo scrivere nessuna
GUI e posso farlo in un tempo minimo...


 avinaptic, 
Attendo fiducioso :-)))
Ciao e grazie

 GUI e posso farlo in un tempo minimo...
Visto che l'esigenza č solo quella di avere una determinata traccia al primo
posto, potresti fare un sottomenu che permetta di scegliere la traccia da
scambiare con la prima. Questo, al mio occhio profano, sembra essere piů
facile da programmare che non fare la gui di scelta dell'ordine di n
tracce.
Poi, nelle versioni successive, potrai rifinire ;-)

 Attendo fiducioso :-)))
forse lo faro' stasera...
Comunque, secondo te e' meglio riscrivere un nuovo file oppure
modificare l'originale?
Se si tratta di permutare l'ordine delle tracce, in teoria si
puo' lavorare direttamente sull'originale, ma e' pericoloso
(potrebbe sempre scapparmi un bug) quindi direi di creare una
nuova copia senza toccare l'originale.
Attualmente, il mio programma modifica direttamente l'originale
solo per operazioni semplicissime (modifica del fourcc e
impostazioni dei ritardi/anticipi), perche' mi sembrava scomodo
dover generare un nuovo file per modifiche cosi' piccole e
facili...


 nuova copia senza toccare l'originale.
Oltre all'eventuale bug di programmazione va considerata la possibilità che
esistano avi non standard, o "corrotti ma funzionanti" che potrebbero
rovinarsi con un algoritmo che si aspetta avi perfetti. Probabilmente sai
tu se ciò è possibile o meno.
In definitiva credo che andrebbe testato un po' prima di passare alla
modifica diretta.

 modifica diretta.
IMHO, o si lascia la possibile scelta all'utilizzatore, o si evita
casino e allora è preferibile sempre fare una copia con le modifiche.
-- 
Saluti, Kap - 
www.lordkap.it
 - AVINaptic: 
http://fsinapsi.altervista.org
FAQ del newsgroup: 
http://giubbe.altervista.org
Just what the hell was the best thing BEFORE sliced bread?

 casino e allora è preferibile sempre fare una copia con le modifiche.
dunque, l'avrei fatto, anche se devo migliorarlo.
Direi di abbandonare l'idea della modifica "al volo" del file originale,
e stabilire che per questo caso viene sempre salvato un nuovo file.
Ho incontrato alcune difficolta': innanzitutto non avevo considerato
che andavano scambiati anche gli "identificativi di traccia" che
compaiono nell'indice (altrimenti non funzia piu' nulla); quindi le
cose da scambiare sono diverse:
- gli headers di traccia;
- gli identificativi nei chunks (i pacchetti di dati);
- gli identificativi nell'indice.
Credo di avere fatto tutto, pero', per quanto riguarda l'indice, ho
trattato solo il caso "old style index" (AVI 1.0), quindi, se l'AVI
ha indici OpenDML (sono molto rari) non si puo' fare...
Dall'unico test che ho appena fatto, le due tracce audio risultano
effettivamente scambiate, ma e' sorta un'altra questione:
il file originale si chiama z.avi e ha la prima traccia in italiano
e la seconda inglese.
Se batto "mplayer z.avi", di default mi riproduce la traccia italiana.
Se batto "mplayer -aid 1 z.avi", lo stesso.
Se batto "mplayer -aid 2 z.avi", riproduce quella inglese.
Salvando il file "z.new.avi" con la nuova funzione di avinaptic,
ottengo questo:
Se batto "mplayer -aid 1 z.new.avi", riproduce quella inglese.
Se batto "mplayer -aid 2 z.new.avi", riproduce quella italiana.
Fin qui si direbbe che e' quello che si voleva.
Eppure, se batto "mplayer z.new.avi" (senza argomenti), riproduce
quella italiana, cioe' quella con id=2
Quindi, non e' detto che lo scambio degli headers e degli
identificativi sia sufficiente a far si' che i lettori riproducano
la traccia con id=1
Negli headers (scambiati) deve esserci un flag che dice che quella
e' la traccia audio di default, oppure mplayer assume di default
quella che corrisponde al primo pacchetto audio incontrato (che
continua a essere la stessa anche dopo lo scambio)...
Adesso non ho tempo, la nuova versione del programma la mettero'
online domani, magari domani risolvero' anche la questione della
traccia di default


 essere la stessa anche dopo lo scambio)...
Credo che sia la prima. Però non chiedermi da dove mi viene questa
intuizione. Mi sembra di ricordare di averlo letto da qualche parte.
-- 
Saluti, Kap - 
www.lordkap.it
 - AVINaptic: 
http://fsinapsi.altervista.org
FAQ del newsgroup: 
http://giubbe.altervista.org
Why are there 5 syllables in the word monosyllabic?

 intuizione. Mi sembra di ricordare di averlo letto da qualche parte.
sentite questa! :-)
Ho provato con Xine e si comporta in modo diverso da mplayer: Xine
assume sempre come default la traccia audio con id=1, quindi sul
filmato nuovo (z.new.avi) riproduce l'inglese di default.
A questo punto ho masterizzato i due filmati su riscrivibile e dati
in pasto ai lettori stand-alone.
Ebbene, questi si comportano come Xine!
Il primo viene riprodotto in italiano di default (premendo il pulsante
sul telecomando switcha all'inglese), e per il secondo vale il
contrario, che e' quello che si voleva.
Comunque indaghero' meglio per scoprire se esista o meno un flag
che indica il default...


 che indica il default...
per Francesco:
sul mio sito, in fondo alla pagina da cui si scarica avinaptic,
ho messo una versione di prova (compilata per Linux).
Funziona cosi':
- apri l'AVI con piu' di una traccia audio;
- clicca sul menu Misc->Salva_riordinando_le_tracce_audio;
- scegli il nome del nuovo file.
Se le tracce audio sono esattamente due, l'AVI salvato dovrebbe
avere tali tracce scambiate.
Se sono piu' di due, si dovrebbe aprire una finestrina che
permette si scegliere quale (a partire dalla seconda) va
scambiata con la prima (e' quello che avevi suggerito ieri).
Se lo provi e ti imbatti in errori magari dimmelo, cosi' li
correggo :-)
Per quanto riguarda l'eventuale flag di cui parlavo, ho fatto
qualche prova che lascia pensare che non esista (oppure, se
esiste, non viene usato ne' rispettato dalla maggior parte
dei programmi...)


 correggo :-)
Provato con vari player per Linux
- VLC e Totem 
Tutto OK. La prima traccia è quella giusta e viene letta come default
- Mplayer
Prende di default la seconda traccia. Va specificata la prima a mano.
I seguenti player non permettono di selezionare la traccia, o almeno, non ho
capito come si fa:
- noatun, kaboodle, kaffeine
Riproducono, come desiderato, la prima traccia
- kmplayer
Riproduce solo la seconda traccia. Per questo player la trasformazione
sembra ininfluente.
Domani farò la prova sul lettore stand-alone e ti farò sapere con quello
come funziona

 come funziona
Lettore Digiquest DT 502A
Provato, funziona
Grazie mille

 Grazie mille
di nulla, servira' anche a me.
Nella versione di ieri avevo fatto un piccolo errore, ma la probabilita'
che si manifesti e' bassa (per sapere se e' andato tutto ok ti basta
guardare se la dimensione del file salvato e' identica a quella
dell'originale).
La prossima release sara' un po' piu' corretta (ho corretto quell'errore
e aggiunto alcuni controlli).
Devo ricordarmi di testare quanto tempo impiega a riscrivere un film
lungo; se troppo lento, cerchero' di ottimizzare...
