Impostazioni consigliate per convertire Opus in AAC


5

Sto scaricando un po 'di musica da Youtube e sembra che nella maggior parte dei casi (video popolari) l'audio della migliore qualità sia un file opus.

So che (1) Opus è il codec più recente e più efficiente e (2) la conversione da un codec con perdita a un altro non è consigliata.

Tuttavia, poiché desidero utilizzare lo stesso file, ovvero utilizzando lo stesso contenitore, su Windows / iOs / auto, voglio convertire in AAC o MP3.

Ho letto qui che è possibile mitigare la perdita di generazione in una certa misura utilizzando un bitrate più elevato per il codec di destinazione.

Quindi quali impostazioni (ad es. Ffmpeg) consiglieresti di convertire un file opus in AAC per mantenere la stessa qualità audio (so che questo è soggettivo ...)?

Secondo i youtube-dl -Fdati è di 160kbs, ma quando scaricato, MediaInfo fornisce un bitrate complessivo di 127Kbps e una frequenza di campionamento di 48Khz.

192kbs sarebbe una buona scelta per il file AAC? (Suppongo che AAC sia in ogni caso una scelta migliore rispetto a MP3?) So che da CD o lossless, VBR è più raccomandato, ma per la transcodifica da Opus, CBR sarebbe migliore? E dovrei mantenere la frequenza di campionamento di 48 khz dal file opus, o sottocampionare ai soliti 44,1 khz di CAA?

Infine, youtube-dl può anche scaricare un file AAC di 128 kbs. Dato che l'opus è più efficiente / migliore, la qualità sarà più alta allo stesso bitrate. Ma la transcodifica dell'opus in AAC (ad esempio a 192kbs / 212kbs) manterrebbe quella differenza di qualità, o la transcodifica (anche a un bitrate più elevato) indurrebbe artefatti in modo che la qualità audio del file AAC a 192kbs sarebbe effettivamente peggiore dell'AAC 128kbs file ?

MODIFICARE

Permettetemi di spiegare perché fatico "concettualmente" a capire come determinare le impostazioni ottimizzate per la transcodifica.

Nella maggior parte dei casi, si inizia con un file lossless (ad esempio un wav da 50 Mb) e si scelgono le impostazioni dell'encoder per qualità (VBR) o bitrate desiderato (CBR / ABR). L'encoder esegue quindi il suo hocococ (elimina le informazioni non udibili, la compressione, ecc.), Che quindi fornisce un file con perdita minore, in base alle impostazioni scelte. Per amor di argomenti, diciamo forse 3Mb per un MP3 da 128kbs, 5-6Mb per un VBR di alta qualità (ovvero impostazioni massime per lame o qaac) e 7-8Mb per un CBR da 320kbs).

Ma in questo caso, il file di origine è un file opus da 5 Mb 128kbs. Il primo passo nella transcodifica è prima di decodificare il file (in un flusso PCM?), Quindi ricodificarlo nel nuovo formato.

Quindi, ho capito bene che la massima informazione nel file non è superiore a 5 Mb, quindi per codificare (e se non è un requisito per ridurre le dimensioni del file) dovrei usare solo la VBR di massima qualità possibile, o possibilmente un CBR elevato ( 256 o 320) per acquisire praticamente tutte le informazioni ancora presenti nel file opus. Il file risultante non sarebbe in ogni caso più grande dei 5 Mb, poiché presumo che nessuna nuova informazione possa essere inventata / generata nel processo (farò qualche esperimento durante il fine settimana per testare questo).

La prima risposta data sembra suggerire questo.


Heh, bello che tu abbia trovato questa mia vecchia risposta. L'ho aggiornato con alcune nuove informazioni. Quando l'ho scritto nel 2013, Opus era relativamente nuovo, ma ora è molto più comunemente usato.
slhck,

@slhck La tua risposta è stata davvero utile! Ma l'opus probabilmente è "maturato" meno del previsto nel 2013. Non per quanto riguarda il supporto del browser, ma per quanto riguarda l'utilizzo in file musicali autonomi (nessun formato contenitore comunemente accettato / su piattaforme diverse - beh, almeno secondo Wikipedia. ..).
Peter K.

Sì, è più utilizzato nelle implementazioni YouTube e VoIP.
Slhck,

1
youtube-dl ha un'opzione per convertire l'audio scaricato in un mp3 (o altri formati): youtube-dl -i --extract-audio - audio in formato mp3 - qualità audio 0 YT_URL. Vedi: gist.github.com/umidjons/8a15ba3813039626553929458e3ad1fc
raidfive

