Come convertire un file audio in Opus


22

Per i test, desidero convertire un file MP3 e WAV in Opus, quali sono i passaggi per farlo?


1
@EvanCarroll Da qui la parte che dice "Per i test";)
— Luis Alvarado,

2
@EvanCarroll Dipende da cosa vuoi ottenere e dalla qualità del materiale di input. Se stai cercando una soluzione audiofila assoluta, probabilmente non vorrai mai considerare Opus in primo luogo. Dire che è un'idea orribile è solo un'orribile affermazione, quando non c'è spiegazione.
— LiveWireBT

1
@LiveWireBT Dice che codificare un mp3 in opus non è un'idea orribile a meno che tu non stia cercando una soluzione audiofila assoluta è solo un'orribile affermazione, quando non c'è spiegazione.
— Evan Carroll

2
@EvanCarroll Opus ha un supporto specializzato per il parlato, MP3 no. Ciò significa che è possibile ridurre le dimensioni dei podcast e degli audiolibri in modo significativo senza alcuna notevole perdita di qualità. Non riesco a vedere come sia un'idea orribile.
— Christian,

3
@EvanCarroll "rilevamento automatico della voce o della musica per decidere quale modalità di codifica usare" da opus-codec.org . E ovviamente subirai una perdita di qualità. Ecco perché è un codec con perdita di dati. Hai detto che questo non è mai giustificabile e ti ho dato un buon esempio in cui le dimensioni sono un grosso problema, la qualità di importanza secondaria e una fonte senza perdite non disponibile.
— Christian

Risposte:


23

Per impostazione predefinita, il convertitore audio fornito con gli strumenti opus può convertire l'audio in formato raw, wave o AIFF. La sintassi minima utilizza le impostazioni predefinite:

opusenc input.wav output.opus

Potremmo voler aggiungere un bitrate migliore come predefinito di 96 kbps con l'opzione --bitrate N.nnn(per tutte le opzioni consultare la manpage di opusenc).

Per convertire mp3 "al volo". cioè senza creare un file temporaneo possiamo convogliare l'output da avconv a opusenc in questo modo:

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

Dove ottenere "opusenc"?
— shevy,

1
@shevy: viene fornito con gli strumenti opus .
— Takkat,

@shevy: $ sudo apt installa opus-tools
— Jose Barakat il

