ฉันจะใช้ ffmpeg เพื่อแปลงไฟล์เสียงได้อย่างไร


13

ฉันใช้ ffmpeg v2.8.1 จาก Homebrew และพยายามแปลงไฟล์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 ไบต์

ฉันคิดว่า - อาจไม่ถูกต้อง - สิ่งที่ให้มาก็โอเค ถ้าไม่วิธีหนึ่งจะพบความลับที่


ดูเพิ่มเติมที่github.com/KrumpetPirate/AAXtoMP3
Arto Bendiken

คำตอบ:


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 และรหัสผ่านของคุณแล้วรอสักครู่เพื่อให้พิมพ์รหัสเปิดใช้งานอักขระแปดตัว

หากคุณไม่ได้รันsedคำสั่งที่เปลี่ยนค่าของchromedriver_pathตัวแปร./audible-activator.pyผลลัพธ์จะเกิดข้อผิดพลาดเช่น'chromedriver' executable needs to be in PATHแม้ว่าchromedriverจะอยู่ในพา ธ หรือในaudible-activatorไดเรกทอรี หากคุณsedเป็น GNU sedแทนที่ด้วยsed -i ''sed -i

หลังจากนั้นเรียกใช้คำสั่งเช่นนี้:

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

(ฉันแก้ไขคำสั่งด้านบนตามความคิดเห็นของ LiWang และ marcus erronius เพื่อแทนที่output.m4a;mv output.m4{a,b}ด้วยoutput.m4bและแทนที่-vn -c:v copyด้วย-c copy)

ถ้าคุณพยายามที่จะใช้ffmpegคำสั่งดังกล่าวกับaaไฟล์แทนแฟ้มผลในข้อผิดพลาดเหมือนaax Option activation_bytes not foundหากต้องการดาวน์โหลดหนังสือจาก Audible aaxแทนaaให้เลือก "ขั้นสูง" จากเมนูแบบเลื่อนลง "คุณภาพเสียง" ในมุมมองเพื่อดาวน์โหลดหนังสือ

aaxไฟล์ถูกเข้ารหัสmp4/ ไฟล์m4a/ m4bดังนั้นffmpegคำสั่งข้างต้นไม่ได้เข้ารหัสเสียงอีกครั้งและมันจะรักษาข้อมูลเมตาเช่นบท mp4, m4aและm4bเป็นนามสกุลไฟล์ทางเลือกสำหรับรูปแบบคอนเทนเนอร์ MPEG-4 ตอนที่ 14 ตอนแรกm4aและm4bส่วนขยายถูกนำมาใช้โดย Apple ข้อแตกต่างอย่างหนึ่งระหว่างm4aและm4bส่วนขยายคือตัวเลือกในการจดจำตำแหน่งการเล่นก่อนหน้าใน iTunes จะถูกเปิดใช้งานตามค่าเริ่มต้นสำหรับไฟล์ที่มีm4bนามสกุล แต่ไม่ใช่สำหรับไฟล์ที่มีm4aนามสกุล iTunes ยังแสดงไฟล์ที่มีm4bนามสกุลภายใต้หนังสือเสียงตามค่าเริ่มต้น

iTunes รุ่นเก่าไม่มีช่องทำเครื่องหมายเพื่อเปิดใช้งานการจดจำตำแหน่งการเล่นก่อนหน้านี้ แต่การจดจำตำแหน่งการเล่นก่อนหน้านั้นเปิดใช้งานเสมอสำหรับไฟล์ที่มีm4bนามสกุลดังนั้นแม้ Wikipedia ยังระบุอย่างไม่ถูกต้องว่า " .m4aไฟล์เสียงไม่สามารถ" คั่นหน้า " จุดรับฟังล่าสุด) ในขณะที่.m4bไฟล์นามสกุลสามารถ " (แม้ว่าฉันจะไม่รู้ว่ายังมีผู้เล่นสื่ออื่น ๆ ที่ทำตัวเหมือน iTunes รุ่นเก่าในแง่นั้นหรือไม่)

UTI สำหรับm4bส่วนขยายคือcom.apple.protected-mpeg-4-audioFinder และแสดงประเภทของm4bไฟล์ทั้งหมดว่า "audio MPEG-4 audio" แม้ว่าไฟล์ทั้งหมดที่มีm4bนามสกุลจะไม่มีการป้องกันการคัดลอก


ฉันใช้ไฟล์และได้รับข้อผิดพลาด:.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
ฉันใช้สคริปต์นี้เพื่อทำการแปลงจริง นอกจากนี้ยังเป็นที่น่าสังเกตว่าคุณต้องติดตั้งseleniumและrequestsผ่านpipหรือหรือeasy_installดาวน์โหลดและแยก Chromedriver ลงในaudible-activatorไดเรกทอรีเพื่อให้มันใช้งานได้ ข้อมูลนี้มีให้ในaudible-activatorREADME ของ แต่มันมีประโยชน์ที่จะรู้ล่วงหน้า :)
intuited

ขอบคุณ @intuited; สคริปต์นั้นเป็นทองคำ ต้องการปรับแต่งเบา ๆ เพื่อใช้ GNU grep (ที่ggrepติดตั้งด้วยbrew install grep) บน macos แต่ทำได้ดีมากหลังจากนั้น
ecmanaut

6

ฉันลองคำตอบของ user4669748 และพบว่ามีบางสิ่งที่ควรค่าแก่การสังเกตและค้นพบการแก้ไขที่ทำให้ฉันทำงานได้:

  1. audible-activator.py ต้องการ Python 2.7 มันล้มเหลวด้วย Python 3
  2. หลังจากเริ่มใช้งานหน้าต่าง Chrome จะปรากฏขึ้นบนหน้าจอและคุณจะเริ่มเห็นกิจกรรม GUI และเข้าสู่ระบบ Audible ได้สำเร็จ
  3. หลังจากเข้าสู่ระบบไม่นานกิจกรรมของเบราว์เซอร์ก็จะหยุดนิ่งและWaiting for px.owneriq.netจะปรากฏขึ้นอย่างต่อเนื่องในแถบสถานะด้านล่าง
  4. หลังจาก 5 นาทีฉันมีเวลาในการหมดเวลา:

    [*] 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 ไบต์ถูกพิมพ์ไปที่หน้าจอและทำงานอย่างสมบูรณ์แบบด้วย ffmpeg ดังที่อธิบายไว้ในคำตอบของผู้ใช้ 4669748

ฉันกลับคืน/etc/hostsสู่เนื้อหาดั้งเดิม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.