Risposte:


4

Più in generale, consiglierei di dare un'occhiata alla pagina Wiki FFmpeg sulla codifica AAC. Qui troverai consigli su come ottenere la migliore qualità, che prevede:

  • usando l' libfdk_aacencoder invece di quello incorporato (l'encoder può fare una differenza enorme in termini di qualità!)
  • usando VBR - non è necessario limitare la velocità o i bit di scarto
  • disattivando il filtro passa-alto, poiché per impostazione predefinita alcune alte frequenze vengono perse durante la conversione

Pertanto, il seguente funzionerebbe:

ffmpeg -i input.opus -c:a libfdk_aac -vbr 5 -cutoff 18000 output.m4a

Questo dovrebbe essere assolutamente trasparente per le orecchie di chiunque. È anche possibile utilizzare -vbr 4e verificare se è possibile rilevare la differenza. Immagino che non lo farai.


Più specificamente, chiedi:

Infine, youtube-dl può anche scaricare un file AAC di 128 kbs. (...) Ma transcodificare l'opus in CAA (...) manterrebbe quella differenza di qualità, o la transcodifica (...) indurrebbe artefatti in modo che la qualità audio (...) sarebbe effettivamente peggiore?

Grande domanda a cui non so rispondere senza condurre un test di ascolto formale.

Tuttavia, se si assume che AAC stereo a 128 kbps sia almeno di buona qualità (ma non eccellente), è possibile rinunciare a qualsiasi conversione e utilizzarlo direttamente se suona bene. Penso che ascolterei i campioni originali Opus e AAC scaricati direttamente e proverei a fare un test alla cieca: riuscirai a rilevare in modo affidabile la differenza? Se no, usa semplicemente AAC e risparmia la conversione.

PS: ho ascoltato alcune clip musicali di YouTube con entrambe le varianti Opus e AAC e personalmente mi è piaciuto di più Opus - sembrava avere una spazialità un po 'più ad alta frequenza. Ma non considerare che una conclusione scientificamente valida!


Infine, c'è un thread che discute di un problema simile e qui, un utente pensa che ci sia una modellatura psico-acustica più aggressiva nella codifica VBR, che può migliorare artefatti già presenti quando si codifica nuovamente un file con perdita. Conclude che ABR con un bitrate elevato potrebbe essere più adatto a tali compiti.


Se qualcuno vuole sapere loro limite di frequenza per il filtro passa-basso personalizzato -cutoffvalore (alla frequenza di campionamento 44100 Hz arbitrario): ffplay -f lavfi -i sine=f=18000. Diminuisci finché non si sente "urla di pipistrello" o fino a sanguinare le orecchie. In un ufficio rumoroso con le cuffie aperte la mia è ~ 16100.
Llogan,

@LordNeckbeard C'è un rumore schioccante quando si avvia il comando (almeno sul mio Mac), che immagino sia dovuto all'improvviso insorgenza. Può essere evitato con sine=f=18000,afade=d=0.1.
slhck,

@slhck Grazie per il tuo contributo. Quindi, usando i preset (es. -Vbr 5), l'encoder "troverà" un bitrate medio ottimale per preservare la qualità? Uso i preset quando eseguo il ripping dal sorgente (CD), ma ho pensato che quando il sorgente è in perdita (opus 128kbs), l'impostazione manuale dei parametri sarebbe migliore. E la frequenza di campionamento? Impostare 48Khz manualmente come nel file opus o mantenere l'impostazione predefinita (il che implica il ricampionamento a 44,1Khz presumo)?
Peter K.

@PeterK Sì, VBR garantirà velocità e qualità ottimali. La frequenza di campionamento dovrebbe rimanere a 48 kHz a meno che non ne specifichi una diversa.
Slhck,

Ho guardato @slhck libfdk_aac, ma non credo di avere le capacità / il tempo per creare una build personalizzata di ffmpeg con libfdk_aac incluso. Presumo di poter usare qaacin alternativa (riga di comando o con fb2k)? Ma poi devo ancora scoprire le impostazioni consigliate. Inoltre qaac, ci sono molte informazioni per la codifica dal sorgente (CD o lossless), ma non molte informazioni per le impostazioni consigliate basate su vari file di input con perdita.
Peter K.

1

