6

Windows Phone 8 app. Stiamo utilizzando AudioStreamingAgent/Mp3MediaStreamSource per riprodurre file MP3 che potrebbero essere memorizzati nella cache locale o caricati dal Web.BackgroundAudioPlayer non inizia a giocare

Quando il file viene scaricato, stiamo ancora utilizzando AudioStreamingAgent/Mp3MediaStreamSource per garantire che saremo in grado di precache il file successivo durante la riproduzione corrente. Sì, potremmo usare solo il player integrato WP8 per i file memorizzati nella cache, ma in questo caso non saremo in grado di precache il file successivo.

Problema: Dopo varie tracce, BackgroundAudioPlayer non inizia più la riproduzione.

  1. AudioStreamingAgent.OnBeginStreaming viene eseguito
  2. Сode per creare MediaStreamSource viene eseguito
  3. AudioStreamer.SetSource metodo viene eseguito con nuova istanza MediaStreamSource
  4. PlayStateChanged è sparato nel processo in background con PlayState.TrackReady e player.Play() è chiamato in questo caso.

Dopotutto, vedo che la traccia è mostrata in UVC, ma è in stato "Pausa". Premendo "Play" in UVC, si attiva OnUserAction in background che chiama player.Play(). Niente cambia.

Picture of "stuck state"

Sample with problem reproduction, VS 2012 (campione si basa su Background Audio Streamer Sample)

Passaggi per riprodurre con il codice di esempio:

  1. Installare app
  2. Premere il tasto "tracce precarico". Copia i file mp3 da XAP a IsolatedStorage.
  3. Premere il pulsante "Traccia 1". Dopo la riproduzione della traccia, premere il tasto "Traccia 2". Quindi, dopo che la traccia 2 inizia a suonare, premere il pulsante "Traccia 3".
  4. Continuare con il passaggio 3 fino a quando non si avvia la riproduzione della traccia del pulsante "Traccia *".
  5. Ultima traccia selezionata viene mostrata come una traccia attiva sia nel UVC e soprattutto barra di avanzamento sulla pagina (vedi picture)
  6. Premendo altri pulsanti traccia nella maggioranza dei casi non fa alcuna differenza.

Il problema è riprodotto sia su dispositivo che su emulatore, sia in anteprima sviluppatore WP8 e WP8.1.

Aggiornamento: L'esaurimento della memoria non è il caso. Riproducendo il problema utilizzando sample code e guardando il file backgroundlog.xml si vede che sample uses only 6 Mb out of 20 Mb allowed Ultima colonna su questa immagine è "Utilizzo memoria | Utilizzo memoria consentito massimo"

+0

Forse avete bisogno di fare un passo indietro e rivalutare il vostro disegno; da quello che ho raccolto tu stai praticamente cercando di suonare una traccia e precache il prossimo file mentre stai ancora giocando (correggimi se sbaglio). Sembra una cosa abbastanza semplice da implementare, hai pensato di farlo? – Sam

+0

Sam, il problema non è con il design stesso, ma con il WP8. L'esempio non esegue alcun precaching: riproduce solo file locali tramite MediaStreamSource/AudioStreamingAgent. La memorizzazione nella cache del file successivo è solo un motivo per utilizzare MediaStreamSource per la riproduzione. Non è la causa in sé. Sfortunatamente, non possiamo cambiare design poiché questo è l'unico approccio che ci si adatta. –

+0

Oh capisco; quindi il tuo requisito di base è semplicemente riprodurre file mp3 locali? Sto cercando di determinare cosa stai facendo qui (quali sono i tuoi obiettivi principali) in modo da poter essere di migliore assistenza. – Sam

risposta

1

Nella mia esperienza con questo, il mio suggerimento sarebbe quello di port e iniziare a lavorare con WPA8.1 in cui le limitazioni relative alla riproduzione di sottofondo audio scompaiono.

Nello sviluppo di un'applicazione per lettore musicale per WP e durante il tentativo di memorizzare la musica durante l'utilizzo di uno mediastreamsource, sono giunto alla conclusione che potrebbe non essere possibile.Sembra che tu abbia una certa quantità di tempo o qualche altra variabile prima che il sistema operativo stomps su qualsiasi attività o lavoro di tipo di sfondo che viene fatto.

Ho scritto questo per un evangelista MS: https://drive.google.com/file/d/0By_e5C-QWr9Ka3RmbVBlWVF3R1E/edit?usp=sharing

Ecco alcuni altri SO di Ho favorito quando si cerca di risolvere questo:

BackgroundAudioPlayer is 'Playing' but not calling GetSampleAsync()

WP7 background audio resources are no longer available

HttpWebRequest from AudioPlayerAgent

AudioPlayerAgent, timer and webservice

WP7 Mp3MediaStreamSource demo not working

+1

Derek, grazie per la tua risposta. Tuttavia, a) Ho visto tutti questi thread, grazie! b) se fosse un'app di terze parti, forse potremmo andare con l'anteprima 8.1. Nessuno sa date di rilascio e un'azienda solida non può rilasciare app che sta lavorando su una build di anteprima che sarà pronta per tutti gli utenti (non so quando). Abbiamo parlato con MS, anche loro non dicono date esatte. c) Il documento è interessante e in realtà abbiamo qualcosa di simile al # 3 ma implementato usando lo streaming HTTP. –

Problemi correlati