Comment convertir un fichier son en Opus

22

Pour les tests, je veux convertir un fichier MP3 et WAV que je dois en Opus, quelles sont les étapes pour le faire?

Luis Alvarado
la source
1
@EvanCarroll D'où la partie qui dit "Pour les tests";)
Luis Alvarado
2
@EvanCarroll Cela dépend de ce que vous voulez réaliser et de la qualité du matériel d'entrée. Si vous recherchez une solution audiophile absolue, vous ne voudrez probablement jamais considérer Opus en premier lieu. Dire que c'est une idée horrible n'est qu'une déclaration horrible, quand il n'y a aucune explication.
LiveWireBT
1
@LiveWireBT dit qu'encoder un mp3 en opus n'est pas une idée horrible à moins que vous ne recherchiez une solution audiophile absolue n'est qu'une déclaration horrible, quand il n'y a aucune explication.
Evan Carroll
2
@EvanCarroll Opus dispose d'un support spécialisé pour la parole, contrairement à MP3. Cela signifie que vous pouvez réduire considérablement la taille de vos podcasts et livres audio sans perte notable de qualité. Je ne vois pas comment c'est une horrible idée.
Christian
3
@EvanCarroll "détection automatique de la parole ou de la musique pour décider du mode de codage à utiliser" sur opus-codec.org . Et bien sûr, vous subirez une perte de qualité. C'est pourquoi c'est un codec avec perte. Vous avez dit que cela n'était jamais justifiable et je vous ai donné un bon exemple où la taille est un problème énorme, une qualité d'importance secondaire et une source sans perte non disponible.
Christian

Réponses:

23

Par défaut, le convertisseur audio fourni avec les outils opus peut convertir l'audio au format brut, wave ou AIFF. La syntaxe minimale utilise les paramètres par défaut:

opusenc input.wav output.opus

Nous pouvons vouloir ajouter un meilleur débit binaire comme le 96 kbps par défaut avec l'option --bitrate N.nnn(pour toutes les options, consultez la page de manuel pour opusenc).

Pour convertir des mp3 "à la volée". c'est-à-dire sans créer de fichier temporaire, nous pouvons diriger la sortie d'avconv vers opusenc comme ceci:

