La potenza di compressione Opus

Opus Compression

Quando si desidera ascoltare un sacco di podcast, lezioni e libri audio per esempio, e volete portare con voi come gran parte di essa come si può, quindi il codec audio Opus è qualcosa che potrebbe interessarti. Io uso raramente questo termine ma qui può essere applicato: I risultati mi hanno stregato. È sorprendente quanto audio potete imballare su un dispositivo mobile con i limiti di capacità severa.

Ho appena convertito questo:

none 162 Files mp3, 44100 Hz, mono, s16p, 129 kb/s Total Length: 6d 14h 47min 49 Total Size: 9.05 GB

Da 9.05 GB a 555 MB e sono contento con i risultati.

Si prega di considerare che questa è una conversione da mp3 come sua fonte. Sì, è vero, sono andato da 128k mp3 a 6k opus e una settimana di audio è ridotto a metà un gigabyte, ed è stato convertito da una fonte sfavorevole. Anche se questa è la mia impostazione personale hardcore, nella mia ricerca ho scoperto che quasi non può andare male con 16k non importa quanto male la fonte.

Cosa è Opus?

Nelle loro stesse parole: > Opus is a totally open, royalty-free, highly versatile audio codec. Opus is unmatched for interactive speech and music transmission over the Internet, but is also intended for storage and streaming applications. It is standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which incorporated technology from Skype’s SILK codec and Xiph.Org’s CELT codec.

Opus è un codec audio totalmente aperto, a titolo gratuito, altamente versatile. Opus è ineguagliata per la trasmissione di voce interattiva e musica su Internet, ma è anche destinato a deposito e applicazioni di streaming. È standardizzato da Internet Engineering Task Force (IETF) come RFC 6716 che incorporato tecnologia di codec di SILK di Skype e il codec CELT di Xiph.Org.

https://www.opus-codec.orghttps://en.wikipedia.org/wiki/Opus_%28audio_format%29

Confronto grafico tra MP3, AAC e Opus

Lunghezzanon compressoCodecBitratecompressoFattore di
24 h14.88 GBMP3128k1382.411
24 h14.88 GBAAC HE64k691.2 MB22
24 h14.88 GBOpus16k172.8 MB86
24 h14.88 GBOpus6k64.8 MB233
7 d104 GBMP3128k9.7 GB11
7 d104 GBAAC HE64k4.8 GB22
7 d104 GBOpus16k1.2 GB86
7 d104 GBOpus6k0.5 GB233
30 d446 GBMP3128k41.5 GB11
30 d446 GBAAC HE64k20.7 GB22
30 d446 GBOpus16k5.2 GB86
30 d446 GBOpus6k1.9 GB233
365 d5.4 TBMP3128k504.6 GB11
365 d5.4 TBAAC HE64k252.3 GB22
365 d5.4 TBOpus16k63.1 GB86
365 d5.4 TBOpus6k23.6 GB233

Calcolatrice bitrate

Bitrate kbit/s
Lunghezza s
Dimensione del file MB

Si prega di notare che Opus utilizza VBR (può essere impostato per CBR, che cosa consiglia di non dopo aver visto i risultati). Pertanto la dimensione del file finale chiudere, ma varia.

Il comando di conversione

Si può quasi fare niente di sbagliato con 16k. Nella mia esperienza, anche pesantemente compressa fonti che suona male portare a una qualità quasi buona come origine.

bash ffmpeg -i <input.file> -acodec libopus -b:a 16k <output.opus>

Quando i file di origine sono di qualità superiore è ancora ottenere risultati impressionanti con 6k, che è l'impostazione minima assoluta offerto da Opus, ma si può sicuramente sentire l'impatto di che questa compressione massiccia porta con sé.

Io personalmente uso la compressione di bitrate 6k anche se la fonte è di minore qualità, perché io preferisco avere più in uno spazio più piccolo che avere meno con qualità superiore. Questa è la decisione che si deve fare per se stessi.

Questa è l'impostazione hardcore che io uso:

bash ffmpeg -i <input.file> -acodec libopus -b:a 6k -application voip output.opus

Opzioni di conversione

Per impostazione predefinita, le opzioni per libopus sono solide. Ai fini della riduzione delle dimensioni estreme abbassiamo il bitrate. Quindi ottimizziamo per riconoscimento vocale con l'opzione applicazione nel nostro caso particolare.

application (N.A.) Set intended application type. Valid options are listed below:

  • voip -> Favor improved speech intelligibility.
  • audio -> Favor faithfulness to the input (the default).
  • lowdelay -> Restrict to only the lowest delay modes.

Gestire più file in simultanea.

bash for f in *; do ffmpeg -n -i "$f" -acodec libopus -b:a 16k -application voip "encoded_"${f}".opus"; done

Questo comando consente di scorrere tutti i file nella cartella di lavoro e li converte nel formato opus. I file di rendering vengono memorizzati nella stessa cartella avendo lo stesso nome come i file originali con un prefisso encoded_. Il codec di Opus opera solo singolo thread.

Velocizzare le cose con multithreading

Opus non supporta multithreading e le codifiche sono assegnati a un singolo core di CPU ma è possibile parallelizzare il processo di codifica con i seguenti comandi bash.

bash bash -c 'ffmpeg_pids=(); for f in *; do ffmpeg -n -i "$f" -acodec libopus -b:a 16k -application voip encoded_"${f}".opus & ffmpeg_pids+=("$!"); done; wait "${ffmpeg_pids[@]}"'

bash # -P8 indicates Number of threads (of 4 core i7 in this case) find . -name "*.mp3" -print0 | xargs -0 -P8 -n1 -I {} ffmpeg -i {} -acodec libopus {}.opus

Il primo comando convertirà tutti i file nella cartella di lavoro contemporaneamente. E il secondo comando converte tanti quanti threads come sono assegnati, ma non di più. Il secondo comando dovrebbe essere meglio quando sono presenti molti file nella cartella di lavoro.

O utilizzare gnu parallel.

Opus Media Player per iOS

Almeno VLC può farlo.

Finale note

Lo so, molte persone non saranno d'accordo con me sull'impostazione 6k. In questo caso si prega di utilizzare semplicemente 16k.

Configurazione e strumenti utilizzati: