31 votes

Comment convertir un fichier son en Opus

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

34voto

Takkat Points 135194

Dans les versions plus récentes d'Ubuntu, le codec Opus est inclus dans le fichier libavcodec qui seront installées avec ffmpeg . L'encodage audio est ensuite effectué avec

ffmpeg -i infile.ext <options> outfile.opus

Le convertisseur audio fourni avec le opus-tools peut convertir des fichiers audio au format raw, wave ou AIFF. La syntaxe minimale utilise les paramètres par défaut :

opusenc input.wav output.opus

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

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

ffmpeg -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus

13voto

RWendi Points 890

Ubuntu 14.04 et Debian 8 sont livrés avec la version 9 de libav-tools dans leurs référentiels, et il a un support intégré pour Opus à travers le paquetage libopus0 .

Exemple 1 : Réencoder un fichier audio en opus

Avec la version 9 de libav-tools y 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

Ce 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 -map sur https://libav.org/avconv.html#Advanced-options

  • -codec:a opus sélectionne l'encodeur de l'opus pour les flux audio ( a ). Pour en savoir plus -codec sur https://libav.org/avconv.html#Main-options .

  • -b:a 100k définit le débit binaire de l'audio à 100 kilobit/s. En savoir plus -b sur https://libav.org/avconv.html#Codec-AVOptions

  • -vbr on active le débit 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 : récupérer l'audio d'un fichier vidéo et l'encoder en opus

Prendre 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 débit variable activé :

$ 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és :

$ 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

6voto

Opus sur 12.04

Sur 12.04 (Precise), cependant, il y a des problèmes de dépendance avec l'installation des codecs et des outils opus, et j'ai donc trouvé que la meilleure solution est celle qui est devenue disponible très récemment : compiler l'encodeur et le décodeur audio opus. comme indiqué ici et construire ffmpeg avec le support de l'opus en ajoutant --enable-opus aux options de configuration de ffmpeg (tels qu'ils figurent sur la liste de l guide de compilation ).

Sé que ffmpeg est déprécié dans Ubuntu en faveur de Libav mais la compilation est un bon moyen d'obtenir un encodeur/décodeur d'opus entièrement fonctionnel intégré dans le logiciel ffmpeg elle-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èle toutes les options qui peuvent être utilisées pour convertir les fichiers.

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

Conseils de compilation

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

  • Vous devez d'abord installer les dépendances telles qu'elles sont listées (j'omets 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 qui doit être souligné : la compilation git semble vouloir yasm-1.2 et ce n'est pas disponible, vous devez donc compiler les sources à partir de le site officiel mais c'est simple. Il suffit de supprimer toutes les versions installées de yasm puis décompressez l'archive téléchargée, cd dans le dossier, exécutez ./configure && make et ensuite sudo checkinstall . Si d'autres constructions 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 les libav , ffmpeg , x264 , libvpx o fdk-aac avant de commencer la compilation.

  • Il est critique que vous compilez et installez x264 , fdk-aac , libvpx y opus avant de construire ffmpeg car ces bibliothèques seront utilisées lors de la construction.

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

  • La version d'opus compilée était la 1.1alpha, il se peut donc que vous deviez recompiler la bibliothèque opus et ffmpeg à l'avenir lorsqu'une nouvelle version sera publiée.

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

4voto

Jose Barakat Points 301

C'est ainsi que je procède :

  • Tout d'abord, ouvrez un terminal dans le même répertoire que celui 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"

EDITです:

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"

Il n'est pas nécessaire de préciser --maxdelay 10 parce que opusenc le font 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 très rapide ! Moins de 8 secondes avec une complexité de 10 (complexité de calcul du codage (0-10, par défaut : 10). Zéro donne les encodages les plus rapides mais de moindre qualité, tandis que 10 donne la meilleure qualité mais un encodage plus lent) et un délai maximum de 10ms (Délai maximum du conteneur en millisecondes (0-1000, défaut : 1000)), donc si vous sautez du temps dans une chanson, l'effet de coupure aura une durée de 10ms et sera donc imperceptible (essayez avec 1000 et entendez la différence en sautant du temps avec votre souris). Le débit binaire est VBR par défaut. 320kbps a fonctionné pour moi et est donc optionnel, jouez avec ce nombre :
--bitrate N.nnn => débit cible en kbit/sec (6-256 par canal)

D'ailleurs, l'encodage de MP3 vers OPUS n'est pas une bonne idée, cela ne sonnera pas mieux, leurs algorithmes de compression sont bien trop différents. Mais à partir de FLAC ou WAV ou n'importe quel autre format d'encodage, le son sera meilleur. Format audio sans perte mais c'est une autre histoire.

Note : Pour encoder un autre fichier, il suffit d'appuyer 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 cherchez une interface graphique pour ffmpeg/avconv, peut-être que TraGtor est ce qu'il vous faut.

Vous pouvez également vérifier les différences de spectres entre les formats Lossless et Lossy à des débits élevés à l'aide de la fonction Spek o Audacity .

1voto

wbob Points 321

Si seulement la route du mp3 à l'opus est nécessaire, mpg123 peut faire le décodage en wav/pcm.

mpg123 -w - input.mp3 | opusenc - output.opus

Pour ceux qui ne sont pas familiers avec ce système, le tiret "-" correspond à la sortie (stdout) sur la gauche qui doit être acheminée vers la sortie (stdin) de l'opusencs sur la droite.

Bien sûr, ffmpeg est excellent pour la conversion et l'édition de médias en général, mais sa taille d'installation et ses dépendances de distribution habituelles ont également une empreinte plus importante.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X