Cấp SDK 8 (Froyo) đã giới thiệu khả năng gốc cho MediaPlayer để kết nối với nguồn phát trực tuyến, như Shoutcast. Các phiên bản SDK trước đó có thể thực hiện các giải pháp thay thế, chẳng hạn như chạy proxy cục bộ trên thiết bị (xem NPR).Phát trực tiếp bằng Android MediaPlayer trong SDK 8
Tôi đã sử dụng phương pháp tương tự như NPR và đang sử dụng StreamProxy. Tuy nhiên, trước tiên NPR sẽ kiểm tra xem SDK hiện đang chạy có dưới 8 hay không. Nếu có, nó sử dụng proxy. Nếu không, nó kết nối trực tiếp.
My StreamProxy yêu cầu siêu dữ liệu từ máy chủ Shoutcast, do đó, nó không đơn giản định tuyến dữ liệu từ Shoutcast cho khách hàng của tôi. Thay vào đó, nó phân tích siêu dữ liệu và sử dụng nó cho phù hợp, và chỉ định tuyến dữ liệu âm nhạc.
Khi cố gắng sử dụng StreamProxy ở cấp SDK 8 trở lên, MediaPlayer không thể chuẩn bị. StreamProxy của tôi nhận kết nối và chấp nhận nó, nhưng sau khi viết thành công dòng trạng thái và các tiêu đề cho máy khách, ghi tiếp theo sẽ tạo ra java.net.SocketException: Connection reset by peer
. Điều này dẫn đến mediaplayer của khách hàng ném một Error(1,-1007)
.
Tôi đang cố gắng tìm ra lý do tại sao MediaPlayer không thể kết nối với proxy cục bộ của tôi. Nó phải giống như kết nối với nguồn ban đầu không có siêu dữ liệu, trong đó có hoạt động. Tôi đang chuyển tiếp trên tất cả các tiêu đề từ nguồn bên ngoài, thông qua proxy của tôi, bao gồm loại nội dung.
Tôi sẽ tiếp tục xem xét, nhưng tôi cảm thấy như tôi đang ở điểm chết. Hãy cho tôi biết nếu cần thêm chi tiết.
Cách phát SHOUTcast? Http: //stackoverflow.com/a/8833346/265167 –