मैं श्रव्य फ़ाइलों को परिवर्तित करने के लिए ffmpeg का उपयोग कैसे करूं


13

मैं ffmpeg v2.8.1 को Homebrew से चला रहा हूं, और श्रव्य फाइलों को बदलने की कोशिश कर रहा हूं, लेकिन कुछ चाल है जो मुझे याद नहीं है।

यह आदेश इस त्रुटि आउटपुट का उत्पादन करता है।

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

मुझे पता है कि फ़ाइल ठीक है, क्योंकि यह आईट्यून्स में खेलता है। मेरे पास फाइल इमेज / कवर आर्ट है और साथ ही इसमें एम्बेडेड है,

Ffmpeg डॉक्स से, मैंने पढ़ा कि श्रव्य 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

फिर अपने श्रव्य उपयोगकर्ता नाम और पासवर्ड दर्ज करें और आठ वर्ण सक्रियकरण कुंजी के प्रिंट होने के लिए थोड़ी देर प्रतीक्षा करें।

यदि आप चर sedके मान को परिवर्तित करने वाली कमांड नहीं चलाते हैं chromedriver_path, तो ./audible-activator.pyपरिणाम में त्रुटि होती है, 'chromedriver' executable needs to be in PATHभले ही chromedriverवह पथ पर हो या audible-activatorनिर्देशिका में हो। यदि आपका sedGNU है 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। के aaxबजाय ऑडिबल से पुस्तक डाउनलोड करने के लिए aa, पुस्तक डाउनलोड करने के लिए दृश्य में "ऑडियो गुणवत्ता" ड्रॉपडाउन से "एन्हांस्ड" चुनें।

aaxफ़ाइलें एन्क्रिप्टेड mp4/ m4a/ m4bफ़ाइलें हैं, इसलिए ffmpegऊपर दिए गए आदेश ऑडियो को फिर से एनकोड नहीं करते हैं और यह अध्याय जैसे मेटाडेटा को संरक्षित करता है। mp4, m4aऔर m4bMPEG-4 भाग 14 कंटेनर प्रारूप के लिए वैकल्पिक फ़ाइल नाम एक्सटेंशन हैं। m4aऔर m4bएक्सटेंशन मूल रूप से एप्पल द्वारा शुरू किए गए थे। m4aऔर m4bएक्सटेंशन के बीच एक अंतर यह है कि आइट्यून्स में पिछली प्लेबैक स्थिति को याद रखने का विकल्प डिफ़ॉल्ट रूप से फ़ाइलों के लिए सक्षम होता है m4bएक्सटेंशन के साथ नहीं बल्कि एक्सटेंशन वाली फाइलों के लिए m4a। आइट्यून्स m4bडिफ़ॉल्ट रूप से ऑडियोबुक के तहत एक्सटेंशन के साथ फाइल भी प्रदर्शित करता है ।

ITunes के पुराने संस्करणों में पिछली प्लेबैक स्थिति को याद रखने में सक्षम करने के लिए चेकबॉक्स नहीं था, लेकिन पिछली प्लेबैक स्थिति को याद रखना हमेशा एक m4bएक्सटेंशन वाली फाइलों के लिए सक्षम था , इसलिए विकिपीडिया अभी भी गलत तरीके से बताता है कि " .m4aऑडियो फ़ाइल" बुकमार्क नहीं कर सकता है (याद रखें) अंतिम सुनने का स्थान), जबकि .m4bएक्सटेंशन फाइलें हो सकती हैं। " (हालांकि मुझे नहीं पता कि क्या अभी भी अन्य मीडिया खिलाड़ी हैं जो उस संबंध में आईट्यून्स के पुराने संस्करणों की तरह व्यवहार करते हैं।)

m4bएक्सटेंशन के लिए यूटीआई है com.apple.protected-mpeg-4-audioऔर फाइंडर m4b"संरक्षित एमपीईजी -4 ऑडियो" के रूप में सभी फाइलों की तरह दिखाता है, हालांकि m4bएक्सटेंशन वाली सभी फाइलों में कॉपी सुरक्षा नहीं है।


मैं .aaxफ़ाइलों का उपयोग कर रहा हूं और त्रुटि प्राप्त कर रहा हूं Unrecognized option 'activation_bytes'.:। कोई विचार? क्या पिछले वर्ष में श्रव्य ने अपना प्रारूप बदल दिया है?
लॉरेंकोस्टर

3
के *.m4aरूप में परिवर्तित करने और फिर नाम बदलने का कोई कारण *.m4b? क्यों न करें ffmpeg -activation_bytes youractivationkey -i input.aax -vn -c:a copy output.m4b:?
ली वांग

1
@LiWang यह ffmpeg के पुराने संस्करणों के साथ त्रुटि के कारण हुआ, लेकिन अब ऐसा प्रतीत नहीं होता है।
निसेतमा

@ user4669748 मैं देख रहा हूं। पुष्टि के लिए धन्यवाद!
ली वांग

मुझे इस आदेश का उपयोग अजगर को काम करने के लिए करना था, लेकिन इसके बाद यह सही हो गया! ln -sf /usr/bin/python2.7 / usr / स्थानीय / बिन /
python2

7

यह आपको आपकी सक्रियता गुप्त कर देगा:

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


1
मैंने इस स्क्रिप्ट का उपयोग वास्तविक रूपांतरण करने के लिए किया है। यह भी ध्यान देने योग्य आप स्थापित करने के लिए है कि लायक है seleniumऔर requestsके माध्यम से pipया easy_installऔर भी में डाउनलोड करने और निकालने chromedriver audible-activatorकाम करने के लिए इसके लिए निर्देशिका। यह जानकारी audible-activatorREADME में प्रदान की गई है, लेकिन यह सामने जानने के लिए उपयोगी है :)
अंतर्निर्मित

धन्यवाद, @intuited; वह लिपि स्वर्ण है। मैकोस पर GNU grep (के ggrepसाथ स्थापित brew install grep) का उपयोग करने के लिए लाइट ट्विकिंग की आवश्यकता थी, लेकिन उसके बाद बहुत अच्छा काम किया।
23

6

मैंने user4669748 के उत्तर की कोशिश की, और ध्यान देने योग्य कुछ चीजों में भाग गया, और एक निश्चितता की खोज की: चीजों को इसके लिए काम करना पड़ा:

  1. श्रव्य-निष्क्रियकर्ता थिअम को पायथन 2.7 की आवश्यकता होती है; यह पायथन 3 के साथ विफल हो जाता है।
  2. इसे शुरू करने के बाद, स्क्रीन पर क्रोम विंडो पॉप-अप हो जाती है और आप GUI गतिविधि, और ऑडिबल के लिए एक सफल लॉगिन देखना शुरू करते हैं।
  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एक अमान्य आईपी पते के साथ जोड़कर इसे "अस्थायी रूप से अक्षम" करने का प्रयास किया , आदि।

0.0.0.0 px.owneriq.net

(यह एक मित्र द्वारा ब्राउज़र में विज्ञापन रोकने के लिए सुझाई गई रणनीति थी।)

इसके अलावा इस /etc/hostsकार्यक्रम को फिर से चलाएं। यह 30 सेकंड में पूरा करने के लिए दौड़ा।

स्क्रीन पर एक 4-बाइट सक्रियण कुंजी मुद्रित की गई थी, और पूरी तरह से ffmpeg के साथ काम किया जैसा कि user4669748 के उत्तर में वर्णित है।

मैंने तब /etc/hostsइसकी मूल सामग्री को पुनर्स्थापित किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.