ffmpeg를 사용하여 가청 파일을 변환하는 방법


13

Homebrew에서 ffmpeg v2.8.1을 실행 중이며 Audible 파일 을 변환하려고하는데 누락 된 트릭이 있습니다.

이 명령은이 오류 출력을 생성합니다.

ffmpeg -activation_bytes 1CEB00DA -i Volume1.aax -vn -c:a copy output.mp4

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] [aax] file checksum == d72f1f04e3c73d0bc68e742db1bc69b58dc3a500
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] [aax] mismatch in checksums!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc9a4010600] error reading header
Volume1.aax: Invalid data found when processing input

파일이 iTunes에서 재생되기 때문에 파일이 정상임을 알고 있습니다. 파일 이미지 / 표지 아트도 포함되어 있습니다.

ffmpeg 문서에서 Audible AAX 파일이 M4B 파일 로 암호화되어 있으며 4 바이트 활성화 비밀을 지정하여 해독 할 수 있음을 읽었습니다 .

나는 아마도 잘못된 것이 있다고 생각합니다. 그렇지 않다면 어떻게 그 비밀을 찾습니까?


답변:


31

먼저 다음 명령을 실행하십시오.

brew install chromedriver ffmpeg
sudo easy_install pip
pip install selenium requests
git clone https://github.com/inAudible-NG/audible-activator
cd audible-activator
sed -i '' 's,chromedriver_path = "./chromedriver",chromedriver_path = "/usr/local/bin/chromedriver",' audible-activator.py
./audible-activator.py

그런 다음 Audible 사용자 이름과 비밀번호를 입력하고 8 자의 활성화 키가 인쇄 될 때까지 잠시 기다리십시오.

변수 sed값을 변경 하는 명령을 실행하지 않으면 경로 나 디렉토리 에 있더라도 오류가 발생 합니다 . 귀하의 경우 GNU입니다 교체 와 함께 .chromedriver_path./audible-activator.py'chromedriver' executable needs to be in PATHchromedriveraudible-activatorsedsedsed -i ''sed -i

그 후 다음과 같은 명령을 실행하십시오.

ffmpeg -activation_bytes youractivationkey -i input.aax -c copy output.m4b

(교체 LiWang와 마커스의 erronius에 의한 의견에 따라 위의 나는 명령을 편집 output.m4a;mv output.m4{a,b}하여 output.m4b장착하는 데 -vn -c:v copy-c copy.)

파일 대신 파일 ffmpeg과 함께 위 명령 을 사용하려고하면 다음 과 같은 오류가 발생 합니다. 대신 Audible에서 책을 다운로드하려면, 책 을 다운로드하기위한보기의 "오디오 품질"드롭 다운에서 "향상된"을 선택하십시오.aaaaxOption activation_bytes not foundaaxaa

aax파일은 암호화 된 mp4/ m4a/ m4b파일이므로 ffmpeg위 의 명령은 오디오를 다시 인코딩하지 않으며 챕터와 같은 메타 데이터를 유지합니다. mp4, m4a,와 m4b는 MPEG-4 파트 14 컨테이너 형식의 대체 파일 이름 확장자입니다. m4am4b확장은 원래 애플이 소개되었다. 사이 한 가지 차이점 m4am4b확장 아이튠즈에서 이전 재생 위치를 기억 할 수있는 옵션이가와 파일을 기본적으로 사용하도록 설정되어 있다는 것입니다 m4b확장 만이 아니라와 파일 m4a확장자. iTunes는 m4b기본적으로 오디오 북 아래 에 확장자 가있는 파일도 표시합니다 .

이전 버전의 iTunes에는 이전 재생 위치를 기억할 수있는 확인란이 없었지만 m4b확장명 이있는 파일에 대해 이전 재생 위치를 기억하는 것이 항상 활성화 되어 있으므로 Wikipedia에서도 여전히 " .m4a오디오 파일은"북마크 "할 수 없습니다 ( .m4b확장 파일도 가능 하지만 " (그런 점에서 이전 버전의 iTunes처럼 동작하는 다른 미디어 플레이어가 여전히 있는지는 모르겠습니다.)

