कैसे खेलें, प्रश्न पढ़ने के लिए समय लेने वाले सभी को धन्यवाद!आईओएस - स्ट्रीम से ऑडियो कैसे पढ़ा जाए और ऑडियो
इसलिए मैंने मल्टीपायर कनेक्टिविटी का उपयोग करके एक स्ट्रीम बनाई है। मैं एक CMSampleBuffer में ऑडियो रिकॉर्ड करने में सक्षम हूं और उस बफर को UInt8 डेटा में रूपांतरित कर सकता हूं।
outputStream!.write(u8ptr, maxLength: Int(buffer.mDataByteSize))
फिर जब डेटा InputStream पर दिखाई देता है निम्न विधि कहा जाता है:: फिर विधि का उपयोग कर एक सहकर्मी के लिए कि डेटा भेजने
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
मैं प्रिंट बयान है, इसलिए इस भाग चल रहा है ठीक। डेटा वास्तव में दिखाई देता है, मैं अपने फ़ंक्शन को कॉल
func readFromStream() {
मुझे पता है कि मैं वास्तव में स्ट्रीम से पढ़ने का inputStream.read विधि कॉल करने की जरूरत है, लेकिन मुझे यकीन है कि वास्तव में डेटा को पढ़ने के लिए कैसे नहीं कर रहा हूँ और उसके बाद इसे NSData में परिवर्तित करें ताकि इसे AVAudioPlayer का उपयोग करके खेला जा सके।
यह वही है मैं अब तक है, लेकिन मैं यह परीक्षण नहीं किया और मुझे लगता है है (जब तक आप एक बेहतर, अधिक कुशलता से के बारे में पता कर रहे हैं) वहाँ समस्याओं होने जा रहा है।
func readFromStream() {
var buffer = [UInt8](repeating: 0, count: 1024)
while (inputStream!.hasBytesAvailable) {
let length = inputStream!.read(&buffer, maxLength: buffer.count)
if (length > 0) {
if (audioEngine!.isRunning) {
audioEngine!.stop()
audioEngine!.reset()
}
print("\(#file) > \(#function) > \(length) bytes read")
let audioBuffer = bytesToAudioBuffer(buffer)
let mainMixer = audioEngine!.mainMixerNode
audioEngine!.connect(audioPlayer!, to: mainMixer, format: audioBuffer.format)
audioPlayer!.scheduleBuffer(audioBuffer, completionHandler: nil)
do {
try audioEngine!.start()
}
catch let error as NSError {
print("\(#file) > \(#function) > error: \(error.localizedDescription)")
}
audioPlayer!.play()
}
}
}
मैं क्या है के आधार पर, वहाँ कोई ऑडियो चल रहा है। यह चुप्पी है, लेकिन मैं देख सकता हूं कि एक डिवाइस द्वारा ऑडियो प्राप्त किया जा रहा है।
तो मूल रूप से, मेरा सवाल यह है कि, मैं इस बफर को सही डेटा प्रकार में कैसे परिवर्तित करूं ताकि इसे लाइव खेला जा सके?
आपकी मदद के लिए धन्यवाद! अगर आपको अधिक जानकारी चाहिए, तो कृपया मुझे बताएं।