2010-03-29 46 views
10

Tôi đang cố gắng triển khai trình phát âm thanh tải xuống tiến bộ cho iPhone, sử dụng tệp mp3 kích thước cố định và kích thước cố định.Trình phát âm thanh tải xuống iPhone nâng cao

Tôi đã tìm thấy dự án AudioStreamer nhưng có vẻ như rất phức tạp và hoạt động tốt nhất với luồng bất tận.

Tôi cần có khả năng tìm hiểu tổng chiều dài của tệp âm thanh và tôi cũng cần có khả năng tìm kiếm trong tệp. Tôi tìm thấy một độ lệch bị tấn công từ AudioStreamer nhưng nó dường như không hoạt động tốt cho tôi. http://www.saygoodnight.com/?p=14

Tôi tự hỏi liệu có cách nào đơn giản hơn để đạt được mục tiêu của mình hoặc nếu có một số mẫu làm việc tốt hơn không? Tôi tìm thấy thư viện bass nhưng không có nhiều tài liệu về nó.

/Br Johannes

+0

tôi thêm một tiền thưởng cho câu hỏi này như tôi có cùng một câu hỏi - với hy vọng tiết kiệm nội dung như tôi tải/chơi nó. – ajacian81

Trả lời

8

Rất tiếc, không có gì đơn giản khi phát luồng âm thanh trên iPhone. Đây là bài viết khiến tôi bắt đầu: Streaming and playing an MP3 stream

Đây là một dự án OSX, nhưng hầu hết nó cũng hoạt động với iPhone. Đối với việc có được thời gian chơi đầy đủ của nó, bạn có thể phải tìm ra rằng dựa trên các thuộc tính nội dung dài của tiêu đề http, miễn là nó là một tập tin CBR. Nếu không, tôi tưởng tượng bạn phải tải xuống toàn bộ tệp trước khi xác định.

+1

+1 để liên kết với cocoawithlove, tôi cũng có một ứng dụng trên mạng mà tôi chỉ có thể chạy với nguồn cấp dữ liệu này. –

4

Có một chương thực sự hay về việc phát trực tuyến âm thanh trong các Dự án Cool của iPhone. http://apress.com/book/view/9781430223573 Nó cho thấy một cách tiếp cận đơn giản hơn sau đó AudioStreamer (Sử dụng NSURLConnection thay vì CFNetwork), phù hợp hơn để tải xuống liên tục và không có mã đa luồng.

Và để tìm ra kích thước của tập tin âm thanh bạn có thể sử dụng [response expectedContentLength] trong

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
5

Nếu bạn chỉ cần để chơi các file nhạc MP3, tại sao bạn viết downloader/máy nghe nhạc của riêng bạn? Bạn có một vài lựa chọn xây dựng vào iOS, mỗi trong số đó hỗ trợ tiến trình tải và MP3 playback:

  • MPMoviePlayerController
  • AVPlayer
  • Safari <audio> chơi

Cá nhân tôi đã có vấn đề với khả năng tải xuống lũy ​​tiến của MPMoviePlayerControllerAVPlayer, vì vậy có lẽ đây cũng là vấn đề của bạn. Tôi đã tìm thấy rằng những người chơi này cố gắng thông minh bằng cách yêu cầu nhiều lần mp3, kiểm tra xem máy chủ có hỗ trợ tải xuống lũy ​​tiến thông qua bù phạm vi http hay không. Nhưng khi máy chủ không hỗ trợ phạm vi bù đắp, tập tin được tải xuống nhiều lần, ăn băng thông (!).

Trong dự án mới nhất của tôi, tôi đã nhúng UIWebView có thẻ html <audio> được nhúng. Trình phát Safari dường như hoạt động tốt hơn AVPlayer và MPMoviePlayerController, nhưng nó cũng có những cảnh báo riêng của nó. Đối với một, nhận autoplay để làm việc là một PITA.

1

Tôi biết đây là một bài đăng khá cũ, nhưng muốn đề xuất một thư viện vững chắc là nguồn mở. Nó dựa trên bài đăng gốc của Matt Gallagher do @pzearfoss đề xuất ở trên. Phiên bản hiện tại sử dụng AudioUnits ngay bây giờ, thay vì các lớp AudioQueue, vì vậy nó cho phép bạn truy cập vào các mẫu PCM thô cho bất kỳ thao tác nào bạn muốn thực hiện (lọc, vv) trước khi phát lại.Nó cũng cung cấp cho bạn khả năng tải xuống liên tục miễn phí, với nỗ lực khá tối thiểu. Thư viện dường như được cập nhật tích cực, đó là một điểm cộng lớn!

StreamingKit by @tumtumtum

Các vấn đề liên quan