[RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Sul primo comando non può non restituirti niente. Probabilmente è sbagliato il nome del tuo file, ho scritto male io nel mio esempio lì sopra e avrai fatto copia incolla.
Sostituiscilo con "01. Peter.mkv" o quello che hai, basta che usi il TAB in modo che ti auto-completa il nome del file che hai lì e non sbagli, se non ti ha dato errore prima il comando mkvextract, ti deve ritornare qualcosa di sensato anche mkvinfo. Per forza.
Riprova un po' vedrai che qualcosa salta fuori.

Il secondo comando come vedi dall'output ti restituisce un laconico "data".
Significa che quello lì non è un FLAC.

Sull'ultimo punto con mkvtoolnix bene così. Si può automatizzare almeno in parte la procedura.

Ma quello che non si capisce da come scrivi è se il file finale che hai ottenuto sia un audio o meno. Voglio dire, lo hai provato ad ascoltare con un player?
Dallo in pasto a VLC, oppure a MPV o mplayer o quello che usi di solito...

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Joe, premetto che non uso Linux, sono su un mac anche se la shell è una bash.
Ho riprovato anche con un altro file, l'output non mi restituisce nulla né mi segnala errore.
Riguardo alla pseudo-flac che ottengo, VLC, mpv e compagnia cantante lo considerano un file audio e Spek mi genera lo spettrogramma.
Mi viene semmai una curiosità: se mkvextract non può convertire un mkv in un flac, per esempio, allora come si dovrebbe procedere?
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Io cercherei di capire meglio cosa diamine abbiamo generato:

Codice: Seleziona tutto

file "01. Peter.mkv"
Ti dico subito che il nome di quel file non aiuta a semplificare le cose, perché contiene uno spazio e la shell come forse saprai ha qualche problemino con gli spazi che vanno tenuti in conto, o con le virgolette come hai già fatto sopra o con un backslah per ottenere l'escape dello spazio. Per cui o sei in grado di tenere in conto di questo aspetto (e se il comando mkvextract ti ha funzionato direi di sì), oppure a scanso di equivoci, rinomina quel file:

Codice: Seleziona tutto

mv "01. Peter.mkv" 01-peter.mkv
Puoi chiamarlo anche "pippo" ovviamente, al nostro fine on cambia nulla.

Poi posta l'output di:

Codice: Seleziona tutto

file 01-peter.mkv

Codice: Seleziona tutto

mkvinfo 01-peter.mkv
Essendo una traccia estratta e reimpacchettata in mkv, vedrai che mkvinfo restituirà un output più stringato che dovrebbe stare nel forum.

Il fatto che tu non sia su linux potrebbe portare a qualche differenza ma dagli output che hai postato nei primi messaggi le cose sembrano uguali alla mia bash.
Per quanto riguarda il processo e il seguito della conversione i passaggi sono i seguenti:
  • mkvtoolnix - carichi il file iniziale e generi i file singoli delle canzoni, te li reimpacchetta in mkv, pazienza
  • mkvextract - estrai da ogni mkv la traccia audio grezza codificata così com'è, queindi può essere WAV, RAW, VORBIS, non importa... il codec resta lo stesso di partenza, solamente viene tirata fuori dalla scatola matroska la traccia audio.
  • ffmpeg - con questo perndi l'input e lo codifichi con il codec flac generando un file in output che è davvero FLAC
Esempio io ho fatto una prova partendo da un video mkv, ho estratto la traccia audio con mkvextract su un file chiamato con molta fantasia "audio".

Codice: Seleziona tutto

$ file audio
audio: Ogg data, Vorbis audio, stereo, 48000 Hz, ~112000 bps, created by: Xiph.Org libVorbis I (1.3.5)
Quindi nel mio caso abbiamo codifica di partenza non grezza ma VORBIS.

Codice: Seleziona tutto

$ ffmpeg -i audio -c:a flac audio-ffmpeg-converted.flac
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.2.0 (GCC)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/doc/ffmpeg-4.4.1/html --mandir=/usr/man --disable-debug --enable-shared
--disable-static --enable-gpl --enable-version3 --enable-avresample --arch=x86_64 --disable-encoder=aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libcdio --enable-frei0r --enable-openal --enable-libopus --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libmp3lame --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libpulse --enable-libsmbclient --enable-libxml2 --enable-librsvg --enable-libdrm --enable-libaom --enable-libdav1d
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, ogg, from 'audio':
  Duration: 00:03:03.13, start: 0.000000, bitrate: 107 kb/s
  Stream #0:0: Audio: vorbis, 48000 Hz, stereo, fltp, 112 kb/s
    Metadata:
      encoder         : Lavc58.91.100
Stream mapping:
  Stream #0:0 -> #0:0 (vorbis (native) -> flac (native))
Press [q] to stop, [?] for help
[flac @ 0x2002ec0] encoding as 24 bits-per-sample
Output #0, flac, to 'audio-ffmpeg-converted.flac':
  Metadata:
    encoder         : Lavf58.76.100
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit), 128 kb/s
    Metadata:
      encoder         : Lavc58.134.100 flac
