Bagaimana cara menyandikan audio dengan Opus codec?

30

Codec audio Opus sepertinya adalah yang terbaik untuk mengompresi audio. Baru-baru ini menjadi didukung dalam pemain ffmpeg dan VLC terbaru. Namun, tidak ada dokumentasi yang dapat saya temukan tentang bagaimana sebenarnya menyandikan media dengannya. Bisakah seseorang mengarahkan saya ke dokumen tersebut, lebih disukai dengan spesifik ke flag dan penggunaan ffmpeg? Saya memiliki banyak buku audio yang menghabiskan terlalu banyak ruang dan Opus terlihat seperti format yang sempurna untuk menyimpannya.

MrDrMcCoy
sumber
1
Anda tidak menyebutkan OS Anda.
Logan

Jawaban:

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

Bitrate dapat diberikan seperti -b:a 96Kuntuk 96 kBit / s.

The dokumentasi ffmpeg memiliki daftar pilihan dan deskripsi untuk libopus. Di sini Anda dapat mengatur -vbropsi atau yang berbeda -compression_level.

Pastikan Anda mengkompilasi ffmpeg dengan --enable-libopus!

Adam Chance
sumber
Ini bagus! Saya telah menemukan cara untuk menyandikan dengan ffmpeg, tetapi tidak tahu tentang flag -vbr dan --compression_level. Ini persis apa yang saya cari!
MrDrMcCoy
6
Ini membantu saya. NB, vbr ondan compression_level 10merupakan standar dan mungkin dapat dihilangkan. ffmpeg.org/ffmpeg-codecs.html#Opsi- Pemetaan
Joshua Huber
1
Memang, ini adalah nilai default, dan dalam kebanyakan kasus mereka tidak perlu dimodifikasi. Perhatikan juga bitrate dalam bit / s, bukan kbits / s biasa. Bitrate default adalah 96000 (96 kbits / s), yang (tentu saja) nilai yang baik. Contoh perintah untuk meringkas:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double
Berikut adalah cara menggunakan parameter 'aplikasi' -application voip. Sebagai pengguna ffmpeg baru, saya berjuang sedikit untuk menemukan sintaks yang tepat.
tuxayo
15
  1. Unduh alat-alat Opus

  2. Menyandi:
    opusenc --bitrate 64 What_A_Feeling.wav What_A_Feeling_64.opus

  3. Decode: (untuk bermain di pemutar media apa pun, berguna jika pemutar media Anda belum mendukung opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling adalah nama lagu)

Opsi terperinci ditampilkan saat berjalan opusencdengan sendirinya:

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
Alexey Eromenko
sumber
Terima kasih, tetapi saya berharap untuk sesuatu yang sedikit lebih detail. Apakah ada opsi laju bit variabel? Bendera lain apa yang dapat saya lewati untuk mengoptimalkan aliran audio?
MrDrMcCoy
1
@nakedhitman --vbrPilihannya adalah default. Lihat halaman manual untuk membuka. Anda juga dapat mengkodekan dengan ffmpeg tetapi harus dikompilasi --enable-libopussetelah menginstal libopus .
Logan
Untuk mendapatkan ide (bukan untuk konversi batch), versi online seperti ini mungkin bisa membantu. Jika rencana seseorang adalah mengonversi seluruh koleksi, opusinfo (juga bagian dari opus-tools) mungkin memberi tahu, apakah alat pengkodean yang dipilih berkinerja baik.
Rainer Rillke
3

Perintah-perintah Opus Codec terbaik dalam DOS / Windows Command adalah:

Untuk lib 1.3, ukuran file terkecil (kualitas kaset):

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

Kamu akan:

a- pada 24kbit masih memiliki output sonik 16kHz (32kHz stereo), pada ukuran yang sangat kecil. Yang lebih kecil, dan output Sonic akan turun ke 11kHz

b- Meningkatkan framesize (menyimpan beberapa bit data (sekitar 6%), tanpa kehilangan kualitas)

c- Buang info TAG yang tidak perlu, dan tutupi gambar yang hanya akan memperbesar ukuran file.

Untuk lib 1.3, streaming (mendekati kualitas CD) menggunakan '--bitrate 52' alih-alih '24'.

Default dalam 1.2 adalah 48kbits, tetapi menggunakan 52 dalam 1.3, dengan 'framesize' diatur ke 40, ukuran file Anda sama, tetapi ada artefak yang jauh lebih sedikit terdengar.

52 kbits dengan framesize 40, kualitasnya bisa dibilang sama dengan 160kbits MP3, ukurannya kurang dari 1/3; sementara 48kbits pada 1.2 sama dengan 128kbits MP3, atau hanya 2,5x lebih kecil.

Untuk kualitas yang hampir identik, Anda membutuhkan antara 80 hingga 96 kbits. Saya hampir tidak pernah menggunakan ini, karena saya ingin audio saya sekecil mungkin.

Lebih dari 96kbits, hanya baik untuk mengedit, dan orang tidak dapat mendengar perbedaan antara file asli dan file yang dikodekan Opus.

Yang sedang berkata, saya belum tahu bagaimana semuanya bekerja di Linux.

ProDigit
sumber
Saya mendapat kesalahan saat mencoba yang satu di kedua linux dan jendela: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. Versi ffmpeg adalah 4.0.2
sukhmel