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.