size=   33247kB time=00:03:03.13 bitrate=1487.2kbits/s speed= 137x
video:0kB audio:33239kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.024350%
Se tu avessi N canzoni generate con mkvtoolnix a partire dai capitoli ecco che puoi automatizzare la procedura con uno script del tipo:

Codice: Seleziona tutto

for canzone in *mkv; do
  mkvextract $canzone tracks 1:${canzone}.out
  ffmpeg -i ${canzone}.out -c:a flac ${canzone}.flac
done
Si può fare meglio, più elegante coi nomi messi meglio ecc ecc... però l'idea è molto semplice. L'unica attenzione va dedicata al numero della traccia che nel mio caso è "1", potrebbe anche non essere sempre così per cui occorre controllare prima gli mkv con mkvinfo, ed estrarre la traccia audio attraverso il corrispondente ID number. Si potrebbe automatizzare anche quel passaggio ma potrebbe essere un attimo più complesso (si potrebbe greppare l'out di mkvinfo e scegliere automaticamente l'ID della traccia giusta da estrarre).
Il senso è che se hai un bluray con 100 canzoni, generi 100 mkv con l'interfaccia grafica, poi lanci quella roba lì che sarà messa in uno script, e lasci macinare un tot di tempo; alla fine ottieni 100 file FLAC.
Peccato che si debba passare dall'interfaccia mkvtoolnix, se no si poteva inserire nello script tutta la procedura. Secondo me ci dev'essere il modo di estrarre i capitoli anche da riga di comando, mi sembra troppo strano che si possa fare solo dalla GUI.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Ho trovato...
Il comando per estrarre i capitoli è il seguente:

Codice: Seleziona tutto

mkvmerge -o pippo --split chapters:all Mkv\ Sample.mkv
Offtopic: Ho trovato questa discussione dove si cercava un file mkv con capitoli per test vari:
http://forum.inmatrix.com/index.php?showtopic=14305

Si trova questo link che non copio qui per intero perché non si sa mai che fosse roba coperta da diritti.
https://www.dropbox..../Mkv Sample.zip

Se volete scaricarlo per provare andate al link del forum sopra e lo trovate.


In pratica con mkvmerge --split, si ottengono tanti files quanti sono i capitoli e nominati con il prefisso definito dal flag "-o", nel mio caso il solito "pippo".

Codice: Seleziona tutto

$ ls pippo*
pippo-001  pippo-002  pippo-003  pippo-004  pippo-005  pippo-006  pippo-007

$ file pippo*
pippo-001: Matroska data
pippo-002: Matroska data
pippo-003: Matroska data
pippo-004: Matroska data
pippo-005: Matroska data
pippo-006: Matroska data
pippo-007: Matroska data
Quelli lì sopra però non sono solo audio... sono degli spezzoni video, quindi ognuno di essi contiene una traccia video, una o più audio (nel caso del mio testo solo una), e una o più tracce sottotitoli.

Codice: Seleziona tutto

$ for i in pippo*;do echo $i; mkvinfo $i|grep "Tipo traccia. audio" -B2|head -n1; done

pippo-001
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-002
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-003
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-004
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-005
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-006
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
pippo-007
|  + Numero traccia: 2 (ID traccia per mkvmerge & mkvextract: 1)
Da questo deduciamo che per estrarre la traccia audio di ogni capitolo con mkvextract bisogna dirgli di estrarre la traccia numero "1" di ogni file "pippo".
Quel "1" si potrebbe salvare in una variabile e riutilizzarlo in mkvextract come segue, io ora lo faccio a mano:

Codice: Seleziona tutto

$ for i in pippo*;do mkvextract $i tracks 1:${i}.out; done
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-001.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-002.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-003.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-004.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-005.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-006.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
Estrazione traccia 1 con ID codec 'A_AC3' nel file 'pippo-007.out'. Formato contenitore: Dolby Digital (AC-3)
Progresso: 100%
E si ottengono dei file audio codificati come in partenza ovvero AC3.

Codice: Seleziona tutto

$ file pippo*ut
pippo-001.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-002.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-003.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-004.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-005.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-006.out: ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-007.out: empty
L'ultimo è vuoto, in effetti anche il video dell'ultimo capitolo sono dei titoli di coda muti. Per cui ha un senso direi.
Ora se questi li voglio in flac dovrò convertirli in massa con ffmpeg.

Codice: Seleziona tutto

for i in pippo*out;do ffmpeg -i $i -c:a flac ${i}.flac; done
[...]
taglio i dettagli della ricodifica in flac di ffmpeg...
[...]


$ file pippo*out*flac
pippo-001.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 4564992 samples
pippo-002.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 4314624 samples
pippo-003.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 28849152 samples
pippo-004.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 26552832 samples
pippo-005.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 4165632 samples
pippo-006.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 791040 samples
Poi se andiamo a vedere le tracce grezze AC3 di partenza e le finali FLAC notiamo che non c'era una grande convenienza.

Codice: Seleziona tutto

$ ls -lh pippo-001.out*
-rw-r--r-- 1 user users 2,6M apr 27 22:02 pippo-001.out
-rw-r--r-- 1 user users  16M apr 27 22:11 pippo-001.out.flac
Perché alla fine non abbiamo aggiunto qualità all'audio, ma abbiamo dei file circa 6 volte più ingombranti.
Non so se si abbiano particolari esigenze di avere la roba in FLAC, ma ha un senso solo se si vuole comprimere in lossless avendo però in partenza files grezzi molto ricchi che effettivamente vengono ridotti di dimensioni in formato flac.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Grandissimo, joe, grazie!
Ho pochissimo tempo per cui ho fatto una prova grossolana; l'unica differenza sostanziale che ho notato è che alla fine, seguendo la procedura che mi hai indicato, ottengo dei generici file wav:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ file pippo-005.out
pippo-005.out: RIFF (little-endian) data, WAVE audio
Per il resto mkvmerge mi estrae i capitoli ed anche il numero degli stessi corrisponde.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Coincide con l'output di mvinfo iniziale, avevi "Codec ID: A_PCM/INT/LIT", che facendo due ricerche si vede che sta per "PCM Integer Little Endian" ovvero proprio WAVE.

Non so se hai già provato la conversione con ffmpeg, ma guarda il peso dei tuoi pippo-*.out.
Probabilmente in questo caso passare in FLAC conviene, perché i wav dovrebbero essere dei bei malloppi.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Grazie ancora, joe.
Mi sono fatto uno scrittarello che automatizza la procedura.
La cosa che non mi piace però è che alla fine ho ottenuto dei file di qualità (44.1kHz-16 bit) inferiore rispetto a quelli che avevo ottenuto rippando il CD (non il Blu-ray) originale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Se ti riferisci alla qualità dei WAV estratti dal Bluray, credo proprio che non ci siano santi.
L'estrazione della traccia dovrebbe essere uno a uno rispetto alla qualità che avevano nel Bluray originale.

Ora salta fuori anche un CD, di cui non sappiamo niente di più... se da un CD ottieni di meglio è perché in partenza lì hai tracce di qualità più alta.
Il procedimento descritto a livello di qualità lascia il tempo che trova, non toglie né aggiunge, solo copia.

Ti posso fare un esempio del test che ho fatto io. Avevo in partenza un MKV con capitoli ecc... le tracce che conteneva inizialmente erano 3: video, audio, sottotitoli. La qualità della traccia audio era 224 kbps a 48 kHz codificato AC3:

Codice: Seleziona tutto

