사운드 파일을 Opus로 변환하는 방법


22

테스트를 위해 MP3 및 WAV 파일을 Opus로 변환하고 싶습니다.이 작업을 수행하는 단계는 무엇입니까?


1
@EvanCarroll 따라서 "테스트를 위해"라고 말하는 부분;)
Luis Alvarado

2
@EvanCarroll 이것은 달성하고자하는 것과 입력 자료의 품질에 달려 있습니다. 절대적인 오디오 애호가 솔루션을 찾고 있다면, 처음부터 Opus를 고려하고 싶지 않을 것입니다. 그것이 끔찍한 아이디어라고 말하는 것은 설명이 없을 때 끔찍한 진술입니다.
LiveWireBT

1
@LiveWireBT 설명이 없을 때 절대 오디오 애호가 솔루션을 찾고 있지 않다면 mpus를 opus로 인코딩하는 것은 끔찍한 생각이 아니라고 말합니다.
Evan Carroll

2
@EvanCarroll Opus는 음성을 전문적으로 지원하지만 MP3는 지원하지 않습니다. 즉 , 품질 저하없이 팟 캐스트 및 오디오 북의 크기를 크게 줄일 수 있습니다. 나는 그것이 얼마나 끔찍한 생각인지 알지 못한다.
Christian

3
@EvanCarroll "사용할 인코딩 모드를 결정하기위한 음성 또는 음악의 자동 감지" opus-codec.org . 물론 품질이 떨어질 수 있습니다. 그렇기 때문에 코덱이 손실됩니다. 당신은 이것이 결코 정당화 할 수 없다고 말했고 크기가 큰 문제, 이차적 중요성의 품질 및 무손실 소스가없는 좋은 예를 들었습니다.
Christian

답변:


23

기본적으로 opus-tools 와 함께 제공되는 오디오 변환기 는 오디오를 원시, 웨이브 또는 AIFF 형식으로 변환 할 수 있습니다. 최소 구문은 기본 설정을 사용합니다.

opusenc input.wav output.opus

옵션을 사용하여 기본 96kbps로 더 나은 비트 전송률을 추가 할 수 있습니다 --bitrate N.nnn(모든 옵션에 대해서는 opusenc 맨 페이지 참조).

mp3를 "즉석에서"변환합니다. 즉, 임시 파일을 만들지 않고 다음과 같이 avconv에서 opusenc로 출력을 파이프 할 수 있습니다.

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

"opusenc"를 어디서 구할 수 있습니까?
shevy

1
@shevy : opus-tools 와 함께 제공 됩니다.
Takkat

@shevy : $ sudo apt install opus-tools
Jose Barakat

