web-dev-qa-db-fra.com

Changer (réduire) la qualité d'un fichier ogg?

J'ai un fichier .ogg (contenant de la parole) avec une qualité de 192 kbps que je voudrais réduire à 32 kbps (pour économiser de l'espace)

Comment puis-je faire ceci?


Jusqu'à présent, j'ai essayé ceci:

ffmpeg -i filename.ogg -ab 32k -f ogg new-filename.ogg

Mais je reçois cette erreur:

[libvorbis @ 0x56157365ab60] encoder setup failed
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

Suis-je en train d'utiliser la mauvaise commande? Existe-t-il une meilleure approche pour économiser de l'espace? Veuillez noter que je n'ai accès qu'au fichier 192kbps (pas à l'original)

Reconnaissant de l'aide!

2
sunyata

Il y a deux excellents choix ici:

  1. Ajustez votre ligne de commande FFmpeg pour produire un fichier Ogg Vorbis plus petit
  2. Utilisez FFmpeg pour créer un petit fichier à l'aide de libopus

Les détails des deux sont ci-dessous:

1. Ajustez votre ligne de commande FFmpeg ...

Le problème clé est que FFmpeg ne modifiera pas - automatiquement la fréquence d'échantillonnage audio pour qu'elle corresponde de manière appropriée au débit sélectionné. Mais FFmpeg ne fait généralement pas beaucoup de tenue de main, je suppose!

Gardez à l'esprit qu'un CD audio aura normalement une fréquence d'échantillonnage de 44100 Hz tandis que la téléphonie simple aurait normalement une fréquence d'échantillonnage légèrement supérieure à 8000 Hz. Vous avez donc le choix de choisir le meilleur taux d'échantillonnage pour votre audio Ogg Vorbis 32k. Voici quelques lignes directrices:

  • 44100 Hz : Fréquence d'échantillonnage typique d'un CD audio. Rejeté par FFmpeg pour un fichier de 32 Ko.
  • 32000 Hz : Adéquat pour la parole et également adéquat pour d'autres fichiers audio où une taille de fichier plus petite est requise avec une petite perte de qualité attendue. Rejeté par FFmpeg pour un fichier de 32 Ko.
  • 22050 Hz : Adéquat pour la parole et utilisable pour d'autres fichiers audio dans l'attente d'une perte de qualité audio. Accepté par FFmpeg pour un fichier de 32 Ko.
  • 11025 Hz : Très mauvaise qualité sonore. Accepté par FFmpeg pour un fichier de 32 Ko.
  • 8000 Hz : Taux d'échantillonnage légèrement inférieur à un système de téléphonie moderne, déconseillé pour la plupart des tâches d'enregistrement. Accepté par FFmpeg pour un fichier de 32 Ko.

Dans cet esprit, mes propres tests suggèrent que vous feriez mieux d'utiliser une fréquence d'échantillonnage de 22050 Hz, notez que cela devrait être parfaitement adéquat pour la parole, et donc votre ligne de commande devrait être:

ffmpeg -i filename.ogg -c:a libvorbis -ab 32k -ar 22050 new-filename.ogg

Et cela a produit un résultat tout à fait raisonnable sur ma propre configuration ...

2. Utilisez FFmpeg pour créer un petit fichier en utilisant libopus ...

Si vous n'êtes peut-être pas tout à fait prêt à utiliser Ogg Vorbis, une excellente alternative consiste à utiliser Opus, qui, dans mes tests, a réduit un nombre raisonnable de kilo-octets de chaque fichier par rapport au codage Ogg Vorbis 32k. Essayez quelque chose comme le suivant qui a été adapté à vos fichiers vocaux:

ffmpeg -i filename.ogg \
-c:a libopus -b:a 16k -ar 16000 -ac 1 -application voip \
new-filename.ogg

Vous serez agréablement surpris par la taille du fichier de sortie et la qualité audio qui en résultent. J'ai inclus un lien vers une excellente ressource HydrogenAudio dans les 'Références' qui devrait guider vers une ligne de commande encore meilleure pour Opus ...

Références:

  • Sample Rates : Une belle page des développeurs Audacity qui montre les meilleurs paramètres pour les taux d'échantillonnage audio.
  • Qualité d'encodage de la parole : La page HydrogenAudio définitive pour guider les paramètres Opus pour la parole.

  • 15.8 libopus : Options FFmpeg à utiliser avec l'encodage libopus. Noter la -application voip paramètre que j'ai utilisé ci-dessus et qui n'a pas d'équivalent avec opusenc (contrairement aux autres paramètres).

4
andrew.46

Ce faible débit n'est pas pris en charge avec le taux d'échantillonnage par défaut du fichier. Vous devez spécifier un taux d'échantillonnage inférieur avant de pouvoir réduire le débit binaire. Ajoutez l'option -ar 8000 pour votre option -b: un 32k à accepter.

1
vanadium