$ ffmpeg -hide_banner -i Mkv\ Sample.mkv 2>&1 |grep 'Stream'
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 720x480 [SAR 1:1 DAR 3:2], 59.94 fps, 59.94 tbr, 1k tbn, 119.88 tbc (default)
  Stream #0:1(eng): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s (default)
  Stream #0:2(eng): Subtitle: dvd_subtitle, 720x480 (default)
Da lì non posso ottenere qualcosa a 512 kbps o di più... la base di partenza è 224 e se tutto va bene ottengo 224 al massimo.

Codice: Seleziona tutto

$ ffmpeg -hide_banner -i pippo-001 2>&1|grep Stream
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 720x480 [SAR 1:1 DAR 3:2], 59.94 fps, 59.94 tbr, 1k tbn, 119.88 tbc (default)
  Stream #0:1(eng): Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s (default)
  Stream #0:2(eng): Subtitle: dvd_subtitle, 720x480 (default)

$ ffmpeg -hide_banner -i pippo-001.out 2>&1|grep Stream
  Stream #0:0: Audio: ac3, 48000 Hz, stereo, fltp, 224 kb/s

$ ffmpeg -hide_banner -i pippo-001.out.flac 2>&1|grep Stream
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s32 (24 bit)

$ file pippo-001*
pippo-001:          Matroska data
pippo-001.out:      ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 2 front/0 rear, Dolby Surround not indicated, 224 kbit/s
pippo-001.out.flac: FLAC audio bitstream data, 24 bit, stereo, 48 kHz, 4564992 samples
Forse il flac finale cambia un attimo le carte in tavola, facendo il conto risulterebbe un bitrate più alto di 224 kb/s... il ché non è possibile, la spiegazione sicuramente c'è, per mia ignoranza così al volo non saprei.

Se vuoi, per capire meglio puoi postare l'output del comando sopra, riferito al tuo MKV iniziale, quello ottenuto con Makemkv.
In realtà forse si vede qualcosa già da quello che avevi postato in cima.

Codice: Seleziona tutto

|  + Audio track
|   + Sampling frequency: 96000
|   + Channels: 2
|   + Bit depth: 24
Per cui in teoria sì hai ragione dovresti effettivamente estrarre qualcosa a 96 kHz e 24 bit da lì ottieni anche il bitrate moltiplicando per 2 canali (stereo) 96*24*2 = 4.6 Mbps.

Per capire dove si perdono per strada, parti da ffmpeg, copia il mio esempio lì sopra e greppa gli streams. Fallo sul mkv di partenza, e poi sui vari "pippo" ottenuti nei vari passaggi.
- estrazione capitoli
- estrazione traccia audio da ogni capitolo
- conversione finale di ogni file audio in flac

Per ogni passaggio controlla con ffmpeg come ho fatto lì sopra anch'io.
E posta gli out se no parliamo d'aria fritta.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Joe, ti posto gli output, cominciando dall'mkv:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ ffmpeg -hide_banner -i nonsuch.mkv 2>&1 |grep 'Stream'
Guessed Channel Layout for Input Stream #0.1 : stereo
Guessed Channel Layout for Input Stream #0.2 : stereo
  Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn
  Stream #0:1(eng): Audio: pcm_s24le, 96000 Hz, stereo, s32 (24 bit), 4608 kb/s (default)
  Stream #0:2(eng): Audio: pcm_s24le, 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
  Stream #0:3(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit)
  Stream #0:4(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s
  Stream #0:5(eng): Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, 5.1(side), s32 (24 bit), 13824 kb/s
Questo è uno dei file estratti:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ ffmpeg -hide_banner -i tracks-002.out 2>&1|grep Stream
Guessed Channel Layout for Input Stream #0.0 : stereo
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
In effetti, la base di partenza è alta, si perde qualcosa nel processo di conversione a flac.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

[UPDATE]: tenuto conto delle tue indicazioni e dei risultati ottenuti, ho modificato uno dei tuoi comandi in questo modo:

Codice: Seleziona tutto

