AVQueuePlayer spielt Videos nicht ganz ab

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AVQueuePlayer spielt Videos nicht ganz ab

    Hi,

    ich nutze einen AVQueuePlayer um Videos hintereinander abzuspielen, das funktioniert soweit auch wunderbar, allerdings schneidet er bei allen Videos bis auf das letzte die letzte Sekunde ab und macht dann direkt mit dem nächsten Video weiter. Hatte jemand von euch vielleicht schon mal ein ähnliches Problem? Hier der Code den ich nutze, das items array habe ich davor gebaut:

    PHP-Quellcode

    1. myplayer = [[AVQueuePlayer alloc] initWithItems:items];
    2. [[NSNotificationCenter defaultCenter] removeObserver:self];
    3. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishedCallback:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
    4. AVPlayerLayer* layer = [AVPlayerLayer playerLayerWithPlayer:myplayer];
    5. layer.frame = CGRectMake(0,-100, 360, 640);
    6. [self.view.layer addSublayer:layer];
    7. [myplayer play];
  • AR.DDev schrieb:

    Dann häng doch einfach eine Sekunde schwarz an jedes Video ran ;)
    :D

    macmoonshine schrieb:

    Schneidet er das Ende auch ab, wenn Du danach kein weiteres Video startest?
    Nein, das letzte Video in der Liste spielt er ganz normal ab.

    stefan schrieb:

    => bugreport.apple.com/

    Das kann aus Performance passieren. AVQueuePlayer ist nicht dafür gedacht Videoschnitt zu machen sondern um zum Beispiel eine simple Playlist zu erstellen bzw. Looping zu implementieren. Du solltest dir evtl. mal AVComposition anschauen.
    Ich mache ja auch kein Videoschnitt, ich möchte nur die von dir genannte "simple Playlist" abspielen.

    Folgendes ist mir aufgefallen:

    Ich habe 2 Eventlistener, einen wenn ein neues Video geladen wurde (finishedLoadingCallback) und einen wenn ein Video fertig abgespielt wurde (finishedCallback), mir ist aufgefallen das finishedLoadingCallback immer ca 1 Sekunde vor dem finishedCallback abgefeuert wird, ist das ein normales Verhalten?
  • wie hast du festgestellt, dass da eine Sekunde zwischen liegt? machst du NSLog() irgendwo? das kostet natürlich auch immer zeit. wenn dem so ist, dann Speicher mal die zeit ab und mach erst ganz am Schluss ein NSLog(). vielleicht blockierst du dir einfach nur selber den main thread und AVQueuePlayer macht eigentlich alles richtig.
  • In der Tat finden am Anfang jedes Videos einige Berechnungen statt und auch ein logging gibt es, diese würden aber im Ernstfall doch eher dazu führen das das nächste Video später startet und nicht früher, oder? Nichtsdestotrotz werde ich die Berechnungen mal auskommentieren und schauen was passiert.

    Die 1 Sekunde habe ich nur geschätzt.