2012-02-12 15 views
5

क्या डेल्फी XE2 FireMonkey द्वारा निर्मित एप्लिकेशन से मैक पर WAV फ़ाइलों को चलाने के तरीके पर कोई ट्यूटोरियल या उदाहरण हैं?क्या डेल्फी XE2 से मैक पर कोई डब्ल्यूएवी ध्वनि प्लेबैक है?

मैं क्योंकि इस कोड काम नहीं करता है पूछ रहा हूँ:

var 
    //fWaves head and data is initialized and plays properly on Win through OpenAL 
    fWaves: array of record 
    Head: TWAVHeaderEx; 
    Data: array of byte; 
    end; 
    D: NSData; 
    N: NSSound; 
begin 
    D := TNSData.Wrap(TNSData.Create.initWithBytes(@fWaves[0].Head, SizeOf(fWaves[0].Head) + fWaves[0].Head.DataSize)); 
    ShowMessage(IntToStr(D.length)); //--Length is correct 
    N := TNSSound.Wrap(TNSSound.Create.initWithData(D)); 
    ShowMessage(FloatToStr(N.Duration)); //--Displays 0 
    if N.play then 
    ShowMessage('Yes') 
    else 
    ShowMessage('No'); //--Always returns NO 
end; 

मैं स्मृति से WAV फ़ाइल शीर्षक और डेटा लोड हो रहा हूँ और यह OpenAL के साथ ठीक निभाता है। तो समस्या मेरे एनएसएसएंड उपयोग में कहीं है। क्या कोई मैक पर डेल्फी एक्सई 2 ध्वनि प्लेबैक के कुछ कामकाजी उदाहरण प्रदान कर सकता है?

+0

मुझे लगता है कि एक fwaves रिकॉर्ड का प्रारूप वास्तव में एक वास्तविक WAV फ़ाइल के प्रारूप से मेल नहीं खाता है। फ़ाइल से कच्चे बाइट्स का उपयोग करने का प्रयास करें। –

+0

ने कोशिश की, साथ ही initFromFile (path_to_aiff) की कोशिश की .. कुछ भी मदद नहीं की। तो मैं अंततः ओपनएएल में स्विच कर दिया है। – Kromster

उत्तर

0

रूप में अच्छी तरह, एक जवाब के रूप में पोस्ट कर सकते मामले में मदद करता है कि किसी को भी में:

की कोशिश की और साथ ही initFromFile(path_to_aiff) की कोशिश की है कि, .. कुछ भी नहीं है मदद की। तो मैं अंततः ओपनएएल में स्विच कर दिया है।

शायद भविष्य में एम्बरकाडेरो एनएसएसएंड तक पहुंचने के उस विशिष्ट तरीके को ठीक करता है, लेकिन अब के लिए ओपनएएल सबसे अच्छा काम करता है। इसके अलावा, ओपनएएल क्रॉस-प्लेटफार्म है, जिसका अर्थ है कि मैं विन और मैक पर एक ही ध्वनि कोड का उपयोग कर सकता हूं।

3

फ्रीपास्कल/लाज़र में "macosall.pas" नामक एक इकाई है जो ओएस-एक्स सी ++ हेडरफाइल का पास्कल में अनुवाद है, जिससे आप मूल ओएस-एक्स फ़ंक्शंस को कॉल कर सकते हैं।

अफसोस की बात यह इकाई डेल्फी का हिस्सा नहीं है, लेकिन इकाई खोलकर आप फ़ंक्शन घोषणा को डेल्फी पर प्रतिलिपि बना सकते हैं और इसे काम करना चाहिए।

मुझे उम्मीद है कि आपको क्विकटाइम एपीआई में जो चाहिए वह मिलेगा जो सेब मशीनों पर मीडिया का केंद्रीय केंद्र है। Apple developer भी देखें और दस्तावेज़ों पर नज़र डालें।

+0

जो मुझे उद्धृत कोड में एनएसएसएंड-एनएसडीटा के साथ गलत क्या है, इस बारे में कोई संकेत नहीं देता है। – Kromster

+0

आईओएस के लिए सी # और मोनो में कोडिंग करते समय, मुझे एक ही समस्या का सामना करना पड़ा लेकिन विभिन्न क्षेत्रों में। यदि टीएनएसडाटा के मूल उद्देश्य सी वर्ग के समान तरीके हैं, तो आप डेटा को एनएसएसटीम, एनएसबीफर या यहां तक ​​कि पाठ के रूप में भी धक्का दे सकते हैं। उपरोक्त कोड में आप एक सामान्य बाइट बफर का उपयोग करते हैं, ऐसा लगता है, स्ट्रीम से प्रारंभ करने का प्रयास करें। एक उदाहरण मेल-प्रेषण संवाद है जो सेब डॉक्स के अनुसार किसी भी NSData ऑब्जेक्ट के बारे में लेना चाहिए - लेकिन यह तब तक नहीं था जब तक मैंने एक स्ट्रीम का उपयोग नहीं किया था। –

संबंधित मुद्दे