Quicktime mit URL starten

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

  • Quicktime mit URL starten

    Hallo,
    ich möchte gerne QuickTime mit einer URL (.mp4 Datei) aus einer Cocoa-Application (für OSX) starten!

    Ich habe auch schon diverse Ansätze hinter mir. Folgendes funktioniert schon teilweise:

    Quellcode

    1. NSTask *task = [[NSTask alloc] init];[task setLaunchPath:@"/usr/bin/open"];[task setArguments:[NSArray arrayWithObjects:@"/Applications/QuickTime Player.app", nil]];[task launch];



    Dort wird noch keine URL übergeben. Ich habe die 3. Zeile schon folgendermaßen angepasst - allerdings ohne Erfolg:

    Quellcode

    1. [task setArguments:[NSArray arrayWithObjects:@"-a '/Applications/QuickTime Player.app'", @"http//:...", nil]];


    QuickTime Player wird bei dem Parameter -a nicht mehr gefunden :/ Ohne -a startet nur Quicktime und der Browser mit einer leeren Seite (kein Video etc.).

    War nur ein Versuch:

    Quellcode

    1. [task setArguments:[NSArray arrayWithObjects:@"-a '/Applications/QuickTime Player.app' http://...", nil]];


    Funktioniert natürlich nicht, da Parameter extra eingetragen werden sollen, oder?

    Könnt ihr mir einen Lösungshinweis geben? Ich komme nicht weiter :(

    Vielen Dank im Vorraus!
  • little_pixel schrieb:

    Noch eine Anmerkung zu Deinem NSTask Code:

    Jeder Parameter bzw. Wert muss in dem Array genau ein Eintrag sein.

    Viele Grüße
    Vielen Dank für die schnelle Antwort!
    Und wieso funktionieren dann die folgenden Möglichkeiten nicht:

    Quellcode

    1. [task setArguments:[NSArray arrayWithObjects: @"/Applications/QuickTime Player.app", @"http://...", nil]];




    Quellcode

    1. [task setArguments:[NSArray arrayWithObjects: @"-a", @"/Applications/QuickTime Player.app", @"http://...", nil]];


    Beide Codes liefern folgendes:

    Program received signal: “EXC_BAD_ACCESS”.
    sharedlibrary apply-load-rules all
  • Wie bereits erwähnt, so würde ich das nicht mit NSTask erledigen.

    Beispiel, siehe unten.

    Viele Grüße

    Quellcode

    1. -(BOOL)schnickSchnack
    2. {
    3. // …
    4. NSString *text = @"http://a590.phobos.apple.com/us/r1000/084/Music/89/83/9d/mzm.fmghshif.aac.p.m4a";
    5. if([text length] < 1)
    6. {
    7. return NO;
    8. }
    9. // …
    10. ASBQuickTimeApplication *application = [self quickTimeApplication];
    11. if(application == nil)
    12. {
    13. return NO;
    14. }
    15. // …
    16. [application openURL:text];
    17. // …
    18. return YES;
    19. // …
    20. }
    21. -(ASBQuickTimeApplication*)quickTimeApplication
    22. {
    23. // …
    24. NSString *text = @"com.apple.QuickTimePlayerX"; // TODO
    25. if([text length] < 1)
    26. {
    27. return nil;
    28. }
    29. // …
    30. ASBQuickTimeApplication *application = [SBApplication applicationWithBundleIdentifier:text];
    31. if(application == nil)
    32. {
    33. return nil;
    34. }
    35. // …
    36. return application;
    37. // …
    38. }
    Alles anzeigen
  • Ja, hatte ich auch schon mit dem Framework versucht. Nach dem Import des FW, werden ASBQuickTimeApplication etc. immer noch nicht erkannt.
    Fehlt da dann noch etwas? (habe versucht im Header #import... hinzuzufügen)?

    Vielen Dank für einen kurzen Hinweis!
  • - Terminal öffnen
    - Code reinhauen: sdef /Applications/QuickTime\ Player.app | sdp -fh --basename ASBQuickTime
    - Finder öffnen und in Dein Heimatverzeichnis wechseln
    - die Datei "ASBQuickTime.h" in Dein Projektverzeichnis verschieben
    - die Datei "ASBQuickTime.h" bei geöffnetem Xcode links irgendwo hinziehen, wo es für Dich logisch ist
    - im Xcode linke Seite Dein Projekt markieren
    - in Xocde mittleres View "Build Phases" auswählen
    - "Link Binary with Libraries" öffnen und das "+" drücken
    - "ScriptingBridge.framework" hinzufügen
    - in der Klasse, in der Du das Dingenszeugs verwenden möchtest hinzufügen: #import "ASBQuickTime.h"

    Viele Grüße
  • Warum so kompliziert? Warum nimmst Du nicht einfach eine der NSWorkspace -openURL... Methoden?


    Quellcode

    1. [[NSWorkspace sharedWorkspace] openURLs:@[url]
    2. withAppBundleIdentifier:@"com.apple.QuickTimePlayerX"
    3. options:NSWorkspaceLaunchAsync
    4. additionalEventParamDescriptor:NULL
    5. launchIdentifiers:nil];

    Tatsache, funktioniert. "Früher" hat das nicht funktioniert, da bin ich mir sicher.

    Wie kann ich QT als vorderes Programm starten? Und: lässt sich Autoplay an/ausschalten?

    Nach dem -openURL: sendest Du ein -activate.

    "Autoplay" ein - einfach nur öffnen
    "Autoplay" aus - öffnen und dann dem Ding direkt ein -pause senden

    - von der Anwendung -documents abholen.
    - am Index 0 wird vermutlich das vorderste Fenster mit Deinem nudelnden Titel/Film stehen
    - besser ist aber, wenn Du das Array durchläufst und die ASBQuickTimeDocument nach Namen bzw. URL prüfst
    - somit stellst Du wirklich sicher, dass Du auf das richtige ASBQuickTimeDocument zugreifst und ein -pause sendest

    Viele Grüße