Tôi nhận được một loạt các gói UDP từ một ổ chứa bộ đệm PCM được mã hóa. Sau khi giải mã chúng, tôi còn lại với bộ đệm âm thanh int16 *, mà tôi muốn phát lại ngay lập tức.iOS: Phát bộ đệm PCM từ luồng
Logic dự định đi một cái gì đó như thế này:
init(){
initTrack(track, output, channels, sample_rate, ...);
}
onReceiveBufferFromSocket(NSData data){
//Decode the buffer
int16 * buf = handle_data(data);
//Play data
write_to_track(track, buf, length_of_buf, etc);
}
Tôi không chắc chắn về tất cả những gì đã làm với chơi lại các bộ đệm mặc dù. Trên Android, tôi có thể đạt được điều này bằng cách tạo đối tượng AudioTrack, thiết lập nó bằng cách chỉ định tốc độ mẫu, định dạng, kênh, v.v ... và sau đó chỉ cần gọi phương thức "write" với bộ đệm (như tôi ước Tôi có thể trong mã giả của tôi ở trên) nhưng trên iOS tôi sắp lên ngắn.
Tôi đã thử sử dụng Dịch vụ luồng tệp âm thanh, nhưng tôi đoán tôi đang làm điều gì đó sai vì không có âm thanh nào xuất hiện và tôi cảm thấy những chức năng đó không thực sự phát lại. Tôi cũng đã cố gắng hiểu các Dịch vụ Hàng đợi Âm thanh (mà tôi nghĩ có thể gần với những gì tôi muốn), tuy nhiên tôi không thể tìm thấy bất kỳ mẫu mã đơn giản nào cho việc sử dụng nó.
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều, đặc biệt dưới dạng mã ví dụ.
Xin chào, bạn đã xoay sở để giải quyết nó chưa? Tôi đang gặp sự cố tương tự, nếu có thể, vui lòng đăng mẫu mã của bạn. – moenad