วิธีแปลงไฟล์เสียงเป็น Opus


22

สำหรับการทดสอบฉันต้องการแปลงไฟล์ MP3 และ WAV ที่ฉันต้องเป็น Opus ขั้นตอนในการทำเช่นนี้คืออะไร


1
@EvanCarroll ดังนั้นส่วนที่ระบุว่า "สำหรับการทดสอบ";)
Luis Alvarado

2
@EvanCarroll ขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุและคุณภาพของวัสดุที่นำเข้า หากคุณกำลังมองหาวิธีแก้ไขปัญหาออดิโอไฟล์แบบสมบูรณ์คุณอาจไม่ต้องการพิจารณา Opus ตั้งแต่แรก การพูดว่าเป็นความคิดที่น่ากลัวเป็นเพียงคำแถลงที่น่ากลัวเมื่อไม่มีคำอธิบาย
LiveWireBT

1
@ LiveWireBT กล่าวว่าการเข้ารหัส mp3 ในบทประพันธ์ไม่ใช่ความคิดที่น่ากลัวเว้นแต่ว่าคุณกำลังมองหาวิธีแก้ไขปัญหาออดิโอไฟล์อย่างแท้จริงเป็นเพียงคำแถลงที่น่ากลัวเมื่อไม่มีคำอธิบาย
Evan Carroll

2
@EvanCarroll Opus ได้รับการสนับสนุนเป็นพิเศษสำหรับการพูด MP3 ไม่ได้ ซึ่งหมายความว่าคุณสามารถลดพอดแคสต์และหนังสือเสียงในขนาดที่มีนัยสำคัญโดยไม่สูญเสียคุณภาพอย่างเห็นได้ชัด ฉันล้มเหลวที่จะดูว่ามันเป็นความคิดที่น่ากลัว
คริสเตียน

3
@EvanCarroll "ตรวจสอบโดยอัตโนมัติในการพูดหรือเพลงที่จะตัดสินใจว่าจะใช้โหมดการเข้ารหัส" จากopus-codec.org และแน่นอนคุณจะต้องสูญเสียคุณภาพ นั่นเป็นสาเหตุที่มันเป็นตัวแปลงสัญญาณที่เสีย คุณบอกว่าเรื่องนี้ไม่น่าจะสมเหตุสมผลและฉันก็ยกตัวอย่างที่ดีให้กับคุณในกรณีที่ขนาดเป็นปัญหาใหญ่คุณภาพของความสำคัญรอง
Christian

คำตอบ:


23

ตามค่าเริ่มต้นตัวแปลงเสียงที่จัดส่งมาพร้อมกับopus-toolsสามารถแปลงเสียงในรูปแบบ raw, wave หรือ AIFF ไวยากรณ์ขั้นต่ำสุดใช้การตั้งค่าเริ่มต้น:

opusenc input.wav output.opus

เราอาจต้องการเพิ่มบิตเรตที่ดีกว่าเป็นค่าเริ่มต้น 96 kbps พร้อมตัวเลือก--bitrate N.nnn(สำหรับตัวเลือกทั้งหมดศึกษา manpage สำหรับ opusenc)

เพื่อแปลง mp3 "ในทันที" เช่นโดยไม่ต้องสร้างไฟล์ชั่วคราวเราสามารถไพพ์เอาต์พุตจาก avconv ไปยัง opusenc ดังนี้:

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

จะหา "opusenc" ได้ที่ไหน?
shevy

1
@shevy: มันมาพร้อมกับผลงานการประพันธ์เครื่องมือ
Takkat

@shevy: $ sudo apt ติดตั้ง opus-tools
Jose Barakat

