كيفية الحصول على معدل البت من الملفات الصوتية في الكاكاو

StackOverflow https://stackoverflow.com/questions/860388

سؤال

وأنا بحاجة للحصول على المعلومات معدل البت من الملفات الصوتية، لسبب وظيفة AudioFileGetProperty مع kAudioFilePropertyBitRate ثابت دوما بإرجاع 0 بالنسبة لي. الشيء نفسه مع kAudioFilePropertyInfoDictionary، القاموس الناتج هو لا تحتوي على معلومات معدل البت. وأود أن محاولة manualy الحصول على ذلك من البيانات الخام في حالة MP3، ولكن أنا بحاجة إلى دعم تنسيقات الملفات المختلفة مثل M4A وغيرها. هل هناك أي طريقة أخرى للقيام بذلك؟

هل كانت مفيدة؟

المحلول

إذا كنت تتعامل مع ملف، يمكنك أن تحاول دائما باستخدام API أضواء الفوقية. على سبيل المثال، على افتراض أن يكون لديك المسار إلى ملف الصوت الخاص بك كما يسمى NSString أو CFStringRef 'المسار':

MDItemRef item = MDItemCreate( kCFAllocatorDefault, path );
CFNumberRef audioBitrate = MDItemCopyAttribute( item, kMDItemAudioBitrate );
CFNumberRef totalBitrate = MDItemCopyAttribute( item, kMDItemTotalBitrate );
CFRelease( item );

وانها ليست مثالية، ولكن قد لا يقل عن توفر لك مع بعض مزيد من المعلومات الخلفية تشير إلى سبب API الآخر لا يعمل.

وأما الشيء الوحيد الذي يمكنني أن أفكر: ويعرف kAudioFilePropertyBitRate فقط في OS X 10.5. إذا كنت تعمل على 10.4 أو قبل ذلك، سوف لا تزال تعمل التعليمات البرمجية الخاصة بك، ولكن الإطار AudioFile لا يعرف حول الخاصية معدل البت في كل شيء، وبالتالي من المرجح أن يعود الصفر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top