2009-12-23 30 views
11

Làm cách nào để tải tệp nhạc thư viện ipod vào AVAudioPlayer?Cách phát tệp Thư viện iPod trong AVPlayer

+0

tôi sẽ khuyên bạn nên nhìn vào http : //superuser.com/ bạn cũng có thể muốn cung cấp thêm chi tiết. Bạn đang sử dụng chương trình nào chính xác và bạn đã thực hiện bất kỳ nghiên cứu nào cho đến nay? – Guvante

+9

AVAudioPlayer là một lớp được sử dụng để ... cũng ... phát âm thanh trên iPhone. Bạn biết đấy, khi bạn đang lập trình cho nó. Câu hỏi chắc chắn nhất là lập trình liên quan. – aehiilrs

Trả lời

3

SDK không có điều khoản để đọc tệp từ thư viện iPod (như bạn cần làm để sử dụng AVAudioPlayer với nó), có thể vì lý do chống sao chép lậu. Để phát các mục trong thư viện iPod, hãy sử dụng lớp MPMusicPlayerController.

Chỉnh sửa: Điều này không còn chính xác nữa. Xem các câu trả lời dưới đây mô tả cách sử dụng lớp AVPlayer.

+2

Điều này không đúng, hãy xem các câu trả lời khác giải thích cách truy cập thư viện iPod để sử dụng với AVAudioPlayer. –

+0

Điều này có thể đã đúng vào tháng 12 năm 2009 nhưng có thể bây giờ là Steve Tranby giải thích trong câu trả lời của mình. – prendio2

0

Có khả năng nào để nhận thông tin về đo dB trong MPMusicPlayerController không? Có lẽ bắt đầu một AVAudioSession để ghi song song sẽ thực hiện công việc? Tôi cần dB-giá trị để xây dựng một số loại phổ khối lượng.

+1

câu hỏi 2 năm tuổi, nhưng tôi sẽ thêm câu trả lời cho bất kỳ ai khác đến đây. Để có được mức dB từ âm thanh, hãy sử dụng AudioStreamBasicDescription của Core-Audio (https://developer.apple.com/library/mac/documentation/musicaudio/reference/CoreAudioDataTypesRef/Reference/reference.html#//apple_ref/doc/uid/TP40004488-CH3-SW2) với dữ liệu âm thanh dưới dạng luồng. Tôi đang sử dụng URL từ thư viện ipod cho nội dung và đang sử dụng dữ liệu tại URL có lõi âm thanh. – jarryd

+0

Bạn có thể mở rộng câu trả lời này thêm một chút không? –

+1

@ Helium3: Giải pháp của bạn có hoạt động với các tệp được bảo vệ bởi IOS10 và DRM không? –

5

Có, bạn có thể phát các bài hát từ thư viện iPod bằng SDK mà không cần sử dụng lớp học MPMusicPlayerController.

Lớp cơ bản hơn AVPlayer có thể xử lý tệp âm thanh từ thư viện iPod bằng cách sử dụng giá trị NSUrl từ thuộc tính MPMediaItemPropertyAssetURL của bài hát. Bạn phải làm nhiều công việc hơn để có được mọi thứ thiết lập đúng cách, nhưng nó có thể được thực hiện.

+0

Tôi không biết làm thế nào, nhưng bằng cách sử dụng AVAplat = yer nó không phải là workng. –

20

Vì David đề cập đến nhiều việc phải làm hơn, ví dụ bạn phải quản lý bản nhạc tiếp theo trong một tập hợp các mục media, nhưng đây là một cách để thực hiện nó với một tập hợp MPMediaItems mà người dùng đã chọn từ iPod Picker. Các AssetURL là những gì bạn sử dụng, nó mang lại cho bạn một đường dẫn đến tập tin MP3 (ví dụ như ipod-thư viện: //item/item.mp3 id = -6889145242935454020)

NSURL *anUrl = [[mediaItems objectAtIndex: 0] valueForProperty:MPMediaItemPropertyAssetURL]; 
self.audioPlayerMusic = [[[AVPlayer alloc] initWithURL:anUrl] retain];      
[self.audioPlayerMusic play]; 
+0

Soory, không thể phát âm thanh, với AVPlayer. Cần giúp đỡ. –

+1

Điều này sẽ ** không hoạt động ** đối với các bài hát ** được bảo vệ bởi DRM ** (như bài hát từ đăng ký _Apple Music_) hoặc cho những bài hát không khả dụng ** ngoại tuyến ** nhưng trên đám mây. Nếu bạn quan tâm đến việc kiểm tra xem nhạc có được bảo vệ bằng DRM hay đang phát nhạc được bảo vệ bằng DRM đúng cách hay không, hãy đọc câu trả lời chi tiết của tôi tại đây: https://stackoverflow.com/a/47694472/4331787 –

+0

Cảm ơn bạn đã trả lời. Ở đây bạn đã giải thích rằng làm thế nào để phát hiện theo dõi drm. Vui lòng cho tôi biết cách chơi. Tôi đang sử dụng AVPlayer nhưng nó không được chơi. Tôi có thể chơi bằng cách sử dụng MPMusicPlayer, nhưng yêu cầu của tôi là tôi cần thiết để chơi bằng cách sử dụng AVFoundation. –

0
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 
    NSURL *url = [[mediaItemCollection.items objectAtIndex:0] valueForProperty:MPMediaItemPropertyAssetURL]; 

    NSError *error; 
    self.player = [[AVAudioPlayer alloc] url error:&error]; 

    if (!error) { 
     [self.player prepareToPlay]; 
     [self.player play]; 
    } 

    [mediaPicker dismissModalViewControllerAnimated:YES]; 
} 
Các vấn đề liên quan