Tôi cần phát luồng âm thanh trực tiếp, thực ra đó là đài phát thanh. Vấn đề là tôi cũng cần quản lý bộ đệm 20 phút để phát trực tuyến. Theo như tôi hiểu nó không dễ thực hiện với android.Đệm luồng âm thanh
Trước hết tôi đã kiểm tra MediaPlayer, nhưng nó không cung cấp bất kỳ phương pháp nào để quản lý bộ đệm. Trong thực tế, bạn thậm chí không thể thiết lập kích thước bộ đệm trực tiếp.
Thứ hai, tôi đã cố gắng quản lý bộ đệm bằng cách sử dụng các tệp cục bộ: dần dần tải luồng xuống một tệp tạm thời và chuyển chúng. Nhưng khi bạn muốn chuyển sang tập tin sau (thay đổi nguồn dữ liệu trong MediaPlayer), âm thanh không được phát liên tục. Bạn có thể nghe thấy gián đoạn ngắn.
Ý tưởng cuối cùng là sử dụng proxy luồng. Thông thường nó được sử dụng để chơi các luồng trong các phiên bản Android dưới đây 8. Trong proxy dòng bạn tạo ServerSocket, đọc từ dòng âm thanh và ghi vào máy nghe nhạc. Vì vậy, trên thực tế tôi có thể quản lý bộ đệm ở đó. Tôi có thể lưu trữ luồng và ghi vào MediaPlayer bất cứ điều gì tôi muốn. Nhưng. Ứng dụng này không hoạt động với Android 8.
Tôi đã nhận ngoại lệ: Đặt lại kết nối theo đồng đẳng java.net.SocketException: Đặt lại kết nối theo peer. MediaPlayer 8 không muốn đọc dữ liệu từ ổ cắm.
Vì vậy, tôi có hai câu hỏi: 1) Cách nào khác để triển khai bộ đệm luồng? 2) cách điều chỉnh StreamProxy cho android 8?
Bất kỳ ý tưởng nào được đánh giá cao.
Cảm ơn
"2) làm thế nào để thích ứng StreamProxy cho android 8?" ... Trừ khi bạn hiển thị mã bạn đang sử dụng, nó không thể cho bất cứ ai để giúp đỡ. – Squonk
Cách bạn đang viết luồng cho MediaPlayer bạn có thể giải thích thêm một chút không? –