1
여러 flac 파일에 대해 이렇게하려면 : for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done( 이것은 스테레오 파일에 충분하기 때문에 140을 비트 전송률로 선택했습니다 .
Joschua

11

Ubuntu 14.04 및 Debian 8 libav-tools은 리포지토리에 버전 9가 포함 되어 있으며 패키지를 통해 Opus를 기본적으로 지원합니다 libopus0.

예 1 : 오디오 파일을 opus로 다시 인코딩

버전 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:aa입력 파일에서 모든 오디오 스트림 ( )을 선택 합니다 0. https://libav.org/avconv.html#Advanced-options-map 에서 자세히 알아보십시오.
  • -codec:a opus오디오 스트림의 작동 인코더를 선택합니다 ( a). 더에 대한 읽기 -codechttps://libav.org/avconv.html#Main-options .
  • -b:a 100k오디오의 비트 전송률을 100 킬로 비트 / 초로 설정합니다. 더에 대한 읽기 -bhttps://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 : 비디오 파일에서 오디오를 잡고 opus로 인코딩

첫 번째 입력 ( -map 0:1) 의 두 번째 스트림 ( 오디오 스트림)을 가져옵니다. 가변 비트 전송률을 사용하여 100 kbit / s의 libopus로 인코딩하십시오.

$ 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
우분투 14.04에서 완벽하게 작동합니다! 무엇을 설명 할 -map 0:a수 있습니까? (그리고 아마도 전체 라인을 자세히 설명 하시겠습니까?)
425nesp

@ piña 나는 인수에 대한 설명과 추가 예제로 답변을 업데이트했습니다.
Daniel Jonsson

5

12.04의 작품

오푸스 오디오 인코더 및 디코더를 컴파일 : 내가 지금까지 발견 (정밀) 12.04에, 그러나, 오푸스 코덱 및 도구를 설치와 의존성 문제가있다, 그래서 가장 좋은 방법은 아주 최근에 사용할 수있게 한 하나 여기에 언급 된 바와 같이 , ( 컴파일 링 안내서 에 나열된) 의 구성 옵션 ffmpeg에 추가 --enable-opus하여 opus 지원으로 빌드하십시오 .ffmpeg

ffmpeg우분투에서 더 이상 사용되지 않는다는 것을 알고 Libav있지만 컴파일은 완전히 작동하는 opus 인코더 / 디코더를 ffmpeg자체적으로 통합하는 좋은 방법 입니다. 그런 다음 파일을 사용하여 파일을 변환하고 (먼저 wav로) 변환 할 수 있습니다 .opus. libopus 및 ffmpeg와 함께 설치된 설명서에는 파일을 변환하는 데 사용할 수있는 모든 옵션이 나와 있습니다.

ffmpeg컴파일 후 파일을 변환 할 때 opus 코덱을 지정 -acodec libopus하거나 ffmpeg사용하지 않아야합니다.

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
    
  • 지적해야 할 한 가지 문제가 있습니다 .git 빌드가 원하는 것 같고 yasm-1.2사용할 수 없으므로 공식 사이트 에서 소스를 컴파일해야 하지만 간단합니다. 단지의 설치된 버전을 제거 yasm한 후, 다운로드 한 압축 파일을 압축을 풀 cd폴더, 실행에 ./configure && make다음과 sudo checkinstall. 다른 빌드에 이전 버전이 필요한 경우이 버전을 제거하고 리포지토리 버전을 설치할 수 있습니다.

  • 어떤 기존 제거 할 필요가 libav, ffmpeg, x264, libvpx, 또는 fdk-aac패키지는 컴파일을 시작하기 전에.

  • 이다 중요한 컴파일하고 설치하는 것이 x264, fdk-aac, libvpxopus빌드하기 전에 ffmpeg해당 라이브러리 빌드에 사용 될 것이다.

  • 컴파일 --enable-opus을 실행할 때 구성 옵션 에 추가 하는 것을 잊지 마십시오 ffmpeg.

  • 컴파일 된 opus의 버전은 1.1alpha이므로 새 버전이 출시되면 나중에 opus 라이브러리와 ffmpeg를 다시 컴파일해야 할 수도 있습니다.

  • ffplay작성한 opus 파일을 재생하는 데 사용할 수 있습니다 .


ffmpeg는 대체 대상이 될 수있는 나쁜 솔루션입니다.
Evan Carroll

2
@EvanCarroll이게 무슨 뜻입니까? ffmpeg는 여전히 libav와 마찬가지로 훌륭합니다. 이것은 단지 포크입니다.

1
좋은 답변이며 Yasm 요구 사항을 상기시켜 주셔서 감사합니다. x264는 마지막 푸시시 최소 버전을 1.2.0으로 늘 렸습니다. Yasm 지침으로 가이드가 업데이트되었습니다.
llogan

@Mik 나는 독립형 인코더가 더 나은 결과를 줄 것이라고 말하고 싶다고 생각합니다.
LiveWireBT

ffmpeg를 컴파일하는 지침을 따를 때 "opus not found"오류가 있다고 언급 한 사람들이 있습니다. 우분투 12.04에서 동일한 문제가 발생했으며 나중에 PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig"끝에 슬래시가 필요하다는 것을 알았습니다.

3

그것이 내가하는 방법입니다.

  • 먼저 오디오 파일이있는 동일한 디렉토리에서 터미널을 엽니 다.
  • 그런 다음이 명령을 입력하십시오.
$ opusenc --bitrate 320 --max-delay 10 "18-Soul Asylum-런 어웨이 트레인 (앨범 버전) .flac" "18-Soul Asylum-런 어웨이 트레인 (앨범 버전) .opus"

편집하다:

오디오 애호가의 경우 :

$ opusenc --bitrate 510 --max-delay 10 "18-Soul Asylum-런 어웨이 트레인 (앨범 버전) .flac" "18-Soul Asylum-런 어웨이 트레인 (앨범 버전) .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)

매우 빠릅니다! 복잡도 10 (8 : 인코딩 계산 복잡도 (0-10, 기본값 : 10))으로 8 초 미만. 0은 인코딩이 가장 빠르지 만 품질은 낮지 만 10은 가장 품질은 좋지만 인코딩은 느림) 및 최대 지연 시간 10ms ( 최대 컨테이너 지연 시간 (밀리 초 (0-1000, 기본값 : 1000))으로 노래에서 시간을 건너 뛰면 클리핑 효과의 지속 시간이 10ms이므로 인식 할 수 없습니다 (1000으로 시도하고 쥐). 비트 전송률은 기본적으로 VBR입니다. 320kbps가 나를 위해 일했기 때문에 선택 사항입니다.이 숫자로 재생하십시오 :
--bitrate N.nnn=> kbit / sec의 대상 비트 레이트 (채널 당 6-256)

그건 그렇고, MP3에서 OPUS로 인코딩하는 것은 좋은 생각이 아니며, 더 잘 들리지 않을 것이며, 압축 알고리즘은 너무 다릅니다. 그러나 FLAC 또는 WAV 또는 기타 무손실 오디오 형식의 경우 이는 또 다른 이야기입니다.

참고 : 다른 파일을 인코딩하려면 동일한 터미널에서 위쪽 화살표를 눌러 마지막 명령을 호출하고 입력 및 출력 파일의 이름을 변경하십시오.
ffmpeg / avconv GUI를 찾고 있다면 TraGtor 가 필요할 것입니다.

Spek 또는 Audacity를 사용하여 높은 비트 전송률에서 Lossless 및 Lossy 형식 간의 스펙트럼 차이를 확인할 수도 있습니다 .


그것은 나를 위해 작동하지 않았다. 내가 얻을 Error parsing input file: Hardvapour remix-.mp3내가 16.04 사용하고 있습니다
사라 자보

문제는 flac가 아니라 mp3에 관한 것입니다.
복 직원 모니카

0
  1. mp3와 동일한 내용의 CD (또는 CDEMU가있는 flac)를 찾으십시오.
  2. 설치 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.