Bir ses dosyasını Opus'a dönüştürme


22

Test için, bir MP3 ve WAV dosyasını Opus'a dönüştürmek istiyorum, bunu yapmak için gereken adımlar neler?


1
@EvanCarroll Bu nedenle "Test için" yazan bölüm;)
Luis Alvarado

2
@EvanCarroll Bu, ne elde etmek istediğinize ve girdi malzemesinin kalitesine bağlıdır. Mutlak bir audiophile çözümü arıyorsanız, muhtemelen Opus'u ilk başta düşünmek istemezsiniz. Bunun korkunç bir fikir olduğunu söylemek, hiçbir açıklama olmadığı zaman sadece korkunç bir ifadedir.
LiveWireBT

1
@LiveWireBT Opus'ta bir mp3'ü kodlamanın, mutlak bir audiophile çözümü aramıyorsanız, hiçbir açıklama yapılmadığında, sadece korkunç bir ifade olmadığını söyler.
Evan Carroll,

2
@EvanCarroll Opus konuşma konusunda uzmanlaşmıştır, MP3 değildir. Bu, podcast'lerinizi ve sesli kitaplarınızı , kalitede herhangi bir kayba neden olmadan büyük ölçüde azaltabileceğiniz anlamına gelir . Bunun nasıl korkunç bir fikir olduğunu göremiyorum.
Christian

3
@EvanCarroll "hangi kodlama modunun kullanılacağına karar vermek için konuşma veya müziğin otomatik algılanması" opus-codec.org adresinden . Ve elbette kalite kaybına uğrayacaksınız. Bu yüzden kayıplı bir codec bileşeni. Bunun hiçbir zaman haklı olmadığını söylediniz ve size büyüklüğün çok büyük bir sorun, ikincil öneme sahip kalitenin ve kayıpsız bir kaynağın bulunmadığı bir örnek verdim.
Christian

Yanıtlar:


23

Varsayılan olarak, opus araçlarıyla birlikte verilen ses dönüştürücü, sesi ham, dalga veya AIFF biçiminde dönüştürebilir. Minimal sözdizimi varsayılan ayarları kullanır:

opusenc input.wav output.opus

Seçeneği olan varsayılan 96 kbps olarak daha iyi bir bit hızı eklemek isteyebiliriz --bitrate N.nnn(tüm seçenekler için opusenc sayfasını inceleyin).

"Anında" mp3 dönüştürmek için. yani geçici bir dosya oluşturmadan çıktıları avconv'dan opusenc'e gönderebiliriz:

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

"Opusenc" nereden alınır?
shevy

1
@ shevy: opus araçlarıyla birlikte gelir .
Takkat

@shevy: $ sudo apt yükleme opus-tools
Jose Barakat

