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.
- AudioStreamingAgent.OnBeginStreaming viene eseguito
- Сode per creare MediaStreamSource viene eseguito
- AudioStreamer.SetSource metodo viene eseguito con nuova istanza MediaStreamSource
- 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.
Sample with problem reproduction, VS 2012 (campione si basa su Background Audio Streamer Sample)
Passaggi per riprodurre con il codice di esempio:
- Installare app
- Premere il tasto "tracce precarico". Copia i file mp3 da XAP a IsolatedStorage.
- 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".
- Continuare con il passaggio 3 fino a quando non si avvia la riproduzione della traccia del pulsante "Traccia *".
- Ultima traccia selezionata viene mostrata come una traccia attiva sia nel UVC e soprattutto barra di avanzamento sulla pagina (vedi picture)
- 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"
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
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. –
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