Làm thế nào để mã hóa âm thanh với Opus codec?


30

Bộ giải mã âm thanh Opus trông giống như thứ tốt nhất từng có để nén âm thanh. Nó gần đây đã được hỗ trợ trong các trình phát ffmpeg và VLC mới nhất. Tuy nhiên, không có tài liệu nào tôi có thể tìm thấy về cách thực sự mã hóa phương tiện với nó. Ai đó có thể vui lòng hướng dẫn tôi đến các tài liệu đã nói, tốt nhất là với các chi tiết cụ thể về cờ ffmpeg và cách sử dụng không? Tôi có rất nhiều audiobook đang chiếm quá nhiều không gian và Opus trông giống như định dạng hoàn hảo để giữ chúng trong đó.


1
Bạn đã không đề cập đến hệ điều hành của bạn.
llogan

Câu trả lời:


38
ffmpeg -i <input> -c:a libopus -b:a bitrate <output>

Tốc độ bit có thể được đưa ra như -b:a 96Kvới 96 kBit / s.

Các tài liệu ffmpeg có một danh sách các lựa chọn và giới thiệu cho libopus. Tại đây bạn có thể đặt -vbrtùy chọn hoặc khác -compression_level.

Hãy chắc chắn rằng bạn đã biên dịch ffmpeg với --enable-libopus!


Điều đó thật tuyệt! Tôi đã tìm ra cách mã hóa bằng ffmpeg, nhưng không biết về các cờ -vbr và --compression_level. Điều này thật đúng với gì mà tôi đã tìm kiếm!
MrDrMcCoy

6
Điều này đã giúp tôi. NB, vbr oncompression_level 10mặc định và có thể được bỏ qua. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber

1
Thật vậy, đây là những giá trị mặc định và trong hầu hết các trường hợp, chúng không phải sửa đổi. Ngoài ra, lưu ý rằng tốc độ bit được tính bằng bit / s, không phải là kbits / s thông thường. Tốc độ bit mặc định là 96000 (96 kbits / s), tất nhiên (có thể nói là) một giá trị tốt. Lệnh mẫu để tóm tắt:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double

Đây là cách sử dụng tham số 'ứng dụng' -application voip. Là một người dùng ffmpeg mới, tôi phải vật lộn một chút để tìm đúng cú pháp.
tuxayo

15
  1. Tải xuống công cụ Opus

  2. Mã hóa:
    opusenc --bitrate 64 What_A_Feeling.wav What_A_Feeling_64.opus

  3. Giải mã: (để phát trong bất kỳ trình phát đa phương tiện nào, hữu ích nếu trình phát đa phương tiện của bạn chưa hỗ trợ opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling là tên bài hát)

Tùy chọn chi tiết hiển thị khi tự chạy opusenc:

Usage: opusenc [options] input_file output_file.opus

Encodes input_file using Opus.
It can read the WAV, AIFF, FLAC, Ogg/FLAC, or raw files.

General options:
 -h, --help         This help
 -V, --version      Version information
 --quiet            Quiet mode

input_file can be:
  filename.wav      file
  -                 stdin

output_file can be:
  filename.opus     compressed file
  -                 stdout

Encoding options:
 --bitrate n.nnn    Target bitrate in kbit/sec (6-256/channel)
 --vbr              Use variable bitrate encoding (default)
 --cvbr             Use constrained variable bitrate encoding
 --hard-cbr         Use hard constant bitrate encoding
 --comp n           Encoding complexity (0-10, default: 10 (slowest))
 --framesize n      Maximum frame size in milliseconds
                      (2.5, 5, 10, 20, 40, 60, default: 20)
 --expect-loss      Percentage packet loss to expect (default: 0)
 --downmix-mono     Downmix to mono
 --downmix-stereo   Downmix to stereo (if >2 channels)
 --max-delay n      Maximum container delay in milliseconds
                      (0-1000, default: 1000)

Diagnostic options:
 --serial n         Forces a specific stream serial number
 --save-range file  Saves check values for every frame to a file
 --set-ctl-int x=y  Pass the encoder control x with value y (advanced)
                      Preface with s: to direct the ctl to multistream s
                      This may be used multiple times