1
Flac dosyaları bir demet Bunun için: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; doneuygun çünkü (Ben bit olarak 140 seçtik bu stereo dosyaları için yeterli olandan daha fazla.
Joschua

11

Ubuntu 14.04 ve Debian 8 libav-toolsdepolarında 9. sürümüyle birlikte gelir ve Opus'a paket yoluyla yerleşik destek sağlar libopus0.

Örnek 1: Bir ses dosyasını opus olarak yeniden kodlayın

9 libav-toolsve üstü sürümlerle libopus0basitçe, örneğin:

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

Seçenekler ne yapar

  • -i file.mp3 giriş dosyasını ayarlar.
  • -map 0:aaGiriş dosyasından tüm ses akışlarını ( ) seçecektir 0. Hakkında daha fazla bilgi okuyun -mapüzerinde https://libav.org/avconv.html#Advanced-options
  • -codec:a opusSes akışları için opus kodlayıcıyı seçer ( a). Hakkında daha fazla bilgi okuyun -codecüzerinde https://libav.org/avconv.html#Main-options .
  • -b:a 100ksesin bit hızını 100 kilobit / sn olarak ayarlar. Hakkında daha fazla bilgi okuyun -büzerinde https://libav.org/avconv.html#Codec-AVOptions
  • -vbr ondeğişken bit hızını açar. Bu libopus için özel bir seçenektir. İşte libopus için tüm seçenekler:

    $ 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 çıktı dosyasını ayarlar.

Örnek 2: Sesi bir video dosyasından alın ve opus olarak kodlayın

-map 0:1Ses akışının ilk girişinin ikinci akışını ( ) alın . Değişken bit hızı açıkken libbit ile 100 kbit / s'de kodlayın:

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

Paket mediainfotakılıyken:

$ 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
Mükemmel Ubuntu 14.04 üzerinde çalışıyor! Ne yaptığını açıklayabilir misin -map 0:a? (Belki tüm çizgiyi detaylandırabilir misin?)
425nesp

@ piña Yanıtı, argümanların açıklaması ve ek bir örnek ile güncelledim.
Daniel Jonsson

5

12.04 tarihinde Opus

Bununla birlikte, 12.04'te (Kesin), opus kodeklerini ve araçlarını kurmakla ilgili bağımlılık sorunları var, bu yüzden bugüne kadar elde ettiğim en iyi çözümün çok yakın zamanda piyasaya sürülen çözüm olduğunu gördüm: opus ses kodlayıcıyı ve kod çözücüyü burada belirtildiği gibi derleyin , ve ( derleme kılavuzunda listelendiği şekilde) yapılandırma seçeneklerine ffmpegekleyerek opus desteğiyle oluşturun .--enable-opusffmpeg

Bunun ffmpegUbuntu'da lehine itiraz edildiğini biliyorum Libav, ancak derlemek, tamamen işleyen bir opus kodlayıcı / kod çözücünün ffmpegkendi içine entegre edilmesinin iyi bir yoludur . Daha sonra dosyaları (önce wav'a) sonra da üzerine dönüştürmek için kullanabilirsiniz .opus. Libopus ve ffmpeg ile yüklenen belgeler, dosyaları dönüştürmek için kullanılabilecek tüm seçenekleri ortaya koyacaktır.

ffmpegDerleme sonrası dosyaları dönüştürürken , opus codec bileşenini belirtmeniz -acodec libopusveya ffmpegkullanmamanız gerekir :

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

Daha sonra oluşturulan dosyayı test edebilirsiniz.

ffplay man.opus

Derleme İpuçları

Buradaki kılavuzu bütünüyle çoğaltmanıza gerek yok , ancak bir veya iki şeyi belirtmeye değer:

  • Önce bağımlılıkları listelenen şekilde yüklemelisiniz ( yasmlisteden atlıyorum : ikinci noktama bakın):

     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
    
  • Belirtilmesi gereken bir konu var: git inşaatı istiyor gibi görünüyor yasm-1.2ve bu mevcut değil, bu yüzden kaynağı resmi siteden derlemelisiniz , ama basit. Sadece herhangi yüklü sürümlerini kaldırmak yasm, daha sonra, indirilen arşiv açmak cdklasör, run ./configure && makesonra ve sudo checkinstall. Başka bir yapı daha önceki sürümü gerektiriyorsa, bu sürümü kaldırabilir ve depo sürümünü yükleyebilirsiniz.

  • Varolan herhangi kaldırmak için gerekli olan libav, ffmpeg, x264, libvpx, veya fdk-aacpaketleri derleme başlamadan önce.

  • Öyle kritik derlemek ve yüklemenizi x264, fdk-aac, libvpxve opussen oluşturmadan önce ffmpegbu kütüphaneler yapı kullanılacaktır olarak.

  • Derlemeyi --enable-opusçalıştırdığınızda yapılandırma seçeneklerine eklemeyi unutmayın ffmpeg.

  • Derlenmiş opus sürümü 1.1alpha'ydı, bu nedenle gelecekte yeni bir sürüm çıktığında opus kütüphanesini ve ffmpeg'i yeniden derlemeniz gerekebilir.

  • ffplayOluşturduğunuz tüm opus dosyalarını oynatmak için kullanabilirsiniz .


ffmpeg, bunun yerine geçen herhangi bir şey için kötü bir çözümdür.
Evan Carroll,