1
Per fare questo su un sacco di file flac: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(Ho scelto 140 come bitrate perché secondo questo è più che sufficiente per i file stereo.
— Joschua

11

Ubuntu 14.04 e Debian 8 vengono forniti con la versione 9 di libav-toolsnei loro repository e ha il supporto integrato per Opus attraverso il pacchetto libopus0.

Esempio 1: ricodificare un file audio come opus

Con la versione 9 libav-toolse libopus0installata puoi, ad esempio, semplicemente fare:

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

Cosa fanno le opzioni

  • -i file.mp3 imposta il file di input.
  • -map 0:aselezionerà tutti i flussi audio ( a) dal file di input 0. Maggiori informazioni -mapsu https://libav.org/avconv.html#Advanced-options
  • -codec:a opusseleziona il codificatore opus per i flussi audio ( a). Maggiori informazioni -codecsu https://libav.org/avconv.html#Main-options .
  • -b:a 100kimposta il bitrate dell'audio su 100 kilobit / s. Maggiori informazioni -bsu https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onattiva il bitrate variabile. Questa è un'opzione specifica per libopus. Ecco tutte le opzioni per 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 imposta il file di output.

Esempio 2: prendi l'audio da un file video e codificalo come opus

Prendi il secondo stream del primo input ( -map 0:1), che è il flusso audio. Codificalo con libopus a 100 kbit / s con bitrate variabile su:

$ 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%

Con il pacchetto mediainfoinstallato:

$ 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

1
Funziona perfettamente su Ubuntu 14.04! Potresti spiegare cosa -map 0:afa? (E forse dettagliare l'intera riga?)
— 425nesp

@ piña Ho aggiornato la risposta con una spiegazione degli argomenti e un esempio aggiuntivo.
— Daniel Jonsson,

5

Opus il 12.04

Il 12.04 (Preciso), tuttavia, ci sono problemi di dipendenza con l'installazione dei codec e degli strumenti opus, quindi ho trovato di gran lunga la soluzione migliore è quella che è diventata disponibile molto di recente: compilare il codificatore e il decoder audio opus come indicato qui , e compilare ffmpegcon il supporto di opus aggiungendo --enable-opusalle opzioni di configurazione di ffmpeg(come elencato nella guida alla compilazione ).

So che ffmpegè deprecato in Ubuntu a favore Libav, ma la compilazione è un buon modo per ottenere un codificatore / decodificatore opus perfettamente funzionante integrato in ffmpegse stesso. Puoi quindi usarlo per convertire i file (prima in wav) e poi in .opus. La documentazione installata con libopus e ffmpeg rivelerà tutte le opzioni che possono essere utilizzate per convertire i file.

Quando si convertono file con ffmpegdopo la compilazione, è necessario specificare -acodec libopuso ffmpegnon utilizzare il codec opus:

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

È quindi possibile testare il file creato con

ffplay man.opus

Suggerimenti per la compilazione

Non è necessario riprodurre la guida qui nella sua interezza, ma vale la pena notare una o due cose:

  • Dovresti prima installare le dipendenze come elencate (ometto yasmdalla lista: vedi il mio secondo punto):

     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
    
  • C'è un problema che dovrebbe essere sottolineato: la build git sembra volere yasm-1.2, e non è disponibile, quindi devi compilare la fonte dal sito ufficiale , ma è semplice. Basta rimuovere tutte le versioni installate di yasm, quindi decomprimere l'archivio scaricato, cdnella cartella, eseguire ./configure && makee quindi sudo checkinstall. Se qualsiasi altra build richiede la versione precedente, puoi semplicemente rimuovere questa versione e installare la versione del repository.

  • E 'necessario rimuovere qualsiasi esistente libav, ffmpeg, x264, libvpx, o fdk-aacpacchetti prima di iniziare la compilazione.

  • E ' fondamentale che si compila e si installa x264, fdk-aac, libvpxe opusprima di costruire ffmpeg, come quelle librerie saranno utilizzati nella build.

  • Non dimenticare di aggiungere --enable-opusalle opzioni di configurazione quando si esegue la ffmpegcompilazione.

  • La versione di opus compilata era 1.1alpha, quindi potrebbe essere necessario ricompilare nuovamente la libreria opus e ffmpeg in futuro quando verrà rilasciata una nuova versione.

  • È possibile utilizzare ffplayper riprodurre tutti i file opus creati.


ffmpeg è una cattiva soluzione per qualsiasi cosa per cui vi sia una sostituzione.
— Evan Carroll,

2
@EvanCarroll Cosa intendi con questo? È solo una decisione di qualcuno di deprecarlo: ffmpeg è ancora buono come libav, che è solo un fork di esso.

1
Un'ottima risposta, e grazie per il promemoria sul requisito Yasm. x264 ha aumentato la versione minima a 1.2.0 all'ultima pressione. Guida aggiornata con le istruzioni Yasm.
— Llogan,

@Mik Penso che volesse dire che l'encoder stand alone darà risultati migliori.
— LiveWireBT

Ho visto alcune persone menzionate avere l'errore "opus not found" seguendo le istruzioni per compilare ffmpeg. Ho avuto lo stesso problema in Ubuntu 12.04 e in seguito ho scoperto che PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" ha bisogno di una barra alla fine.

3

Ecco come lo faccio:

  • Innanzitutto, apri un terminale nella stessa directory in cui si trovano i tuoi file audio.
  • Quindi, digitare questo comando:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Runaway Train (Versione dell'album) .flac" "18 - Soul Asylum - Runaway Train (Versione dell'album) .opus"

MODIFICARE:

Per gli audiofili:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Runaway Train (Versione dell'album) .flac" "18 - Soul Asylum - Runaway Train (Versione dell'album) .opus"

Non è necessario specificare l' --maxdelay 10opzione perché opusencfarlo per impostazione predefinita.

Output della console per questa conversione di file ( --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)

È super veloce! Meno di 8 secondi con una complessità di 10 (Codifica della complessità computazionale (0-10, impostazione predefinita: 10). Zero fornisce i codici più veloci ma qualità inferiore, mentre 10 fornisce i parametri di qualità più alta ma più lenti) e un tempo di ritardo massimo di 10 ms ( Ritardo massimo del contenitore in millisecondi (0-1000, impostazione predefinita: 1000)), quindi se salti il ​​tempo in una canzone, l'effetto di ritaglio avrà una durata di 10 ms, quindi è impercettibile (prova con 1000 e ascolta la differenza del tempo di salto con il tuo topo). Bitrate è VBR per impostazione predefinita. 320kbps hanno funzionato per me, quindi è facoltativo, gioca con questo numero:
--bitrate N.nnn=> Target bitrate in kbit / sec (6-256 per canale)

A proposito, la codifica da MP3 a OPUS non è una buona idea, non suonerà meglio, i loro algoritmi di compressione sono troppo diversi. Ma da FLAC o WAV o qualsiasi altro formato audio senza perdita , questa è un'altra storia.

Nota: per codificare un altro file, basta premere la freccia su nello stesso terminale per chiamare l'ultimo comando e modificare il nome dei file di input e output.
Se stai cercando una GUI di ffmpeg / avconv, forse TraGtor è ciò di cui hai bisogno.

Puoi anche controllare le differenze di spectogramma tra i formati Lossless e Lossy ad alti bitrate con Spek o Audacity .


Non ha funzionato per me. Ricevo Error parsing input file: Hardvapour remix-.mp3che sto usando 16.04
— Sarah Szabo il

La domanda riguarda mp3, non flac.
— Ripristina Monica - M. Schröder l'

0
  1. Trova un CD (o flac con CDEMU) con lo stesso contenuto di mp3.
  2. Instal opus-toolse Audex.
  3. Apri Audex e aggiungi un nuovo profilo chiamato Opus, aggiungi Pattern di comando;

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

e suffisso opus

  1. lasciar strappare!
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.