2013-10-21 13 views
5

Tôi đang sử dụng AVPlayer để phát nhạc mp3 âm thanh dài (8 phút), nhạc ngắn (1 đến 3 phút) phát hoàn hảo, nhưng với những bản nhạc lớn hơn, nhạc bắt đầu phát, nhưng sau khi phát một số số phút ngẫu nhiên (từ 2 đến 3:20), người chơi sẽ bắt đầu lại bài hát ngay từ đầu. Mặc dù trình phát khởi động lại nhạc, thông tin trạng thái (thời lượng và thời gian hiện tại) tiếp tục đếm bình thường, không khởi động lại, chỉ cần khởi động lại âm thanh. Ai đó có ý tưởng?AVPlayer không hoàn thành bài hát

Các tập tin tôi đang chơi là thế này: http://storage-new.newjamendo.com/download/track/57864/mp31/

Mã chơi:

AVAudioSession *mySession = [AVAudioSession sharedInstance]; 

// Assign the Playback category to the audio session. 
NSError *audioSessionError = nil; 
[mySession setCategory: AVAudioSessionCategoryPlayback 
       error: &audioSessionError]; 

if (audioSessionError != nil) { 

    NSLog (@"Error setting audio session category."); 
    return; 
} 

// Activate the audio session 
[mySession setActive: YES 
       error: &audioSessionError]; 

if (audioSessionError != nil) { 

    NSLog (@"Error activating audio session during initial setup."); 
    return; 
} 

player = [AVPlayer playerWithURL:[NSURL URLWithString:url]]; 


[player play]; 

Và đây là cách để tôi theo dõi các thông tin về thời điểm hiện tại, mà giữ tính cách bình thường.

AVPlayerItem *item = player.currentItem; 

CMTime duration = [item duration]; 
CMTime currentTime = [item currentTime]; 
+0

nó có thể liên quan đến nguồn nhạc của bạn, tôi đang sử dụng AVplayer để phát nhạc soundcloud và tôi không gặp vấn đề gì –

+0

@NicolasManzini Tôi đã thử với các trình phát tùy chỉnh khác trên internet (github) bằng cùng một bản nhạc nguồn và nó không xảy ra, chỉ với AVPlayer. –

Trả lời

1

Có vẻ rằng vấn đề là các tập tin mp3 Tôi đã trực tuyến là một mpeg-1 và các tài liệu Apple nói rằng tôi phải sử dụng mpeg-2, vì vậy tôi vừa đổi sang phiên bản chính xác, và các lỗi không xảy ra lần nữa.

+1

Tôi đang gặp vấn đề tương tự và tôi tự hỏi nếu nó là mã hóa (nếu tôi nhìn vào MP3 trong iTunes họ đang sử dụng mpeg-1). Bạn có thể cho tôi biết phần mềm bạn đã sử dụng để mã hóa MP3 bằng mpeg-2 không? –

+0

Có @RecycledSteel, điều này làm cho vấn đề của tôi ít thường xuyên hơn, nhưng sau một ngày nào đó tôi nhận ra điều đó vẫn đang xảy ra .. Vì vậy, tôi đã xóa "đã giải quyết" câu hỏi này .. vẫn đang xảy ra .. Tôi tin rằng đó là một số vấn đề với bộ nhớ cache, bởi vì nó không xảy ra với những bài hát nhỏ .. Tôi tìm thấy một số người chơi trên github không có vấn đề này, nhưng tiếc là dự án của tôi quá lớn quanh người chơi này, và tôi sẽ phải thay đổi quá nhiều thứ. Tôi hy vọng tôi có thể tìm ra giải pháp, nếu bạn làm thế, hãy cho tôi biết. –

+0

Nó sẽ là một viết rất lớn cho tôi quá. Tôi thấy rằng vấn đề cũng xảy ra khi tôi phát trực tiếp tới Safari tới thiết bị iOS (không phải MAC hoặc PC). Âm nhạc của tôi được truyền theo cách đặc biệt vì vậy tôi sẽ xem xét điều đó, chỉ cần kiểm tra luồng giống nhau trên Galaxy và hoạt động tốt. –

-1

Tôi đã cố gắng khắc phục sự cố này, nó sẽ xuất hiện (đối với tôi) rằng máy chủ đang gửi tệp dưới dạng một khối.

Tôi không biết thông tin chi tiết nhưng luồng hiện được cung cấp dưới dạng luồng "được sắp xếp" (được cung cấp trong các phân đoạn mà tôi được cho biết). Điều này không chỉ giải quyết được vấn đề mà những thứ dưới đây bắt đầu có tác dụng đối với tôi (như được đề xuất để cung cấp NaN).

float duration = CMTimeGetSeconds(self.avQueuePlayer.currentItem.duration); 

Tôi hy vọng điều này sẽ giúp, tôi không được nói nhiều về những gì đã được thay đổi trên máy chủ. Kỳ lạ là các liên kết URL của tôi hoạt động trên tất cả các thiết bị khác nhưng tôi gặp vấn đề này khi chơi từ ứng dụng và Safari của tôi.

+0

Tôi không hiểu, chính xác bạn đã làm gì? Điều gì đã thay đổi trong mã của bạn? Bạn làm việc với nó như thế nào? –

+0

Tôi thực sự cần một giải pháp, bạn có thể mô tả những gì đã thay đổi trong mã trình phát của bạn không? –

+0

Vấn đề là cách luồng được cung cấp từ máy chủ KHÔNG trong mã. Hãy để tôi cắm URL của bạn vào mã của tôi và xem điều gì xảy ra. –

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