avconv -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
Takkat
la source
Où obtenir "opusenc"?
shevy
1
@shevy: il est livré avec les outils opus .
Takkat
@shevy: $ sudo apt install opus-tools
Jose Barakat
1
Pour ce faire sur un tas de fichiers flac: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(J'ai choisi 140 comme bitrate car selon cela c'est plus que suffisant pour les fichiers stéréo.
Joschua
11

Ubuntu 14.04 et Debian 8 sont livrés avec la version 9 de libav-toolsdans leurs référentiels, et il a un support intégré pour Opus via le packagelibopus0 .

Exemple 1: réencoder un fichier audio en opus

Avec la version 9 de libav-toolset libopus0installée, vous pouvez simplement, par exemple, faire:

avconv -i file.mp3 -map 0:a -codec:a opus -b:a 100k -vbr on file.opus

Que font les options

  • -i file.mp3 définit le fichier d'entrée.
  • -map 0:asélectionnera tous les flux audio ( a) du fichier d'entrée 0. En savoir plus -mapsur https://libav.org/avconv.html#Advanced-options
  • -codec:a opussélectionne l'encodeur opus pour les flux audio ( a). En savoir plus -codecsur https://libav.org/avconv.html#Main-options .
  • -b:a 100kdéfinit le débit binaire de l'audio à 100 kilobits / s. En savoir plus -bsur https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onactive le débit binaire variable. Il s'agit d'une option spécifique à libopus. Voici toutes les options pour libopus:

    $ avconv -h full | grep opus -A 11
    avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
      built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
    libopus AVOptions:
    -application       <int>   E..A. Intended application type
       voip                    E..A. Favor improved speech intelligibility
       audio                   E..A. Favor faithfulness to the input
       lowdelay                E..A. Restrict to only the lowest delay modes
    -frame_duration    <float> E..A. Duration of a frame in milliseconds
    -packet_loss       <int>   E..A. Expected packet loss percentage
    -vbr               <int>   E..A. Variable bit rate mode
       off                     E..A. Use constant bit rate
       on                      E..A. Use variable bit rate
       constrained             E..A. Use constrained VBR
    
  • file.opus définit le fichier de sortie.

Exemple 2: Prenez l'audio d'un fichier vidéo et encodez-le en opus

Prenez le deuxième flux de la première entrée ( -map 0:1), qui est le flux audio. Encodez-le avec libopus à 100 kbit / s avec un débit binaire variable sur:

$ avconv -stats -i linuxactionshowep309-432p.mp4 -map 0:1 -c libopus -b 100k linuxactionshowep309-432p-audio-only.opus
avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
  built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'linuxactionshowep309-432p.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100
  Duration: 01:14:48.45, start: 0.042667, bitrate: 466 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 768x432 [PAR 1:1 DAR 16:9], 330 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
Output #0, ogg, to 'linuxactionshowep309-432p-audio-only.opus':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.20.3
    Stream #0.0(und): Audio: libopus, 48000 Hz, stereo, flt, 100 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> libopus)
Press ctrl-c to stop encoding
size=   54360kB time=4488.47 bitrate=  99.2kbits/s    
video:0kB audio:53875kB global headers:0kB muxing overhead 0.900602%

Avec le package mediainfoinstallé:

$ mediainfo linuxactionshowep309-432p-audio-only.opus
General
Complete name                            : linuxactionshowep309-432p-audio-only.opus
Format                                   : OGG
File size                                : 53.1 MiB
Duration                                 : 1h 14mn
Overall bit rate                         : 99.2 Kbps
Writing application                      : Lavf54.20.3
major_brand                              : isom
minor_version                            : 512
compatible_brands                        : isomiso2avc1mp41

Audio
ID                                       : 2104437746 (0x7D6F2BF2)
Format                                   : Opus
Duration                                 : 1h 14mn
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Writing library                          : Lavf54.20.3
Daniel Jonsson
la source
1
Fonctionne parfaitement sur Ubuntu 14.04! Pourriez-vous expliquer ce que -map 0:afait? (Et peut-être détailler toute la ligne?)
425nep
@ piña J'ai mis à jour la réponse avec une explication des arguments et un exemple supplémentaire.
Daniel Jonsson
5

Opus du 12.04

Le 12.04 (précis), cependant, il y a des problèmes de dépendance avec l'installation des codecs et des outils opus, donc j'ai trouvé de loin la meilleure solution est celle qui est devenue disponible très récemment: compilez l'encodeur et le décodeur audio opus comme indiqué ici , et construisez ffmpegavec le support opus en ajoutant --enable-opusaux options de configuration de ffmpeg(comme indiqué dans le guide de compilation ).

Je sais que ffmpegc'est déconseillé dans Ubuntu en faveur de Libav, mais la compilation est un bon moyen d'obtenir un encodeur / décodeur opus pleinement fonctionnel intégré en ffmpeglui-même. Vous pouvez ensuite l'utiliser pour convertir des fichiers (d'abord en wav) puis en.opus . La documentation installée avec libopus et ffmpeg révèlera toutes les options qui peuvent être utilisées pour convertir des fichiers.

Lors de la conversion de fichiers avec ffmpegaprès compilation, vous devez spécifier -acodec libopusou ffmpegne pas utiliser le codec opus:

ffmpeg -i pc.wav -ar 48000 -ac 2 -acodec libopus -ab 256k man.opus

Vous pouvez ensuite tester le fichier créé avec

ffplay man.opus

Conseils de compilation

Il n'est pas nécessaire de reproduire le guide ici dans son intégralité, mais il convient de noter une ou deux choses:

  • Vous devez d'abord installer les dépendances listées (j'omet yasmde la liste: voir mon deuxième point):

     sudo apt-get -y install autoconf build-essential checkinstall git libass-dev libfaac-dev libgpac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev librtmp-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
    
  • Il y a un problème qui doit être souligné: la construction git semble vouloir yasm-1.2, et qui n'est pas disponible, vous devez donc compiler la source depuis le site officiel , mais c'est simple. Supprimez simplement toutes les versions installées de yasm, puis décompressez l'archive téléchargée, cddans le dossier, exécutez ./configure && makepuis sudo checkinstall. Si d'autres versions nécessitent la version antérieure, vous pouvez simplement supprimer cette version et installer la version du référentiel.

  • Il est nécessaire d'enlever tout existant libav, ffmpeg, x264, libvpxou fdk-aacpaquets avant de commencer la compilation.

  • Il est essentiel que vous compilez et installer x264, fdk-aac, libvpxet opusavant de construire ffmpeg, comme les bibliothèques seront utilisés dans la construction.

  • N'oubliez pas d'ajouter --enable-opusaux options de configuration lorsque vous exécutez la ffmpegcompilation.

  • La version d'Opus compilée était 1.1alpha, vous devrez donc peut-être recompiler la bibliothèque d'opus et ffmpeg à l'avenir lors de la sortie d'une nouvelle version.

  • Vous pouvez utiliser ffplaypour lire tous les fichiers d'opus que vous créez.


