La puissance de compression de l’Opus

Opus Compression

Quand vous aimez écouter beaucoup des Podcasts, des cours ou des livres audio par exemple, et vous souhaitez emporter avec vous autant que vous le pouvez, ensuite le codec audio opus est quelque chose que vous pourriez être intéressé. J’utilise rarement ce terme, mais ici il peut être appliqué: Ça m'a foutu un coup, mec. Il est étonnant de voir combien audio vous pouvez emballer sur un appareil mobile avec des limites de capacité extrem.

J’ai converti maintenant ceci :

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

De Go 9,05 à Mo 555 et je suis content avec les résultats.

Veuillez considérer qu’il s’agit d’une conversion de mp3 de la source. Oui, c’est vrai, il est passé de 128k mp3 à 6k opus et une valeur d'une semaine d’audio est réduit à la moitié d’une Go, et il a été converti à partir d’une source défavorable.
Bien qu’il s’agit de mon réglage hardcore personnel, dans mes recherches j’ai découvert que vous presque ne pouvez pas vous tromper avec 16k, n’importe dans quel état est la source.

Ce qui est Opus ?

Avec leurs propres mots :

Opus est un codec audio totalement ouvert, libre de redevances, très polyvalent. Opus est inégalée pour la transmission de la technologie vocale interactive et de la musique sur Internet, mais il est également prévu pour le stockage et les applications de streaming. Il est standardisé par l’Internet Engineering Task Force (IETF) comme RFC 6716 qui a incorporé la technologie de codec SILK de Skype et codec CELT de Xiph.Org.

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

Comparaison graphique entre MP3, AAC et Opus

LongueurNon compresséCodecDébit binaire.CompresséFacteur de
24 h14.88 GoMP3128k1382.411
24 h14.88 GoAAC HE64k691.2 Mo22
24 h14.88 GoOpus16k172.8 Mo86
24 h14.88 GoOpus6k64.8 Mo233
7 d104 GoMP3128k9.7 Go11
7 d104 GoAAC HE64k4.8 Go22
7 d104 GoOpus16k1.2 Go86
7 d104 GoOpus6k0.5 Go233
30 d446 GoMP3128k41.5 Go11
30 d446 GoAAC HE64k20.7 Go22
30 d446 GoOpus16k5.2 Go86
30 d446 GoOpus6k1.9 Go233
365 d5.4 ToMP3128k504.6 Go11
365 d5.4 ToAAC HE64k252.3 Go22
365 d5.4 ToOpus16k63.1 Go86
365 d5.4 ToOpus6k23.6 Go233

Calculateur de débit binaire

Débit binaire. kbit/s
Longueur s
Taille du fichier Mo

Veuillez noter qu'Opus utilise VBR (il peut être modifié à CBR, que je ne le recommande pas, après avoir vu les résultats).
Donc la taille du fichier final est proche mais il peut varier.

La commande de Conversion

Vous presque ne pouvez pas vous tromper avec 16k. Dans mon expérience même des sources fortement compressé, et avec mauvais sons, résultent aussi bonne que la source.

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

Lorsque les fichiers source sont d’une qualité supérieure vous obtenez des résultats impressionnants avec 6k, qui est absolutement le réglage minimum proposé d'Opus, mais vous pouvez certainement entendre l’impact cette compression massive apporte avec elle.

Personnellement, j’utilise la compression de débit de binaire 6k même si la source est de qualité médiocre, parce que je préfère d'avoir plus dans un petit espace que d’avoir moins de meilleure qualité. C’est la décision que vous devez faire vous-même.

C’est le paramètre hardcore que j’utilise :

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

Options de conversion

Par défaut, les options de libopus sont solides. Aux fins de la réduction de la taille extrêmement, nous baissons le débit de binaire.
Puis nous optimisons pour la reconnaissance vocale avec l’option application dans notre cas particulier.

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.

Traiter plusieurs fichiers simultanément

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

Cette commande effectue une itération de tous les fichiers dans le répertoire de travail et les convertit en format opus. Les fichiers rendu sont stockées dans le même répertoire, portant le même nom que les fichiers d’origine avec un préfixe encoded_. Le codec Opus fonctionne à une seule unité d'exécution.

Accélérer les choses avec un traitement multifilières

Opus ne supporte pas un traitement multifilières et des encodages sont assignés à un seul cœur de la processeur mais vous pouvez paralléliser les encodages avec les commandes suivantes de 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[@]}"'
# -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

La première commande convertit tous les fichiers dans le répertoire de travail en même temps. Et la deuxième commande convertit autant des unités d'exécution qui sont attribuées, mais pas plus que ces. La deuxième commande devrait être mieux quand il y a beaucoup de fichiers dans le répertoire de travail.

Ou utilisez gnu parallel.

Lecteurs multimédias Opus pour iOS

Au moins VLC le fait.

Notes finales

Je sais, beaucoup de gens seront en désaccord avec moi sur la réglage de 6k. Dans ce cas, veuillez tout simplement utiliser 16k.

Configuration du système et outils utilisés :