2013-10-21 14 views
5

Sto utilizzando AVPlayer per riprodurre musica audio in streaming audio lungo (8 minuti), musiche brevi (da 1 a 3 minuti) suona perfettamente, ma con queste musiche più grandi la musica inizia a suonare, ma dopo aver suonato un po ' minuti casuali (tra 2 e 3:20) il giocatore ricomincia la traccia dall'inizio. Sebbene il lettore riavvii la musica, le informazioni sullo stato (durata e ora corrente) continuano a contare normalmente, senza riavvio, solo l'audio ricomincia. Qualcuno ha un'idea?AVPlayer non sta terminando la traccia dello stream

Il file sto giocando è questo: http://storage-new.newjamendo.com/download/track/57864/mp31/

Il codice giocatore:

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]; 

Ed ecco come lo monitorare le informazioni circa l'ora corrente, che continua a contare normalmente.

AVPlayerItem *item = player.currentItem; 

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

potrebbe essere correlato alla fonte della tua musica, sto usando AVplayer per riprodurre musica soundcloud e non ho alcun problema di sorta –

+0

@NicolasManzini Ho provato con altri giocatori personalizzati su internet (github) usando la stessa musica fonte e non sta accadendo, solo con AVPlayer. –

risposta

1

sembra che il problema è che il file mp3 che stavo Streaming era un MPEG-1 e la documentazione di Apple dice che devo usare mpeg-2, così ho appena cambiato la versione corretta, e la l'errore non sta accadendo di nuovo.

+1

Sto avendo lo stesso problema e mi chiedo se sia la codifica (se guardo MP3 in iTunes stanno usando mpeg-1). Puoi dirmi quale software hai usato per codificare MP3 con mpeg-2? –

+0

Sì @RecycledSteel, questo ha reso il mio problema meno frequente, ma dopo un giorno mi sono reso conto che sta ancora accadendo .. Quindi ho rimosso il "risolto" di questa domanda .. sta ancora accadendo .. Credo che ci sia qualche problema con la cache, perché non succede con piccole canzoni .. Ho trovato alcuni giocatori su github che non hanno questo problema, ma sfortunatamente il mio progetto è troppo grande per questo player, e dovrei cambiare troppe cose. Spero di trovare la soluzione, se lo fai, fammi sapere. –

+0

Sarebbe una riscrittura molto grande anche per me. Trovo che il problema si verifica anche quando eseguo il flusso su Safari su un dispositivo iOS (non su MAC o PC). La mia musica è trasmessa in modo particolare, quindi ho intenzione di esaminarla, basta testare lo stesso stream su una Galaxy e funziona bene. –

-1

Sono riuscito a risolvere questo problema, sembrerebbe (per me) che il server stava inviando il file come un blocco.

Non conosco i dettagli, ma il flusso è ora fornito come un flusso "a distanza" (è fornito in segmenti che mi è stato detto). Non solo questo ha risolto il problema, ma queste cose di seguito hanno iniziato a funzionare per me (come richiesto di fornire NaN).

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

Spero che questo aiuti, non mi viene detto molto su ciò che è stato modificato sul server. Stranamente i miei collegamenti URL hanno funzionato su quasi tutti gli altri dispositivi, ma ho riscontrato questo problema durante la riproduzione dalla mia app AND Safari.

+0

Non capisco, cosa hai fatto esattamente? Cosa è cambiato nel tuo codice? Come stai lavorando con esso? –

+0

Ho davvero bisogno di una soluzione, puoi descrivere cosa è cambiato nel tuo codice giocatore? –

+0

Il problema era come lo stream veniva fornito dal server NON nel codice. Lasciami collegare il tuo URL al mio codice e vedere cosa succede. –

Problemi correlati