la source
ffmpeg est une mauvaise solution pour tout ce pour quoi il existe un remplacement.
Evan Carroll
2
@EvanCarroll Que voulez-vous dire par là? Ce n'est que la décision de quelqu'un de le déprécier: ffmpeg est toujours aussi bon que libav, qui n'est qu'une fourchette.
1
Une excellente réponse, et merci pour le rappel sur l'exigence Yasm. x264 a augmenté la version minimale à 1.2.0 lors de leur dernière poussée. Guide mis à jour avec les instructions de Yasm.
llogan
@Mik Je pense qu'il voulait dire que l'encodeur autonome donnera de meilleurs résultats.
LiveWireBT
J'ai vu certaines personnes mentionner l'erreur "opus introuvable" en suivant les instructions pour compiler ffmpeg. J'ai eu le même problème dans Ubuntu 12.04, et j'ai découvert plus tard que le PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" a besoin d'une barre oblique à la fin.
3

Voilà comment je le fais:

  • Tout d'abord, ouvrez un terminal dans le même répertoire où se trouvent vos fichiers audio.
  • Tapez ensuite cette commande:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Runaway Train (Album Version) .flac" "18 - Soul Asylum - Runaway Train (Album Version) .opus"

MODIFIER:

Pour les audiophiles:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Runaway Train (Album Version) .flac" "18 - Soul Asylum - Runaway Train (Album Version) .opus"

Pas besoin de spécifier d' --maxdelay 10option car opusencfaites-le par défaut.

Sortie console pour cette conversion de fichier ( --bitrate 320):

    Encoding using libopus 1.1.2 (audio)
    -----------------------------------------------------
       Input: 44.1kHz 2 channels
      Output: 2 channels (2 coupled)
          20ms packets, 320kbit/sec VBR
     Preskip: 356

    Encoding complete   
    -----------------------------------------------------
           Encoded: 4 minutes and 22.4 seconds
           Runtime: 8 seconds
                    (32.8x realtime)
             Wrote: 10955530 bytes, 13120 packets, 13124 pages
           Bitrate: 317.691kbit/s (without overhead)
     Instant rates: 1.2kbit/s to 510.4kbit/s
                    (3 to 1276 bytes per packet)
          Overhead: 4.89% (container+metadata)

C'est super rapide! Moins de 8 secondes avec une complexité de 10 (complexité de calcul de l'encodage (0-10, par défaut: 10). Zéro donne les encodages les plus rapides mais de qualité inférieure, tandis que 10 donne la qualité la plus élevée mais l'encodage plus lent) et un temps de retard maximum de 10 ms ( Délai maximum du conteneur en millisecondes (0-1000, par défaut: 1000)), donc si vous sautez du temps dans une chanson, l'effet d'écrêtage aura une durée de 10 ms, il est donc imperceptible (essayez avec 1000 et écoutez la différence de temps de saut avec votre Souris). Le débit binaire est VBR par défaut. 320kbps a fonctionné pour moi, c'est donc facultatif, jouez avec ce nombre:
--bitrate N.nnn=> Débit cible en kbit / sec (6-256 par canal)

Soit dit en passant, l'encodage de MP3 en OPUS n'est pas une bonne idée, cela ne sonnera pas mieux, leurs algorithmes de compression sont bien trop différents. Mais de FLAC ou WAV ou de tout autre format audio sans perte , c'est une autre histoire.

Remarque: Pour encoder un autre fichier, appuyez simplement sur la flèche vers le haut dans le même terminal pour appeler la dernière commande et changer le nom des fichiers d'entrée et de sortie.
Si vous recherchez une interface graphique ffmpeg / avconv, TraGtor est peut-être ce dont vous avez besoin.

Vous pouvez également vérifier les différences de spectogramme entre les formats Lossless et Lossy à des débits élevés avec Spek ou Audacity .

Jose Barakat
la source
Ça n'a pas marché pour moi. Je reçois Error parsing input file: Hardvapour remix-.mp3j'utilise 16.04
Sarah Szabo
La question concerne le mp3, pas le flac.
Rétablir Monica - M. Schröder
0
  1. Trouvez un CD (ou flac avec CDEMU) avec le même contenu que mp3.
  2. Instal opus-toolset Audex.
  3. Ouvrez Audex et ajoutez un nouveau profil appelé Opus, ajoutez un modèle de commande;

    opusenc $i --comment="TRACKNUMBER="$trackno"" --artist "$artist" --album "$title" --title "$ttitle" --date "$date" --picture "$cover" $o

et suffixe opus

  1. laissez-le déchirer!
Joel Garcia
la source