6

Ho uno AVQueuePlayer che dovrebbe riprodurre in sequenza una serie di AVURLAsset che rappresenta frammenti consecutivi di un video continuo.Intervallo fastidioso quando AVQueuePlayer passa dalla risorsa a un'altra

Ogni volta che un frammento finisce e ne inizia un altro, c'è un piccolo problema che può essere ben notato (struttura in attesa per circa 0.2sec e suono risulta disattivato)

ho cercato ricerca come ottenere intorno a quel problema, ma non ho trovato nulla Ho provato a risolverlo avendo 2 AVQueuePlayer e passando da entrambi a circa 0,2 secondi prima della fine di ogni frammento. Problema non risolto.

Qualche idea su come risolverlo?

Nota: quando si uniscono i frammenti di mp4 utilizzando un software di joypad mp4, l'output è un video uniforme e senza problemi.

+0

questa risposta ti può aiutare? http://stackoverflow.com/questions/28659404/avfoundation-play-consecutive-video-fragments – digitalHound

risposta

3

Attraversato esattamente questo. Sperimenterai quel problema tecnico non importa quello che fai. Il motivo è come funziona AVQueuePlayer. Carica l'elemento successivo quando le estremità precedenti. Quindi, se i tuoi video sono grandi, puoi anche vedere quella schermata vuota per 2-3 secondi. Una soluzione è quella che hai menzionato, cioè utilizzando due AVQueuePlayer. Ma come hai detto non funziona per te, e anche se lo fai funzionare, sarà maldestro.

Una soluzione migliore e pulita è AVMutableComposition. All'inizio può sembrare complesso, ma è un compito veloce e una tantum. Crea una composizione di tutti i tuoi video e riproducili in un semplice AVPlayer. E nel tuo caso, presumo tu debba solo giocarci, quindi non devi nemmeno esportarlo.

Per sapere come utilizzare AVMutableComposition, passare attraverso questo link. Spiegherà con il codice esatto di cui hai bisogno.

-1

Come hai detto, il modo "2 AVQueuePlayers" ha ancora problemi (alcuni problemi audio). Ho affrontato lo stesso problema e l'ho risolto usando HLS.

È possibile riprodurre file TS locali.

Inizialmente, creare file m3u8 e TS dal file di film originale.

ad es.

mediafilesegmenter -t 10 sample.mp4 

Quindi, aggiungere file di risorse al dispositivo iOS. Puoi aggiungere file da iTunes, aggiungere come risorsa, o effettuare la funzione di download e ottenere dalla tua app.

Eseguire un server http e quindi passare l'URL locale a AVPlayerController. Ho usato cocoaHttpServer.

Qui metto un semplice esempio.

https://github.com/satoshi0212/samples/tree/master/TSPlaySample