for i in tracks*out;do ffmpeg -i $i -c:a flac ${i}.flac -aq 0 -ac 8 -sample_fmt s32 -ar 192000; done
Adesso il risultato finale è quello desiderato:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ ffmpeg -hide_banner -i tracks-002.out 2>&1|grep Stream
Guessed Channel Layout for Input Stream #0.0 : stereo
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
Più o meno, dovremmo esserci.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: [RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Non capisco perché ometti l'analisi del FLAC finale, che è quello che interessa per completezza della discussione.
Se non altro dopo tutto lo sbattimento me lo sarei aspettato! :D

Lì sopra fai vedere "tracks-002.out", ma non è il FLAC finale, è ancora un "PCM signed 24-bit little-endian", quindi siamo nel RAW, WAV o quel che sia... non c'è compressione in FLAC.

Non sono un espertone di qualità audio, alta fedeltà ecc, ma nel tuo caso, da quel poco che ho capito devi mantenere invariato rispetto all'originale il set di valori:
  • sample rate (nel tuo caso 96 kHz di prtenza)
  • bit depth (nel tuo caso hai 24 bit in partenza)
Sinceramente non ti so dire riguardo al formato FLAC, ma credo di non sbagliare dicendo che per essere lossless dovresti ottenere un file finale che abbia ancora quei due valori. E senza perderne per strada, cioè ad esempio non servirebbe ai fini della qualità fare un resample finale ai valori giusti partendo da un file eventualmente degradato in un passaggio precedente. Per quello dicevo, controlla tutti gli stream audio dei files coinvolti, da quello iniziale, passando per i successivi fino al file flac finale.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Al momento l'unico file estratto che ho a portata di mano è questo:

Codice: Seleziona tutto

alutri@Gacklan:/volume1/music/XTC/10- Nonsuch [1992]$ ffmpeg -hide_banner -i 18.\ Didn\'t\ Hurt\ a\ Bit.flac 2>&1|grep Stream
    Stream #0:0: Audio: flac, 96000 Hz, stereo, s32 (24 bit)
Mi sembra confermare quanto ti avevo scritto prima.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: [RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

In un tuo messaggio precedente avevi:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ ffmpeg -hide_banner -i tracks-002.out 2>&1|grep Stream
Guessed Channel Layout for Input Stream #0.0 : stereo
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
Io vorrei che lanciassi e postassi l'output di:

Codice: Seleziona tutto

$ rm file-pippo.flac && ffmpeg -hide_banner -i tracks-002.out -c:a flac file.flac && echo --- && ffmpeg -hide_banner -i file-pippo.flac
Comando da copia-incollare al terminale così com'è, file-pippo.flac inlcuso.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da Burroughs »

Questo è l'output che ottengo, se non ho capito male:

Codice: Seleziona tutto

Macandy:Blu-ray alutri$ rm tracks-002.out.flac && ffmpeg -hide_banner -i tracks-002.out -c:a flac tracks-003.out.flac && echo --- && ffmpeg -hide_banner -i tracks-002.out.flac 
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'tracks-002.out':
  Duration: 00:05:02.30, bitrate: 4608 kb/s
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Hz, stereo, s32 (24 bit), 4608 kb/s
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: [RISOLTO] Aiuto su mkvextract (estrazione audio da file mkv)

Messaggio da joe »

Cos'è? Giochiamo a trova le differenze? :D
Hai capito male... il tuo comando non è uguale al mio, ed è sbagliato perché produce un file "tracks-003.out.flac", mentre poi analizzi "tracks-002.out.flac" che non c'entra un fico col comando e con la conversione precedente.
In più nell'output devi avere anche le tre lineette. Almeno quelle.

Vedo però che anche il mio sopra è ceffato, ho sbagliato a copiare anch'io.
Il mio comando sopra era proprio da copia-incollare. Anzi te lo rimetto qui sotto corretto:

Codice: Seleziona tutto

rm -rf file-pippo.flac && ffmpeg -hide_banner -i tracks-002.out -c:a flac file-pippo.flac && echo --- && ffmpeg -hide_banner -i file-pippo.flac
Anche i nomi dei files sono da copiare: selezioni, ctrl-c, vai nel solito terminale ctr-v. Per capirci. Adatta la manovra all'ambiente in cui ti trovi.
In pratica a partire dal tuo "track-002.out" ti produce un file finale chiamato precisamente "file-pippo.flac" e successivamente lo analizza. Nell'eventualità che tu avessi già un file chiamato così prima di lanciare il comando (ne dubito fortemente, ho scelto così il nome apposta) lo rimuove per evitare confusioni.

Ripeto, copia e incolla senza modificare nulla, dovrebbe funzionare e posta tutto l'output che appare a terminale.

Rispondi