2012-05-31 5 views
6

Ho un'app che gestisce lo streaming video. Partendo da una playlist .m3u8, crea una serie di AVAssets, e la ribalta attraverso di loroAVPlayer non passa da download progressivo a streaming

[player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:[assetItems objectAtIndex:index]]] 

Questo funziona bene, ma prima voglio in onda un breve video mp4 con download progressivo. Carico l'AVPlayer utilizzando

AVAsset *prerollAsset = [AVAsset assetWithURL:prerollURL]; 
[player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:prerollAsset]]; 

Svolge, ma quando io continuo con il video in streaming come prima, ottengo uno stato di AVPlayerStatusFailed, con l'errore in AVPlayerItem di The operation could not be completed

Per farlo funzionare, ho è necessario creare un oggetto AVPlayer per il preroll (download progressivo) e quindi un oggetto AVPlayer completamente nuovo per avviare la riproduzione del video in streaming.

È possibile che una singola istanza di AVPlayer non sia in grado di riprodurre video di download progressivo seguiti da video in streaming? O potrebbe esserci qualcos'altro che sto sbagliando?

+1

Sto avendo lo stesso problema. Con MPMoviePlayerController c'è la proprietà movieSourceType che possiamo impostare ma non con AVPlayer o AVPlayerItem –

+0

Questo bug esiste ancora su iOS7.1 SDK –

+0

@KentNguyen un po 'tardi, ma puoi leggere https://developer.apple.com/library/mac/ documentazione/AudioVideo/Concettuale/AVFoundationPG/Articoli/02_Playback.html, guarda la parte ** Per creare e preparare uno streaming live HTTP per la riproduzione ** – onmyway133

risposta

2

Questo bug è un problema noto e presumibilmente corretto nella prossima versione principale di iOS.

Nel frattempo, la creazione di un nuovo oggetto AVPlayer è l'unica soluzione nota.

+1

Secondo gli ingegneri Apple di WWDC14, iOS 8 ha ancora questo problema. Hanno anche detto che era molto basso nella loro lista di priorità. Torna alla soluzione! – coco