Solo i miei 2 centesimi mentre mi ponevo la stessa domanda:

  1. la migliore qualità disponibile è Opus al momento del download. Forzare un formato diverso causerà una perdita irreversibile (come osservato ad esempio in Spek)
  2. Tuttavia, il mio vecchio MP3 supporta solo AAC, non Opus
  3. E poi, semplicemente usando ffmpeg con -map_metadata per convertire Opus in AAC preservando i metadati recuperati da Youtube-dl fallirà su Windows 10, perché i metadati sono scritti nella parte "stream" del file opus, e non nel "formato "parte, di youtube-dl.
  4. Pertanto, sei bloccato con l'aggiunta manuale dei metadati se vuoi convertire la tua libreria Opus compatta ad alta risoluzione in una libreria AAC che può adattarsi al tuo vecchio MP3, su Windows 10.

A meno che ... non usi il seguente file batch

@Echo off
SetLocal EnableDelayedExpansion
Set _InputPath=Opus\*.opus
Set _OutputPath=M4A_from_Opus
For %%A in (%_InputPath%) Do (
    FOR /F "tokens=* USEBACKQ" %%F IN (`ffprobe -v error -show_format -show_streams "%%A" ^| FINDSTR artist`) DO (
        SET ArtistLine=%%F
    )
    FOR /F "tokens=* USEBACKQ" %%F IN (`ffprobe -v error -show_format -show_streams "%%A" ^| FINDSTR title`) DO (
        SET TitleLine=%%F
    )
    FOR /F "tokens=* USEBACKQ" %%F IN (`ffprobe -v error -show_format -show_streams "%%A" ^| FINDSTR album`) DO (
        SET AlbumLine=%%F
    )
    for /F "tokens=2 delims==" %%b in ("!ArtistLine!") do (
        Set Artist=%%b
    )
    for /F "tokens=2 delims==" %%b in ("!TitleLine!") do (
        Set Title=%%b
    )
    for /F "tokens=2 delims==" %%b in ("!AlbumLine!") do (
        Set Album=%%b
    )
    Echo Converting %%A...
    ffmpeg -i "%%A" -c:a aac -b:a 160k -metadata artist="!Artist!" -metadata title="!Title!" -metadata album="!Album!" "%_OutputPath%/%%~nA".m4a
)
SET "_OutputPath="
SET "_InputPath="
SET ArtistLine=
SET AlbumLine=
SET TitleLine=
SET Artist=
SET Album=
SET Title=

0

Non tanto una risposta quanto un po 'di opinione di "esperti", per quello che vale [Sono un tecnico del suono, ma non un ragazzo di programmazione / algoritmo]

Per iOS / auto devi solo ricondizionare iTunes a 128k AAC - l'opzione è in iTunes stessa, produrrà nuove versioni solo per i tuoi dispositivi - non sentirai mai la differenza, certamente in macchina, e dai cellulari solo in silenzio ambiente con cuffie molto costose.

Finestra schiacciata per risparmiare spazio ...

inserisci qui la descrizione dell'immagine

Se vuoi archiviare al "massimo" usa Apple lossless [ALAC].
Non restituirà nulla di già andato, ma non perderà più.

tra l'altro, iOS stesso ora può riprodurre file Opus [da iOS 11] - ma non so se sia tramite iTunes o se solo come formato in streaming.


AAC non può essere senza perdite, intendi ALAC?
slhck,

Intendo "Apple Lossless Encoder", quindi sì, probabilmente intendo ALAC. [Ti ho detto che non ero un tecnico ;-) Risolto.
Tetsujin,

Eh! L'uso di ALAC, tuttavia, non ti darebbe molta compatibilità oltre a macOS (e forse iOS? Non so nemmeno ...)
slhck

Ho pensato che windows / ios / car sarebbe essenzialmente un ambiente iTunes. Immagino che anche FLAC funzionerebbe, ma dato che iTunes non piace, sarebbe lo stesso problema al contrario. tbh, di solito lavoro e archivio in WAV e passo a tutto ciò di cui ho bisogno come richiesto - ma parto da zero, non dal materiale di provenienza di qualcun altro ;-))
Tetsujin,

@Tetsujin Grazie! Cerco di mantenere libera la mia libreria musicale dall'avere varie versioni di un file per diversi lettori (e per l'auto, devo selezionare manualmente i file musicali e copiarli direttamente dalla mia libreria). Se dovessi seguire la strada senza perdite, preferirei scegliere FLAC piuttosto che ALAC. Ma la preferenza (per dimensione dei file e giocabilità universale) è usare AAC (o MP3).
Peter K.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.