web-dev-qa-db-fra.com

Comment convertir un fichier son en Opus

Pour tester, je veux convertir un fichier MP3 et WAV que j'ai au format Opus, quelles sont les étapes à suivre pour le faire?

21
Luis Alvarado

Par défaut, le convertisseur audio livré avec le opus-toolsInstall opus-tools 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 souhaitons peut-être ajouter un meilleur débit que celui par défaut à 96 Kbits/s avec l'option --bitrate N.nnn (pour toutes les options, consultez la page de manuel opusenc).

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

avconv -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
21
Takkat

Ubuntu 14.04 et Debian 8 sont livrés avec la version 9 de libav-tools dans leurs référentiels, et supporte de manière intégrée Opus via le paquet libopus0.

Exemple 1: réencodez un fichier audio en opus

Avec la version 9 de libav-tools et libopus0 installé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:a sélectionnera tous les flux audio (a) à partir du fichier d'entrée 0. En savoir plus sur -map on https://libav.org/avconv.html#Advanced-options
  • -codec:a opus sélectionne le codeur opus pour les flux audio (a). En savoir plus sur -codec on https://libav.org/avconv.html#Main-options .
  • -b:a 100k définit le débit binaire de l'audio sur 100 kilobits/s. En savoir plus sur -b on https://libav.org/avconv.html#Codec-AVOptions
  • -vbr on active le débit binaire variable. C'est 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: extraire l'audio d'un fichier vidéo et l'encoder en tant qu'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 paquet mediainfo installé:

$ 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
10
Daniel Jonsson

Opus le 12.04

Sur 12.04 (Precise), cependant, il existe des problèmes de dépendance lors de l’installation des codecs et des outils Opus, j’ai donc trouvé de loin la meilleure solution, celle qui est devenue disponible très récemment: compiler le codeur et le décodeur audio Opus comme indiqué ici , et construisez ffmpeg avec le support opus en ajoutant --enable-opus aux options de configuration de ffmpeg (comme indiqué dans le guide de compilation ).

Je sais que ffmpeg est déconseillé dans Ubuntu au profit de Libav, mais la compilation est un bon moyen d’obtenir un encodeur/décodeur opus pleinement fonctionnel intégré à ffmpeg. 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 pouvant être utilisées pour convertir des fichiers.

Lors de la conversion de fichiers avec ffmpeg après la compilation, vous devez spécifier -acodec libopus ou ffmpeg n'utilisera pas 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

Astuces pour la 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 énumérées (j’ai omis yasm de 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 à souligner: la construction de git semble vouloir yasm-1.2, et cela n'est pas disponible, vous devez donc compiler le code source à partir de le site officiel , mais c'est simple. Supprimez simplement toutes les versions installées de yasm, décompressez l’archive téléchargée, cd dans le dossier, exécutez ./configure && make et ensuite Sudo checkinstall. Si d'autres versions requièrent la version antérieure, vous pouvez simplement supprimer cette version et installer la version du référentiel.

  • Il est nécessaire de supprimer tout paquetage libav, ffmpeg, x264, libvpx ou fdk-aac avant de compiler.

  • Il est critique que vous compiliez et installiez x264, fdk-aac, libvpx et opus avant de générer ffmpeg, car ces bibliothèques seront utilisées dans la construction.

  • N'oubliez pas d'ajouter --enable-opus aux options de configuration lorsque vous exécutez la compilation ffmpeg.

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

  • Vous pouvez utiliser ffplay pour lire tous les fichiers opus que vous créez.

5
user76204

C'est comme ça que je le fais:

  • Commencez par ouvrir un terminal dans le même répertoire que vos fichiers audio.
  • Ensuite, tapez cette commande:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Train fugitif (Version album) .flac" "18 - Soul Asylum - Train fugace (Version album) .opus"

MODIFIER:

Pour les audiophiles:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Le train fugitif (Version de l'album) .flac" "18 - Soul Asylum - Le train fugitif (Version de l'album) .opus"

Nul besoin de spécifier l'option --maxdelay 10 car opusenc le fait par défaut.

Sortie de la 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 du codage (0-10, valeur par défaut: 10). Zéro donne les codages les plus rapides mais de qualité inférieure, tandis que 10 donne la qualité la plus élevée mais un codage plus lent) et un temps de retard maximal de 10 ms ( Délai maximum du conteneur en millisecondes (0-1000, valeur par défaut: 1000)). Ainsi, 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 entendez la différence Souris). Le débit binaire est VBR par défaut. 320kbps a fonctionné pour moi, donc est facultatif, jouez avec ce numéro:
--bitrate N.nnn => Débit binaire cible en kbit/s (6-256 par canal)

À propos, encoder de MP3 à OPUS n’est pas une bonne idée, cela ne va pas sonner 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 coder un autre fichier, appuyez simplement sur la flèche vers le haut du même terminal pour appeler la dernière commande et modifier le nom des fichiers d'entrée et de sortie.
Si vous recherchez une interface graphique ffmpeg/avconv, peut-être que TraGtor est ce dont vous avez besoin.

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

3
Jose Barakat
  1. Recherchez un CD (ou un flac avec CDEMU) ayant le même contenu que le format mp3.
  2. Installez opus-tools and 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!
0
Joel Garcia