ffmpeg - अगर किसी फाइल में DRM सुरक्षा है तो कैसे (प्रोग्रामिक रूप से) चेक करें?


1

मेरे पास एक ऐप है जो एक बच्चे की प्रक्रिया के रूप में ffmpeg / ffprobe चलाता है (कमांड लाइन पर चलने के समान), और फिर फ़ाइल के बारे में मेटाडेटा प्राप्त करने और / या फ़ाइल के ट्रांसकोडिंग करने के लिए कमांड आउटपुट को पार्स करता है। और मेरे ऐप को यह जानने की जरूरत है कि दी गई फाइल DRM सुरक्षित है या नहीं

नोट - मैंने इस प्रश्न को देखा है । यह DRM सुरक्षा निर्धारित करने के लिए आउटपुट के प्रोग्रामेटिक पार्सिंग को संबोधित नहीं करता है। यह केवल आउटपुट के मानव पार्सिंग को संबोधित करता है।

मुझे पहले से ही पता है कि मैं ffprobe चला सकता हूं और अगर मैं अपनी आंखों से आउटपुट के माध्यम से स्कैन करता हूं और "DRM सुरक्षा का पता लगाया गया ... डिकोडिंग संभवतः विफल हो जाएगा" जैसा कुछ आउटपुट में देखें, मुझे पता है कि फ़ाइल संरक्षित है। यह नमूना आउटपुट देखें:

ffprobe -hide_banner CelticWoman-OnlyAWomansHeart.wma

[asf @ 0x7f9bab000000] DRM protected stream detected, decoding will likely fail!
Input #0, asf, from 'CelticWoman-OnlyAWomansHeart.wma':
Metadata:
...

हालाँकि, उपरोक्त आउटपुट में दो समस्याएं हैं:

1 - यह मशीन के अनुकूल नहीं है । मुझे कुछ शब्दों की तलाश के लिए आउटपुट के पूरे समूह के माध्यम से स्कैन करना होगा। इस तरह के आउटपुट को पार्स करना अक्षम है, क्योंकि यह मानव उपभोग के लिए है, मशीन की खपत के लिए नहीं।

2 - मुझे नहीं पता कि उपरोक्त आउटपुट विभिन्न फ़ाइल प्रकारों के अनुरूप है या नहीं। दूसरे शब्दों में, ऊपर का नमूना आउटपुट एक ASF कंटेनर में WMA फ़ाइल के लिए है। क्या होगा अगर यह एक FLAC या DTS या अन्य प्रकार की फ़ाइल थी? क्या वर्बेज का उपयोग वही होगा, ताकि मेरा ऐप हर बार पार्स और इसका पता लगा सके?

मुझे जो कुछ चाहिए वह आउटपुट प्रॉपर्टी है जिसे मेरा ऐप मज़बूती से और अनुमानित रूप से पार्स कर सकता है ... कुछ मुख्य-मूल्य जोड़ी जैसे "ड्रम-प्रोटेक्टेड = ट्रू" जो कि मीडिया फ़ाइल प्रकारों के अनुरूप है

तो, ffprobe / ffmpeg पर क्या विकल्प मुझे एक मशीन-पार्स करने योग्य कुंजी-मूल्य जोड़ी देगा जो मुझे बताता है कि क्या फ़ाइल में DRM सुरक्षा है?

बहुत - बहुत धन्यवाद !


DRM एक बहुत व्यापक शब्द है - यह पता लगाने के लिए कि यह मौजूद है या नहीं, ffmpeg में कोई एकल तंत्र नहीं है। आपके द्वारा पाया गया स्ट्रिंग केवल ASF डिकोडिंग के लिए मान्य है। आपके उपयोग के मामले में, आप केवल ऑडियो के बारे में बात कर रहे हैं?
sl18ck

हां, केवल ऑडियो। हम्म ठीक है।
WaldenCalms

मुझे लगता है कि असली सवाल यह है: आपके ऐप को यह जानने की आवश्यकता क्यों है, और आप किस प्रकार की फाइलें (कंटेनर, कोडेक्स) संभाल रहे होंगे? उस ने कहा, मुझे यकीन नहीं है कि ऑडियो के लिए वास्तव में इतने सारे डीआरएम प्रारूप हैं जो चारों ओर तैर रहे हैं। संभवतः आईट्यून्स (AAC / MP4), PlayReady (WMA / ASF),…
slhck

मेरा ऐप एक ऑडियो प्लेयर है, और DRM फ़ाइलों को संभाल नहीं सकता है, इसलिए यदि DRM का पता चला है, तो यह बस उपयोगकर्ता को सूचित करेगा कि यह खेला नहीं जा सकता है। मैंने देखा कि ffmpeg ट्रांसकोडिंग वास्तव में सफल (शून्य निकास कोड) प्रतीत होता है, भले ही फ़ाइल संरक्षित है, इसलिए मैं हमेशा त्रुटि का पता लगाने के लिए ट्रांसकोडिंग प्रक्रिया से बाहर निकलने के कोड पर भरोसा नहीं कर सकता, इसलिए मुझे कुछ और तरीका चाहिए। अन्यथा, ffmpeg एक खाली फ़ाइल (कुछ KB) का उत्पादन करेगा जो वास्तव में ट्रैक की अवधि के लिए मौन निभाता है। यह एक ऑडियो प्लेयर के लिए एक आदर्श उपयोगकर्ता अनुभव नहीं है। मुझे DRM सुरक्षा का पता लगाने की आवश्यकता है ताकि मैं उपयोगकर्ता को "सॉरी" बता सकूं।
WaldenCalms

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