2
@EvanCarroll Bu ne demek istiyorsun? Sadece birisinin onu mahrum bırakma kararı: ffmpeg hala bir çatal olan libav kadar iyidir.

1
Harika bir cevap ve Yasm gereksinimi hakkında hatırlatma için teşekkürler. x264 son versiyonunda minimum versiyonunu 1.2.0'a çıkardı. Kılavuz Yasm talimatları ile güncellendi.
lgan

@Mik Bence tek başına kodlayıcının daha iyi sonuçlar vereceğini söylemek istedi.
LiveWireBT

Bazı kişilerin ffmpeg'i derleme talimatlarını takip ederken "opus bulunamadı" hatası söylediğini gördüm. Ubuntu 12.04'te de aynı sorunu yaşadım ve daha sonra PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" sonunda bir eğik çizgi gerektiğini öğrendim.

3

Ben böyle yapıyorum:

  • İlk önce, ses dosyalarınızın bulunduğu dizinde bir terminal açın.
  • Sonra bu komutu yazın:
$ opusenc --bitrate 320 - max-gecikme 10 "18 - Soul Asylum - Kaçak Tren (Albüm Versiyonu) .flac" "18 - Soul Asylum - Kaçak Tren (Albüm Versiyonu) .opus"

DÜZENLE:

Audiophiles için:

$ opusenc --bitrate 510 - max-gecikme 10 "18 - Soul Asylum - Kaçak Tren (Albüm Versiyonu) .flac" "18 - Soul Asylum - Kaçak Tren (Albüm Versiyonu) .opus"

Belirlemeye gerek yok --maxdelay 10Seçenek çünkü opusencbunu varsayılan olarak yapın.

Bu dosya dönüşümü için Konsol Çıkışı (--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)

Süper hızlı! 10 karmaşıklığı olan 8 saniyeden daha az (Kodlama hesaplama karmaşıklığı (0-10, varsayılan: 10) Sıfır, en hızlı kodları verir, ancak düşük kalite verirken, 10 en yüksek kalitede ancak yavaş kodlama verir) ve 10ms'lik maksimum gecikme süresi (10 Milisaniye cinsinden maksimum konteyner gecikmesi (0-1000, varsayılan: 1000)), bu nedenle bir şarkıdaki süreyi atlarsanız, kırpma efekti 10ms uzunluğa sahip olur, bu nedenle algılanamaz (1000 ile deneyin ve fark atlama süresi ile fare). Bit hızı varsayılan olarak VBR'dir. 320kbps benim için çalıştı, bu yüzden isteğe bağlı, bu sayı ile oynamak:
--bitrate N.nnn=> Kbit / sn (bit başına kanal başına 6-256) hedef bit hızı

Bu arada, MP3’ten OPUS’a kodlama yapmak iyi bir fikir değil, daha iyi ses çıkarmayacak, sıkıştırma algoritmaları çok farklı. Ancak FLAC veya WAV'dan veya herhangi bir Kayıpsız Ses Formatından , bu başka bir hikaye.

Not: Başka bir dosyayı kodlamak için, sadece son komutu çağırmak ve giriş ve çıkış dosyalarının adını değiştirmek için aynı terminaldeki Yukarı Ok tuşuna basın.
Bir ffmpeg / avconv GUI arıyorsanız, belki TraGtor ihtiyacınız olan şeydir.

Ayrıca Spek veya Audacity ile yüksek bit oranlarında Lossless ve Lossy formatları arasındaki spekülasyon farklılıklarını da kontrol edebilirsiniz .


Benim için işe yaramadı. Anladım Error parsing input file: Hardvapour remix-.mp316.04
Sarah Szabo

Soru mp3 ile ilgili, flac değil.
Monica'yı eski durumuna getirme - M. Schröder

0
  1. Mp3 ile aynı içeriğe sahip bir CD (veya CDEMU ile flac) bulun.
  2. Instal opus-toolsve Audex.
  3. Audex'i açın ve Opus adlı yeni bir profil ekleyin, Komut deseni ekleyin;

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

ve sonek opus

  1. Bırak gitsin!
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.