Zwei Videos parallel abspielen lassen

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

  • Zwei Videos parallel abspielen lassen

    Hallo liebe Entwickler,

    ich habe folgendes Problem. Es wurde zwar schon das ein oder andere mal angesprochen, aber zu einer wirklichen Lösung ist es meines Erachtens noch nicht gekommen (korrigiert mich bitte, wenn ich mich irre).

    Ich bin hier ein Frischling und hoffe, ich verstoße gegen keine Regeln oder ähnliches :) (ansonsten einfach Bescheid sagen)

    Mein Ziel ist es, zwei Videos über zwei verschiedene Views starten zu können (per jeweiligem Button). Das Problem dabei ist, dass mir das 1. Video abbricht, wenn ich das 2. über den Knopf starten will und ebenso anders herum, sprich: "Ich kann nicht beide Videos gleichzeitig laufen lassen!". Und das ist ziemlich ärgerlich, daher bitte ich euch, mir zu helfen.
    Vielleicht hat jemand eine Idee, wie man es hinbekommen könnte?!

    Mein Code ist ziemlich simple gestrickt: (zu meiner Verteidigung:"Ich bin Anfänger! :whistling:" )

    In der Header-Datei werden lediglich die beiden Views deklariert und zwei IBActions für die Buttons:

    IBOutlet UIView *movie1View;
    IBOutlet UIView *movie2View;

    - (IBAction)playMovie1: (id)sender;
    - (IBAction)playMovie2: (id)sender;

    In der Main-Datei habe ich zweimal folgende Methode enthalten (die zweite Methode ist der selbe Text, nur die "1" durch eine "2" ersetzt):

    -(IBAction)playMovie1: (id)sender {

    NSString *filepath1 = [[NSBundle mainBundle] pathForResource:@"spot" ofType:@"mp4"];
    NSURL *fileURL1 = [NSURL fileURLWithPath:filepath1];
    MPMoviePlayerController *moviePlayerController1 = [[MPMoviePlayerController alloc] initWithContentURL:fileURL1];

    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(moviePlaybackComplete: )
    name:MPMoviePlayerPlaybackDidFinishNotification
    object:moviePlayerController1];

    [moviePlayerController1. view setFrame:movie1View.bounds];

    [movie1View addSubview:moviePlayerController1.view];

    [moviePlayerController1 play];
    }



    Ebenso gibt es noch die Notification:

    - (void)moviePlaybackComplete: (NSNotification *)notification {

    MPMoviePlayerController *moviePlayerController = [notification object];

    [[NSNotificationCenter defaultCenter] removeObserver:self
    name:MPMoviePlayerPlaybackDidFinishNotification
    object:moviePlayerController];

    [moviePlayerController.view removeFromSuperview];

    [moviePlayerController release];
    }


    Ich dachte mir in meinem jugendlichen Leichtsinn, dass ich jegliche Instanzen zweimal erstelle, aber irgendwie funktioniert das nicht!

    Meine Fragen also:

    (1) Funktioniert es überhaupt, zwei Videos parallel laufen zu lassen?
    (2) Wenn ja, worauf muss ich achten bzw. was mache ich falsch?
    (3) Kann es vielleicht auch mit -(void) dealloc o.ä. zusammenhängen?

    (4) Gäbe es eine andere Möglichkeit ein Video in einem View (oder was anderes, was NICHT im Vollbild-Modus präsentiert wird) anzeigen zu lassen, neben der MPMoviePlayerController-Klasse?
    (5) Wozu genau ist dieser Bedankomat eigentlich? Habe spontan nichts in der Hilfe gefunden!


    Ich bedanke mich schonmal im Voraus für eure Hilfe!
  • Unikum schrieb:

    Ich dachte ab dem OS X 3.2 sei etwas mehr Flexibilität in die Sache gekommen! Ärgerlich!

    Hast Du mal mit den MPMoviePlayerController vor iOS 4.0 gearbeitet? Das war echt zum K... Schau Dir mal AVPlayerLayer (geiler Klassenname) an. Damit kannst Du die Video-Ausgabe beliebig transformieren, wie jeden anderen Layer auch.

    Video-Ausgabe ist halt doch auch Ressourcen fressend und ich kann es nachvollziehen, warum immer nur ein Video auf einmal abgespielt werden kann.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Hast Du mal mit den MPMoviePlayerController vor iOS 4.0 gearbeitet? Das war echt zum K...
    Ne habe ich nicht, nur in der Theorie! Man hörte aber nichts Gutes!

    macmoonshine schrieb:

    Schau Dir mal AVPlayerLayer (geiler Klassenname) an. Damit kannst Du die Video-Ausgabe beliebig transformieren, wie jeden anderen Layer auch.

    Video-Ausgabe ist halt doch auch Ressourcen fressend und ich kann es nachvollziehen, warum immer nur ein Video auf einmal abgespielt werden kann.
    Alles klar, ich schau mir die Klasse mal an!

    Dann bedank ich mich schonmal!

    Sollte jemand irgendwelche Alternativ-Ideen haben, nur her damit!

    Vielleicht kann man ja irgendwie die Frames aufteilen, so nach dem Motto "15 fps für Video 1 und 15 fps für Video 2", das immer abwechselnd und schon laufen beide Videos! Nicht flüssig, aber seeeehr ressourcenfressend! :D

    Na gut, man sollte Brainstorming nicht immer auf Papier bringen, sondern auch einfach mal für sich behalten!
  • Falls es jemanden gibt, der hier noch an der Lösung interessiert ist.

    Es funktioniert, dass zwei Videos gleichzeitig abgespielt werden.

    Man muss das eine Video als MPMoviePlayerController und das andere als AVPlayer deklarieren, dann kann man diese auch beide parallel in unterschiedlichen Views abspielen lassen!

    Suuuper! :thumbsup:

    Ob das von der Performance her auf dem iPad umsetzbar ist, ohne dass geruckelt und gestockt wird, hab ich noch nicht getestet, theoretisch ist es aber möglich!