m4b확장자가 UTI 인 경우 com.apple.protected-mpeg-4-audioFinder는 확장자가 있는 모든 m4b파일에 m4b복사 방지 기능이 없더라도 모든 파일 의 종류 를 "보호 된 MPEG-4 오디오"로 표시합니다 .


.aax파일을 사용 하고 있는데 오류가 발생했습니다 : Unrecognized option 'activation_bytes'.. 어떤 아이디어? 작년에 Audible의 형식이 변경 되었습니까?
lollercoaster

3
로 변환 *.m4a한 다음 이름 을 바꾸어야하는 이유 는 *.m4b무엇입니까? 왜 안 해 ffmpeg -activation_bytes youractivationkey -i input.aax -vn -c:a copy output.m4b? : ?
Li Wang

1
@LiWang 이전 버전의 ffmpeg에서 오류가 발생했지만 더 이상 그렇지 않은 것 같습니다.
nisetama

@ user4669748 알겠습니다. 확인 감사합니다!
Li Wang

파이썬을 작동시키기 위해이 명령을 사용해야했지만 이것이 완료된 후! ln -sf /usr/bin/python2.7 / usr / local / bin / python2
Sethmr

7

이것은 당신에게 당신의 활성화 비밀을 얻을 것이다 :

https://github.com/inAudible-NG/audible-activator


1
이 스크립트 를 사용 하여 실제 변환을 수행했습니다. 설치해야한다는 지적 가치 또한 그것의 seleniumrequests를 통해 pipeasy_install또한으로 다운로드하고 추출 chromedriver audible-activator작업에 대한 디렉토리. 이 정보는 audible-activator의 README 에서 제공 되지만 앞쪽에서 아는 것이 유용합니다 :)
intuited

감사합니다, @intuited; 그 대본은 금입니다. macOS에서 GNU grep ( ggrep와 함께 설치됨 brew install grep) 을 사용하기 위해 약간의 조정이 필요 했지만 그 후 큰 일을했습니다.
ecmanaut

6

나는 user4669748의 대답을 시도하고 주목할만한 몇 가지 사항을 발견했으며 나에게 도움이되는 수정 사항을 발견했습니다.

  1. audible-activator.py에는 Python 2.7이 필요합니다. 파이썬 3에서는 실패합니다.
  2. Chrome 창이 시작되면 화면에 팝업 창이 나타나고 GUI 활동 및 Audible에 성공적으로 로그인하기 시작합니다.
  3. 로그인 후 곧 Waiting for px.owneriq.net하단의 상태 표시 줄에 브라우저 활동이 중단 된 것처럼 보입니다 .
  4. 5 분 후 TimeoutException이 발생했습니다.

    [*] Player ID is 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
    Traceback (most recent call last):
      File "./audible-activator.py", line 151, in <module>
        fetch_activation_bytes(username, password, options)
      File "./audible-activator.py", line 74, in fetch_activation_bytes
        search_box.submit()
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 88, in submit
        self._execute(Command.SUBMIT_ELEMENT)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 494, in _execute
        return self._parent.execute(command, params)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
        self.error_handler.check_response(response)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.TimeoutException: Message: timeout: cannot determine loading status
    from timeout: Timed out receiving message from renderer: -0.222
      (Session info: chrome=54.0.2840.98)
      (Driver info: chromedriver=2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1),platform=Mac OS X 10.12.0 x86_64)
    

이것에, 나는 붙어 있었다. 그러나 px.owneriq.net일종의 광고 또는 추적 사이트라고 생각할 /etc/hosts때 잘못된 IP 주소를 추가하여 "일시적으로 비활성화"하려고했습니다.

0.0.0.0 px.owneriq.net

(이는 친구가 브라우저에서 광고를 중지하도록 제안한 전술이었습니다.)

에 추가 한 후 /etc/hosts프로그램을 다시 실행하십시오. 30 초 만에 완료되었습니다.

4 바이트 활성화 키가 화면에 인쇄되었으며 user4669748의 답변에 설명 된대로 ffmpeg와 완벽하게 작동했습니다.

그런 다음 /etc/hosts원래 내용으로 복원 했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.