2011-09-04 12 views
7

मैं कैसे निर्धारित कर सकता हूं कि एक विशेष फ़ाइल (जो ".mp3" फ़ाइल एक्सटेंशन हो सकती है या नहीं) वास्तव में एक एमपी 3 फ़ाइल है? मैं इसे सी # में करना चाहता हूं।मैं कैसे निर्धारित कर सकता हूं कि एक विशेष फ़ाइल वास्तव में एक एमपी 3 फ़ाइल है?

+2

सी # और फ़ाइल प्रकार जादू संख्या; संभावित रूप से http://stackoverflow.com/questions/1654846/in-c-how-can-i-now-the-file-type-from-a-byte –

+1

का एक डुप्लिकेट यदि आप सफलतापूर्वक प्रदान किए गए समाधान का उपयोग करके इसे लोड करते हैं http://stackoverflow.com/questions/184683/, आप इसे एक वैध एमपी 3 –

उत्तर

5
  1. फाइल एक्सटेंशन का उपयोग कर विश्वसनीय नहीं है।
  2. सबसे अच्छा मुक्ति जो आप उपयोग कर सकते हैं https://github.com/mono/taglib-sharp यह सामान्य फ़ाइल प्रकारों का पता लगाता है। शायद आप एमपी 3 चाहते हैं, तो आप किसी भी एमपी 3 से संबंधित वर्ग निकाल सकते हैं।
  3. एक सरल पुस्तकालय आप उपयोग कर सकते https://github.com/judwhite/IdSharp
5

फ़ाइलें अक्सर डेटा प्रारूप की पहचान करने के लिए "जादू संख्या" से शुरू होती हैं। प्रारूप के आधार पर, एक फ़ाइल बाइट्स के एक निश्चित अनुक्रम से शुरू होती है जो उस प्रारूप के लिए अद्वितीय है। पालन ​​करने के लिए कोई मानक नहीं है इसलिए यह 100% विश्वसनीय नहीं है।

fvu कहते हैं, एमपी 3 जादुई संख्या 0x49 0x44 0x33

14

है http://www.garykessler.net/library/file_sigs.html के अनुसार एक एमपी 3 फ़ाइल हमेशा ID3 (हेक्स 49 44 33) के साथ शुरू होगा हालांकि, इन बाइट्स की उपस्थिति केवल मतलब है कि फ़ाइल ID3 information के साथ टैग है । यदि यह हस्ताक्षर नहीं मिला है, तो यह एक untagged एमपी 3 फ़ाइल हो सकता है। इसे निर्धारित करने के लिए, the mp3 file structure देखें और आप देखेंगे कि एक एमपी 3 फ्रेम हस्ताक्षर एफएफ एफबी (हेक्स) के साथ शुरू होता है।

तो:

  • यदि फ़ाइल हेक्स के साथ शुरू होता 49 44 33

या

  • यदि फ़ाइल हेक्स के साथ शुरू होता ff fb

यह ग्रहण करने के लिए है कि यह एक है सुरक्षित है एमपी 3।

1
string[] filePath = Directory.GetFiles(fbdialog.SelectedPath.ToString(),".mp3", 
             SearchOption.AllDirectories); 

foreach (string str in filePath) 
{ 
    MessageBox.Show("It's mp3 file"); 
} 
+3

पर विचार कर सकते हैं यह गलत नहीं है, लेकिन यह विश्वसनीय नहीं है। –

-2

सी # कोड है:

bool isMP3(byte[] buf) 
{ 
    if (buf[0] == 0xFF && (buf[1] & 0xF6) > 0xF0 && (buf[2] & 0xF0) != 0xF0) 
    { 
     return true; 
    } 
    return false; 
} 
संबंधित मुद्दे