2011-01-18 25 views
14

Tôi có thiết lập máy chủ phát trực tuyến HTTP phân phối nội dung âm thanh mp3 được phân đoạn (URL trỏ tới tệp chỉ mục playlist.m3u8). Tôi cần tạo ứng dụng khách iOS để tiêu thụ luồng âm thanh này mà không cần sử dụng bất kỳ điều khiển/giao diện người dùng Apple chuẩn nào. Nó sẽ phát luồng trong nền và tôi muốn sử dụng giao diện người dùng tùy chỉnh của riêng tôi để cung cấp các điều khiển.Phát luồng tệp âm thanh bằng cách sử dụng HTTP Live Streaming trên ứng dụng iOS mà không mất UI đến Thời gian nhanh

Vì nội dung hoàn toàn là âm thanh nên tôi không muốn sử dụng lớp MPMoviePlayerController khi nó chiếm giao diện người dùng. Tôi đã thử bằng cách sử dụng AVAudioPlayer, mặc dù nó không có nghĩa là cho các dòng mạng, mà không ngạc nhiên khi không phát lại với một mã lỗi "-43": NSOSStatusErrorDomain.

Tôi cũng đã cố tạo một UIWebView với chiều cao và chiều rộng 1 pixel và trỏ nó vào tệp playlist.m3u8 trên máy chủ. Điều này hoạt động nhưng tiếc là tôi vẫn bị mất UI vì UIWebView chỉ ủy nhiệm nhiệm vụ phát lại cho trình phát QuickTime khởi chạy trong ứng dụng của tôi với toàn màn hình cho các thiết bị iOS 3.xx. Về cơ bản, dường như Apple không cung cấp bất kỳ API ứng dụng khách nào để tiêu thụ các luồng và phát triển HTTP âm thanh và các nhà phát triển bị buộc phải từ bỏ giao diện người dùng đến trình phát QuickTime phát luồng có biểu tượng QT chiếm đoạt màn hình. ughh ...

Tôi rất muốn biết liệu có ai có đề xuất giúp tôi với những điều trên không. Nếu không, kế hoạch của tôi B là từ bỏ Phát trực tiếp HTTP và sử dụng triển khai truyền trực tuyến cổ điển Matt Gallagher nổi tiếng. Tuy nhiên, tôi hơi lo lắng về Apples guidelines rõ ràng gợi ý rằng đối với các ứng dụng được dự kiến ​​sẽ gửi lượng lớn nội dung âm thanh hoặc video qua mạng di động (ứng dụng của tôi) được yêu cầu để sử dụng tính năng phát trực tuyến HTTP. Điều này có nghĩa là việc triển khai kế hoạch B của tôi có dễ bị Apple từ chối không? Bất kỳ cách nào để vượt qua hướng dẫn này?

Trả lời

5

Tôi đã sử dụng thiết bị nhúng âm thanh bởi Matt Gallagher trong một trong các ứng dụng của tôi. Đó là một ứng dụng radio internet khá giống Pandora và LastFM. Và có nó đã được chấp nhận bởi Apple và đã được trong App Store kể từ đó.

Vì vậy, theo ý kiến ​​của tôi, kế hoạch B của bạn thực sự không phải là rủi ro. :-)

+0

Cảm ơn thông tin. Bạn đã gửi ứng dụng trước 2010-Feb-05 chưa? Nhìn vào lịch sử sửa đổi tài liệu hướng dẫn của Apple, đó là khi họ đã ban hành nhiệm vụ về các ứng dụng yêu cầu sử dụng Phát trực tiếp HTTP để phát trực tuyến phương tiện truyền thông b/w cao. Tôi đoán rằng họ có thể đã thực hiện chính sách đánh giá của họ chặt chẽ hơn chỉ dành cho các ứng dụng được gửi đến cửa hàng sau khi hướng dẫn đó được công bố công khai. – bhavinb

+0

Hmmm .. Tôi đã gửi khoảng tháng 9 năm 2010 và đã được phê duyệt vào tháng 10 sau. –

13

http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html

Các tài liệu nói:

Playback xảy ra trong một cái nhìn thuộc sở hữu của các cầu thủ phim và diễn ra trong hai toàn màn hình hoặc nội tuyến.

Trong iOS 3.1 trở về trước, lớp này chỉ triển khai trình phát phim toàn màn hình .

Kiểm tra nhanh bằng cách sử dụng luồng mẫu của Apple chứng minh những gì bạn muốn làm là có thể.

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"]]; 
player.movieSourceType = MPMovieSourceTypeStreaming; 
player.view.hidden = YES; 
[self.view addSubview:player.view]; 
[player play]; 
+1

câu hỏi được đề cập "... khởi chạy trong ứng dụng của tôi với toàn màn hình cho các thiết bị iOS 3.xx". Tôi biết về khả năng xem có thể thay đổi kích thước và khả năng ẩn nó trong iPhone 4.0 trở lên (kể từ iOS 3.2 là iPad chỉ, sau iOS 3.1.x, có trực tiếp iOS 4.0 cho iPhone). API 'player.view.hidden = YES;' chỉ có thể có trong iOS 3.2 trở lên có nghĩa là đối với iPhone có iOS 4.0 trở lên. Do đó đây không phải là một lựa chọn khả thi vì tôi muốn hỗ trợ iPhone trên iOS3.x trở lên trong ứng dụng của tôi – bhavinb

+2

. Rất tiếc, tôi đã bỏ lỡ yêu cầu iOS trong câu hỏi. Tuy nhiên, bạn có thể muốn xem xét nghiêm túc nỗ lực bạn muốn đưa vào các thiết bị chạy 3.x. Tôi đã giúp xây dựng một ứng dụng có hơn nửa triệu lượt tải xuống và 93% người dùng đang chạy phiên bản 4.0 trở lên. Đồng thời xem liên kết này: http://www.quora.com/What-proportion-of-all-iPhone-owners-use-iOS4-*-today – SteveB

+0

Bạn sẽ phải sao chép và dán liên kết đó vì dấu sao là làm rối tung nó lên. Rất tiếc, tôi không thể liên kết nó đúng cách. – SteveB

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