Cách chuyển đổi tập tin âm thanh sang Opus


22

Để thử nghiệm, tôi muốn chuyển đổi tệp MP3 và WAV tôi phải sang Opus, các bước để thực hiện việc này là gì?


1
@EvanCarroll Do đó, phần nói "Để thử nghiệm";)
Luis Alvarado

2
@EvanCarroll Điều đó phụ thuộc vào những gì bạn muốn đạt được và chất lượng của nguyên liệu đầu vào. Nếu bạn đang tìm kiếm một giải pháp audiophile tuyệt đối, có lẽ bạn không bao giờ muốn xem xét Opus ngay từ đầu. Nói rằng đó là một ý tưởng khủng khiếp chỉ là một tuyên bố khủng khiếp, khi không có lời giải thích.
LiveWireBT

1
@LiveWireBT Nói rằng mã hóa mp3 trong opus không phải là một ý tưởng khủng khiếp trừ khi bạn đang tìm kiếm một giải pháp audiophile tuyệt đối chỉ là một tuyên bố khủng khiếp, khi không có lời giải thích.
Evan Carroll

2
@EvanCarroll Opus có hỗ trợ chuyên biệt cho lời nói, MP3 thì không. Điều này có nghĩa là bạn có thể giảm kích thước podcast và audiobook của mình một cách đáng kể về kích thước mà không làm giảm đáng kể chất lượng. Tôi không thấy làm thế nào đó là một ý tưởng khủng khiếp.
Christian

3
@EvanCarroll "tự động phát hiện lời nói hoặc âm nhạc để quyết định sử dụng chế độ mã hóa nào" từ opus-codec.org . Và tất nhiên bạn sẽ phải chịu một sự mất mát về chất lượng. Đó là lý do tại sao nó là một codec mất mát. Bạn nói rằng điều này không bao giờ chính đáng và tôi đã cho bạn một ví dụ điển hình trong đó kích thước là một vấn đề lớn, chất lượng quan trọng thứ cấp và nguồn không mất mát không có sẵn.
Christian

Câu trả lời:


23

Theo mặc định, bộ chuyển đổi âm thanh được cung cấp với các công cụ opus có thể chuyển đổi âm thanh ở định dạng thô, sóng hoặc AIFF. Cú pháp tối thiểu sử dụng các cài đặt mặc định:

opusenc input.wav output.opus

Chúng tôi có thể muốn thêm tốc độ bit tốt hơn như 96 kbps mặc định với tùy chọn --bitrate N.nnn(đối với tất cả các tùy chọn tham khảo trang web cho opusenc).

Để chuyển đổi mp3 "nhanh chóng". tức là không tạo tập tin tạm thời, chúng ta có thể chuyển đầu ra từ avconv sang opusenc như thế này:

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

Lấy "opusenc" ở đâu?
shevy

1
@shevy: nó đi kèm với các công cụ opus .
Takkat

@shevy: $ sudo apt cài đặt công cụ opus
Jose Barakat

