Pour tester, je veux convertir un fichier MP3 et WAV que j'ai dans Opus, quelles sont les étapes pour le faire ?
Réponses
Trop de publicités?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
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ée0
. 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
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 deyasm
puis décompressez l'archive téléchargée,cd
dans le dossier, exécutez./configure && make
et ensuitesudo 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
ofdk-aac
avant de commencer la compilation. -
Il est critique que vous compilez et installez
x264
,fdk-aac
,libvpx
yopus
avant de construireffmpeg
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 programmeffmpeg
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.
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 .
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.
- Réponses précédentes
- Plus de réponses