Metadata options:
 --comment          Add the given string as an extra comment
                      This may be used multiple times
 --artist           Author of this track
 --title            Title for this track
 --album            Album or collection this track belongs to
 --date             Date for this track
 --genre            Genre for this track
 --picture          Album art for this track
                      More than one --picture option can be specified.
                      Either a FILENAME for the picture file or a more
                      complete SPECIFICATION form can be used. The
                      SPECIFICATION is a string whose parts are
                      separated by | (pipe) characters. Some parts may
                      be left empty to invoke default values. A
                      FILENAME is just shorthand for "||||FILENAME".
                      The format of SPECIFICATION is

                      [TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHT
                      xDEPTH[/COLORS]]|FILENAME

                      TYPE is an optional number from one of:
                      0: Other
                      1: 32x32 pixel 'file icon' (PNG only)
                      2: Other file icon
                      3: Cover (front)
                      4: Cover (back)
                      5: Leaflet page
                      6: Media (e.g., label side of a CD)
                      7: Lead artist/lead performer/soloist
                      8: Artist/performer
                      9: Conductor
                      10: Band/Orchestra
                      11: Composer
                      12: Lyricist/text writer
                      13: Recording location
                      14: During recording
                      15: During performance
                      16: Movie/video screen capture
                      17: A bright colored fish
                      18: Illustration
                      19: Band/artist logotype
                      20: Publisher/studio logotype

                      The default is 3 (front cover). There may only be
                      one picture each of type 1 and 2 in a file.

                      MIME-TYPE is optional. If left blank, it will be
                      detected from the file. For best compatibility
                      with players, use pictures with a MIME-TYPE of
                      image/jpeg or image/png. The MIME-TYPE can also
                      be --> to mean that FILENAME is actually a URL to
                      an image, though this use is discouraged. The
                      file at the URL will not be fetched. The URL
                      itself is stored in the metadata.

                      DESCRIPTION is optional. The default is an empty
                      string.

                      The next part specifies the resolution and color
                      information. If the MIME-TYPE is image/jpeg,
                      image/png, or image/gif, you can usually leave
                      this empty and they can be detected from the
                      file. Otherwise, you must specify the width in
                      pixels, height in pixels, and color depth in
                      bits-per-pixel. If the image has indexed colors
                      you should also specify the number of colors
                      used. If possible, these are checked against the
                      file for accuracy.

                      FILENAME is the path to the picture file to be
                      imported, or the URL if the MIME-TYPE is -->.
 --padding n        Extra bytes to reserve for metadata (default: 512)
 --discard-comments Don't keep metadata when transcoding
 --discard-pictures Don't keep pictures when transcoding

Input options:
 --raw              Raw input
 --raw-bits n       Set bits/sample for raw input (default: 16)
 --raw-rate n       Set sampling rate for raw input (default: 48000)
 --raw-chan n       Set number of channels for raw input (default: 2)
 --raw-endianness n 1 for bigendian, 0 for little (defaults to 0)
 --ignorelength     Always ignore the datalength in Wave headers

Cảm ơn, nhưng tôi đã hy vọng cho một cái gì đó chi tiết hơn một chút. Có các tùy chọn tốc độ bit thay đổi? Những lá cờ nào khác tôi có thể vượt qua để tối ưu hóa luồng âm thanh?
MrDrMcCoy

1
@nakenhitman --vbrTùy chọn này là mặc định. Xem trang người đàn ông cho opusenc. Bạn cũng có thể mã hóa bằng ffmpeg nhưng nó cần được biên dịch --enable-libopussau khi cài đặt libopus .
llogan

Để có được một ý tưởng (không phải cho chuyển đổi hàng loạt), một phiên bản trực tuyến như thế này có thể hữu ích. Trong trường hợp kế hoạch của một người là chuyển đổi toàn bộ bộ sưu tập, opusinfo (cũng là một phần của opus-tools) có thể cho biết liệu công cụ mã hóa được chọn có hoạt động tốt hay không.
Rainer Rillke

3

Các lệnh Opus Codec tốt nhất trong DOS / Windows Command sẽ là:

Đối với lib 1.3, kích thước tệp nhỏ nhất (chất lượng băng):

Opusenc a.wav a.opus --bitrate 24 --framesize 40 --discard-comments --discard-pictures

Bạn sẽ:

a- ở mức 24kbit vẫn có đầu ra âm 16kHz (âm thanh nổi 32kHz), trên kích thước siêu nhỏ. Bất kỳ nhỏ hơn và đầu ra Sonic sẽ giảm xuống 11kHz

b- Tăng kích thước khung hình (lưu một vài bit dữ liệu (khoảng 6%), mà không làm giảm chất lượng)

c- Loại bỏ thông tin TAG không cần thiết và ảnh bìa sẽ chỉ phóng to kích thước tệp.

Đối với lib 1.3, phát trực tuyến (gần chất lượng CD) sử dụng '--bitrate 52' thay vì '24'.

Mặc định trong 1.2 là 48kbit, nhưng sử dụng 52 trong 1.3, với 'framesize' được đặt thành 40, kích thước tệp của bạn bằng nhau, nhưng có rất ít tạo tác có thể nghe được.

52 kbits với khung hình 40, có chất lượng tương đương với 160kbit MP3, với kích thước nhỏ hơn 1/3; trong khi 48kbit trên 1,2 bằng 128kbits MP3 hoặc kích thước nhỏ hơn 2,5 lần.

Để có chất lượng gần giống nhau, bạn sẽ cần từ 80 đến 96kbit. Tôi hầu như không bao giờ sử dụng điều này, vì tôi muốn âm thanh của tôi nhỏ nhất có thể.

Hơn 96kbit, chỉ tốt cho chỉnh sửa và người ta không thể nghe rõ sự khác biệt giữa tệp gốc và tệp được mã hóa Opus.

Điều đó đang được nói, tôi chưa biết làm thế nào tất cả hoạt động trong Linux.


Tôi đã gặp lỗi khi thử lỗi đó trên cả linux và windows : Unrecognized option '-framesize'. Error splitting the argument list: Option not found. phiên bản ffmpeg là 4.0.2
sukhmel
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.