1
Để làm điều này trên một loạt các file flac: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(tôi đã chọn 140 như một bitrate vì theo này đó là quá đủ cho các tập tin âm thanh stereo.
Joschua

11

Ubuntu 14.04 và Debian 8 có phiên bản 9 libav-toolstrong kho của họ và nó có hỗ trợ tích hợp cho Opus thông qua gói libopus0.

Ví dụ 1: Mã hóa lại một tệp âm thanh dưới dạng opus

Với phiên bản 9 libav-toolslibopus0được cài đặt, bạn có thể chỉ cần, ví dụ, làm:

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

Các tùy chọn làm gì

  • -i file.mp3 đặt tập tin đầu vào.
  • -map 0:asẽ chọn tất cả các luồng âm thanh ( a) từ tệp đầu vào 0. Đọc thêm về -maptrên https://libav.org/avconv.html#Advanced-options
  • -codec:a opuschọn bộ mã hóa opus cho các luồng âm thanh ( a). Đọc thêm về -codectrên https://libav.org/avconv.html#Main-options .
  • -b:a 100kđặt bitrate của âm thanh thành 100 kilobit / s. Đọc thêm về -btrên https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onbật bitrate biến. Đây là một tùy chọn cụ thể cho libopus. Dưới đây là tất cả các tùy chọn cho 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 đặt tập tin đầu ra.

Ví dụ 2: Lấy âm thanh từ một tệp video và mã hóa nó thành opus

Lấy luồng thứ hai của đầu vào đầu tiên ( -map 0:1), đó là luồng âm thanh. Mã hóa nó bằng libopus với tốc độ 100 kbit / s với bitrate biến đổi trê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%

Với gói mediainfođược cài đặt:

$ 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
Hoạt động hoàn hảo trên Ubuntu 14.04! Bạn có thể giải thích những gì -map 0:akhông? (Và có thể chi tiết toàn bộ dòng?)
425nesp

@ piña Tôi đã cập nhật câu trả lời với lời giải thích về các đối số và một ví dụ bổ sung.
Daniel Jonsson

5

Opus ngày 12.04

Tuy nhiên, vào ngày 12.04 (Chính xác), có vấn đề phụ thuộc với việc cài đặt các công cụ và codec opus, vì vậy tôi đã tìm thấy giải pháp tốt nhất là giải pháp gần đây đã có sẵn: biên dịch bộ mã hóa và giải mã âm thanh opus như đã lưu ý ở đây , và xây dựng ffmpegvới sự hỗ trợ của opus bằng cách thêm --enable-opusvào các tùy chọn cấu hình của ffmpeg(như được liệt kê trong hướng dẫn biên dịch ).

Tôi biết điều đó ffmpegkhông được ủng hộ trong Ubuntu Libav, nhưng biên dịch là một cách tốt để có được bộ mã hóa / giải mã opus hoạt động đầy đủ tích hợp vào ffmpegchính nó. Sau đó, bạn có thể sử dụng nó để chuyển đổi tập tin (đầu tiên là wav) và sau đó đến .opus. Tài liệu được cài đặt với libopus và ffmpeg sẽ tiết lộ tất cả các tùy chọn có thể được sử dụng để chuyển đổi tệp.

Khi chuyển đổi tệp với ffmpegsau khi biên dịch, bạn phải chỉ định -acodec libopushoặc ffmpegsẽ không sử dụng codec opus:

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

Sau đó, bạn có thể kiểm tra tệp được tạo bằng

ffplay man.opus

Mẹo tổng hợp

Không cần phải sao chép toàn bộ hướng dẫn ở đây, nhưng đáng chú ý một hoặc hai điều:

  • Trước tiên bạn nên cài đặt các phụ thuộc như được liệt kê (tôi bỏ qua yasmkhỏi danh sách: xem điểm thứ hai của tôi):

     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ó một vấn đề cần được chỉ ra: việc xây dựng git dường như muốn yasm-1.2và điều đó không có sẵn, vì vậy bạn phải biên dịch nguồn từ trang web chính thức , nhưng nó rất đơn giản. Chỉ cần xóa bất kỳ phiên bản đã cài đặt nào yasm, sau đó giải nén tệp lưu trữ đã tải xuống, cdvào thư mục, chạy ./configure && makevà sau đó sudo checkinstall. Nếu bất kỳ bản dựng nào khác yêu cầu phiên bản cũ hơn, bạn có thể xóa phiên bản này và cài đặt phiên bản kho lưu trữ.

  • Nó là cần thiết để loại bỏ bất kỳ hiện libav, ffmpeg, x264, libvpx, hoặc fdk-aacgói trước khi bạn bắt đầu biên soạn.

  • Nó là quan trọng mà bạn biên dịch và cài đặt x264, fdk-aac, libvpxopustrước khi bạn xây dựng ffmpeg, như các thư viện sẽ được sử dụng trong xây dựng.

  • Đừng quên thêm --enable-opusvào các tùy chọn cấu hình khi bạn chạy phần ffmpegbiên dịch.

  • Phiên bản opus được biên dịch là 1.1alpha, vì vậy bạn có thể cần phải biên dịch lại thư viện opus và ffmpeg trong tương lai một lần nữa khi một phiên bản mới được phát hành.

  • Bạn có thể sử dụng ffplayđể phát bất kỳ tệp opus nào bạn tạo.


ffmpeg là một giải pháp tồi cho bất cứ điều gì có sự thay thế cho.
Evan Carroll

2
@EvanCarroll Ý của bạn là gì? Đó chỉ là quyết định từ chối của ai đó: ffmpeg vẫn tốt như libav, vốn chỉ là một nhánh của nó.

1
Một câu trả lời tuyệt vời, và cảm ơn bạn đã nhắc nhở về yêu cầu Yasm. x264 tăng phiên bản tối thiểu lên 1.2.0 trong lần đẩy cuối cùng của họ. Hướng dẫn cập nhật với hướng dẫn Yasm.
llogan

@Mik Tôi nghĩ rằng anh ấy muốn nói rằng bộ mã hóa độc lập sẽ cho kết quả tốt hơn.
LiveWireBT

Tôi thấy một số người đề cập đến việc có lỗi "không tìm thấy" khi làm theo hướng dẫn để biên dịch ffmpeg. Tôi đã gặp vấn đề tương tự trong Ubuntu 12.04 và sau đó phát hiện ra PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" cần một dấu gạch chéo ở cuối.

3

Đó là cách tôi làm:

  • Đầu tiên, mở một thiết bị đầu cuối trong cùng thư mục chứa tệp âm thanh của bạn.
  • Sau đó, gõ lệnh này:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Runaway Train (Phiên bản album) .flac" "18 - Soul Asylum - Runaway Train (Phiên bản album) .opus"

CHỈNH SỬA:

Đối với những người mê âm thanh nổi:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Runaway Train (Phiên bản album) .flac" "18 - Soul Asylum - Runaway Train (Phiên bản album) .opus"

Không cần chỉ định --maxdelay 10tùy chọn vì opusenclàm điều này theo mặc định.

Bảng điều khiển đầu ra cho chuyển đổi tệp này ( --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)

Nó siêu nhanh! Chưa đến 8 giây với độ phức tạp 10 (Độ phức tạp mã hóa (0-10, mặc định: 10). Zero cho mã hóa nhanh nhất nhưng chất lượng thấp hơn, trong khi 10 cho chất lượng cao nhất nhưng mã hóa chậm hơn) và thời gian trễ tối đa là 10ms ( Độ trễ vùng chứa tối đa tính bằng mili giây (0-1000, mặc định: 1000)), vì vậy nếu bạn bỏ qua thời gian trong một bài hát, hiệu ứng cắt sẽ có thời lượng 10ms nên không thể nhận ra (thử với 1000 và nghe thời gian bỏ qua khác biệt với chuột). Bitrate là VBR theo mặc định. 320kbps hoạt động với tôi vì vậy là tùy chọn, hãy chơi với số này:
--bitrate N.nnn=> Tốc độ bit mục tiêu tính bằng kbit / giây (6-256 mỗi kênh)

Nhân tiện, mã hóa từ MP3 sang OPUS không phải là một ý tưởng hay, nó sẽ không nghe tốt hơn, thuật toán nén của chúng quá khác nhau. Nhưng từ FLAC hoặc WAV hoặc bất kỳ Định dạng âm thanh không mất dữ liệu nào khác , đó là một câu chuyện khác.

Lưu ý: Để mã hóa một tệp khác, chỉ cần nhấn Mũi tên Lên trong cùng một thiết bị đầu cuối để gọi lệnh cuối cùng và thay đổi tên của các tệp đầu vào và đầu ra.
Nếu bạn đang tìm kiếm một GUI ffmpeg / avconv, có lẽ TraGtor là thứ bạn cần.

Bạn cũng có thể kiểm tra sự khác biệt về quang phổ giữa các định dạng lossless và lossy ở tốc độ bit cao với Spek hoặc Audacity .


Nó không làm việc cho tôi. Tôi nhận được Error parsing input file: Hardvapour remix-.mp3Tôi đang sử dụng 16.04
Sarah Szabo

Câu hỏi là về mp3, không phải flac.
Tái lập Monica - M. Schröder

0
  1. Tìm đĩa CD (hoặc flac với CDEMU) có cùng nội dung với mp3.
  2. Ngay lập tức opus-toolsAudex.
  3. Mở Audex và thêm một hồ sơ mới gọi là Opus, thêm mẫu Lệnh;

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

và hậu tố opus

  1. hãy để nó rách
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.