1
การทำเช่นนี้บนพวงของไฟล์ FLAC A: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(ผมเลือก 140 บิตเรตเพราะเป็นไปตามนี้ก็มากเกินพอสำหรับไฟล์สเตอริโอ.
Joschua

11

อูบุนตู 14.04 และ Debian 8 เรือที่มีรุ่นที่ 9 ของในที่เก็บของพวกเขาและก็มีการสนับสนุนในตัวสำหรับบทประพันธ์ผ่านแพคเกจlibav-toolslibopus0

ตัวอย่างที่ 1: เข้ารหัสไฟล์เสียงเป็นบทประพันธ์อีกครั้ง

ด้วยเวอร์ชัน 9 libav-toolsและlibopus0ติดตั้งคุณสามารถทำได้โดยง่ายเช่น:

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

ตัวเลือกทำอะไร

  • -i file.mp3 ตั้งค่าไฟล์อินพุต
  • -map 0:aจะเลือกเสียงลำธารทั้งหมด ( a) 0จากแฟ้มใส่ อ่านเพิ่มเติมเกี่ยว-mapกับhttps://libav.org/avconv.html#Advanced-options
  • -codec:a opusเลือก opus encoder สำหรับออดิโอสตรีม ( a) อ่านเพิ่มเติมเกี่ยวกับ-codecบนhttps://libav.org/avconv.html#Main-options
  • -b:a 100kตั้งค่าบิตเรตของเสียงเป็น 100 กิโลบิต / วินาที อ่านเพิ่มเติมเกี่ยว-bกับhttps://libav.org/avconv.html#Codec-AVOptions
  • -vbr onเปิดบิตเรตตัวแปร นี่คือตัวเลือกเฉพาะสำหรับ libopus นี่คือตัวเลือกทั้งหมดสำหรับ 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 ตั้งค่าไฟล์ที่ส่งออก

ตัวอย่างที่ 2: หยิบเสียงจากไฟล์วิดีโอและเข้ารหัสเป็นบทประพันธ์

ใช้สตรีมที่สองของอินพุตแรก ( -map 0:1) ซึ่งเป็นสตรีมเสียง เข้ารหัสด้วย libopus ที่ 100 kbit / s พร้อมบิตเรตตัวแปรใน:

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

เมื่อmediainfoติดตั้งแพ็คเกจ:

$ 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
ทำงานบน Ubuntu 14.04 ได้อย่างสมบูรณ์แบบ! คุณช่วยอธิบายอะไรได้-map 0:aบ้าง (และอาจมีรายละเอียดทั้งบรรทัด?)
425nesp

@ piñaฉันได้อัปเดตคำตอบพร้อมคำอธิบายของข้อโต้แย้งและตัวอย่างเพิ่มเติม
Daniel Jonsson

5

Opus เมื่อ 12.04

เมื่อวันที่ 12.04 (แม่นยำ) แต่มีปัญหาการพึ่งพากับการติดตั้งตัวแปลงสัญญาณบทประพันธ์และเครื่องมือเพื่อให้ฉันได้พบไกลโดยวิธีการแก้ปัญหาที่ดีที่สุดคือหนึ่งที่ได้กลายเป็นใช้ได้มากเมื่อเร็ว ๆ นี้: รวบรวม encoder เสียงบทประพันธ์และถอดรหัสตามที่ระบุไว้ที่นี่ , และสร้างffmpegด้วยการสนับสนุนบทประพันธ์โดยการเพิ่ม--enable-opusตัวเลือกการกำหนดค่าของffmpeg(ตามที่ระบุไว้ในคู่มือการรวบรวม )

ฉันรู้ว่าffmpegเลิกใช้แล้วใน Ubuntu Libavแต่การรวบรวมเป็นวิธีที่ดีในการรับ opus encoder / ตัวถอดรหัสที่รวมอยู่ในffmpegตัวมันเอง จากนั้นคุณสามารถใช้มันเพื่อการแปลงไฟล์ (คนแรกที่จะ WAV) .opusและจากนั้นไป เอกสารที่ติดตั้งกับ libopus และ ffmpeg จะเปิดเผยตัวเลือกทั้งหมดที่สามารถใช้ในการแปลงไฟล์

เมื่อทำการแปลงไฟล์ด้วยffmpegหลังจากการคอมไพล์คุณต้องระบุ-acodec libopusหรือffmpegไม่ใช้ตัวแปลงสัญญาณ opus:

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

จากนั้นคุณสามารถทดสอบไฟล์ที่สร้างด้วย

ffplay man.opus

เคล็ดลับการรวบรวม

ไม่จำเป็นต้องทำซ้ำคำแนะนำทั้งหมดที่นี่ แต่ควรสังเกตสิ่งหนึ่งหรือสองอย่าง:

  • คุณควรติดตั้งการอ้างอิงตามที่ระบุไว้ในรายการก่อน (ฉันไม่yasmอยู่ในรายการ: ดูจุดที่สองของฉัน):

     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
    
  • มีประเด็นหนึ่งที่ควรจะชี้ให้เห็น: การสร้างคอมไพล์ดูเหมือนจะต้องการyasm-1.2และไม่พร้อมใช้งานดังนั้นคุณต้องรวบรวมแหล่งจากเว็บไซต์ทางการแต่มันง่าย เพียงแค่เอารุ่นใด ๆ ที่ติดตั้งyasmแล้วแกะเก็บที่ดาวน์โหลดcdไปยังโฟลเดอร์ที่วิ่งแล้ว./configure && make sudo checkinstallหากบิลด์อื่น ๆ ต้องการเวอร์ชันก่อนหน้าคุณสามารถลบเวอร์ชันนี้และติดตั้งเวอร์ชันที่เก็บได้

  • มันเป็นสิ่งจำเป็นที่จะลบใด ๆ ที่มีอยู่libav, ffmpeg, x264, libvpxหรือfdk-aacแพคเกจก่อนที่คุณจะเริ่มต้นรวบรวม

  • มันเป็นสิ่งสำคัญที่คุณรวบรวมและติดตั้งx264, fdk-aac, libvpxและopusก่อนที่คุณจะสร้างffmpegเป็นห้องสมุดเหล่านั้นจะถูกนำมาใช้ในการสร้าง

  • อย่าลืมเพิ่ม--enable-opusไปยังตัวเลือกการกำหนดค่าเมื่อคุณเรียกใช้การffmpegรวบรวม

  • เวอร์ชั่นของ opus ที่คอมไพล์คือ 1.1alpha ดังนั้นคุณอาจจำเป็นต้องคอมไพล์ไลบรารี opus และ ffmpeg อีกครั้งในอนาคตอีกครั้งเมื่อมีเวอร์ชันใหม่ออกมา

  • คุณสามารถใช้ffplayเพื่อเล่นไฟล์บทประพันธ์ที่คุณสร้างขึ้น


ffmpeg เป็นทางออกที่ไม่ดีสำหรับทุกสิ่งที่มีการทดแทน
Evan Carroll

2
@EvanCarroll สิ่งนี้หมายความว่าอย่างไร มันเป็นเพียงการตัดสินใจของใครบางคนที่จะเลิกมัน: ffmpeg ยังดีเท่ากับ libav ซึ่งเป็นเพียงส่วนหนึ่งของมัน

1
คำตอบที่ดีและขอบคุณสำหรับการเตือนความจำเกี่ยวกับข้อกำหนดของ Yasm x264 เพิ่มเวอร์ชั่นขั้นต่ำเป็น 1.2.0 เมื่อกดครั้งสุดท้าย คู่มืออัปเดตพร้อมกับคำแนะนำ Yasm
llogan

@ Mik ฉันคิดว่าเขาต้องการพูดว่า encoder แบบสแตนด์อโลนจะให้ผลลัพธ์ที่ดีกว่า
LiveWireBT

ฉันเห็นบางคนกล่าวว่ามีข้อผิดพลาด "ไม่พบ opus" เมื่อทำตามคำแนะนำในการรวบรวม ffmpeg ฉันมีปัญหาเดียวกันใน Ubuntu 12.04 และต่อมาก็พบว่า PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" ต้องการสแลชในตอนท้าย

3

นั่นเป็นวิธีที่ฉันทำ:

  • ก่อนอื่นให้เปิดเทอร์มินัลในไดเรกทอรีเดียวกันกับไฟล์เสียงของคุณ
  • จากนั้นพิมพ์คำสั่งนี้:
$ opusenc - บิตเรต 320 - สูงสุดล่าช้า 10 "18 - Soul Asylum - Runaway Train (เวอร์ชั่นอัลบั้ม) .flac" "18 - Soul Asylum - Runaway Train (เวอร์ชั่นอัลบั้ม) .opus"

แก้ไข:

สำหรับ Audiophiles:

$ opusenc - bitrate 510 - max-delay 10 "18 - Soul Asylum - Runaway Train (เวอร์ชั่นอัลบั้ม) .flac" "18 - Soul Asylum - Runaway Train (เวอร์ชั่นอัลบั้ม) .opus"

ไม่จำเป็นต้องระบุ--maxdelay 10ตัวเลือกเพราะopusencทำตามค่าเริ่มต้น

เอาต์พุตคอนโซลสำหรับการแปลงไฟล์นี้ ( --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)

มันเร็วมาก! น้อยกว่า 8 วินาทีด้วยความซับซ้อน 10 (ความซับซ้อนของการเข้ารหัสคอมพิวเตอร์ (0-10, ค่าเริ่มต้น: 10) ศูนย์ให้การเข้ารหัสที่เร็วที่สุด แต่คุณภาพต่ำลงในขณะที่ 10 ให้คุณภาพสูงสุด แต่การเข้ารหัสช้าลง) และเวลาหน่วงสูงสุด 10ms ( คอนเทนเนอร์ล่าช้าสูงสุดในหน่วยมิลลิวินาที (0-1000 ค่าเริ่มต้น: 1,000)) ดังนั้นหากคุณข้ามเวลาในเพลงเอฟเฟกต์การตัดจะมีระยะเวลา 10ms ดังนั้นจึงไม่สามารถรับได้ (ลอง 1,000 และได้ยินความแตกต่างของเวลาข้ามกับ เมาส์) บิตเรตคือ VBR ตามค่าเริ่มต้น 320kbps เหมาะสำหรับฉันดังนั้นเป็นตัวเลือกเล่นกับตัวเลขนี้:
--bitrate N.nnn=> บิตเรตเป้าหมายเป็น kbit / วินาที (6-256 ต่อช่อง)

อย่างไรก็ตามการเข้ารหัสจาก MP3 ถึง OPUS ไม่ใช่ความคิดที่ดีมันจะไม่ส่งเสียงที่ดีกว่าอัลกอริธึมการบีบอัดของพวกเขานั้นแตกต่างกันมาก แต่จาก FLAC หรือ WAV หรือLossless Audio Formatอื่น ๆนั่นเป็นอีกเรื่องหนึ่ง

หมายเหตุ: ในการเข้ารหัสไฟล์อื่นเพียงกดลูกศรขึ้นในเทอร์มินัลเดียวกันเพื่อเรียกคำสั่งสุดท้ายและเปลี่ยนชื่อของไฟล์อินพุตและไฟล์เอาต์พุต
หากคุณกำลังมองหา GUI ffmpeg / avconv บางทีTraGtorอาจเป็นสิ่งที่คุณต้องการ

นอกจากนี้คุณยังสามารถตรวจสอบความแตกต่างระหว่าง spectogram Lossless และ Lossy รูปแบบที่บิตเรตที่สูงด้วยSpekหรือกล้า


มันไม่ได้ผลสำหรับฉัน ฉันเข้าใจError parsing input file: Hardvapour remix-.mp3ว่าฉันใช้ 16.04
Sarah Szabo

คำถามเกี่ยวกับ mp3 ไม่ใช่ flac
Reinstate Monica - M. Schröder

0
  1. ค้นหาซีดี (หรือ flac ด้วย CDEMU) ที่มีเนื้อหาเหมือนกับ mp3
  2. Instal และopus-toolsAudex
  3. เปิด Audex และเพิ่มโปรไฟล์ใหม่ที่ชื่อว่า Opus เพิ่มรูปแบบคำสั่ง

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

และคำต่อท้าย opus

  1. ปล่อยให้มันฉีก!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.