click sur une séquence video pour la lire directement via une appli cocoa

Bonjour

 

J'ai remarqué que certaines appli d'exemples faisaient parti des appli recommandées lorsque l'on clique directement sur un fichier video. Par exemple, un click droit sur une séquence video placée sur mon bureau et je peux voir QuickTime, VLC, etc... Ca, c'est normal ! mais je vois également QTKitPlayer (une appli d'exemple cocoa) faire parti des listes d'appli proposées. Du coup, si je valide QTKitMedia, ma séquence video est directement choisie et lue par cette appli. 

 

Je suppose que QTKitPlayer est préparée pour cela mais je n'ai pas compris comment.

 

En fait, j'ai créé une appui de conversion video et je voudrais qu'elle ait ce comportement, c'est à  dire que lorsque que je click droit sur une séquence video, celle-ci puisse s'ouvrir avec mon appli.

 

Quelqu'un pour m'aider ?

Réponses

  • Tu dois définir les types de document que ton appli peut ouvrir.


     


    https://developer.apple


  • merci mpergand. 

    En effet, j'ai modifié dans info.plist : CFBundleTypeExtensions pour mettre l'item 0 à  mov et Document OS Types pour mettre l'item 0 à  Moov.

    Maintenant, quand je clique droit sur une séquence mov, mon appli apparait. Mais la suite pose problème : la video n'apparait pas. J'ai regardé dans l'exemple QTKitPlayer, j'ai pourtant modifié l'init via les codes suivants : 

     



    // Class methods ---

    + (id)movieDocumentWithMovie:(QTMovie *)movie
    {
    return [[(Document *)[self alloc] initWithMovie:movie] autorelease];
    }


    // Inits ---

    - (id)initWithMovie:(QTMovie *)myMovie
    {
    [super init];

    // init
    [self setFileType:@MovieDocument];
    [self setMovie:myMovie];

    if (movie == nil) {
    [self release];
    self = nil;
    }

    return self;
    }

    - (BOOL)readFromFile:(NSString *)fileName ofType:(NSString *)type
    {
    BOOL success = NO;

    // read the movie
    if ([QTMovie canInitWithFile:fileName]) {
    [self setMovie:((QTMovie *)[QTMovie movieWithFile:fileName error:nil])];

    success = (movie != nil);
    }

    return success;
    }

    - (id)openDocumentWithContentsOfFile:(NSString *)fileName display:(BOOL)displayFlag
    {
    NSDocumentController *sharedDocController = [NSDocumentController sharedDocumentController];

    Document *movieDocument = [sharedDocController documentForFileName:fileName];

    // first check whether we already have a document for this file
    if (movieDocument)
    { // we've got one, just bring it forward
    if (displayFlag) {
    [movieDocument showWindows];
    }
    }
    else
    { // we must create a new document
    // we always create a movie document regardless of type

    //init
    movieDocument = [[[Document allocWithZone:[self zone]] initWithContentsOfFile:fileName ofType:@mov] autorelease];

    // set up the document
    if (movieDocument)
    {
    // add the document
    [sharedDocController addDocument:movieDocument];

    // set up the document
    if ([sharedDocController shouldCreateUI]) {
    [movieDocument makeWindowControllers];
    if (displayFlag) {
    [movieDocument showWindows];
    }
    }
    }
    }

    return movieDocument;
    }



     

     

     Comment cela se fait - il ?

     

    Merci d'avance

  • Il faut aussi spécifier le type de la classe document (NSDocumentClass) dans info.plist


  • ok merci


     


    j'essaye

  • JE729JE729 Membre
    juillet 2013 modifié #6

    Le plus simple est de passer par Xcode (voir image jointe) ;)


  • Si tu veux pas tous les formats de vidéos, tu peux trier en remplaçant par com.apple.m4v-video, com.apple.quicktime-movie, public.mpeg-4, ...


  • Merci à  tous


     


    J'essaye dès lundi...


  • Bon ça y est, j'ai essayé vos propositions. C'est vrai que celle de jeremy1729 était alléchante ! et je l'ai donc essayée. Mais voilà  : mon appli n'apparait plus dans les propositions suite au click droit sur un fichier video.mov 


    Voici l'image de mes modifs : 


     


  • Bon, je viens de recréer mon projet et cette fois ci, ça marche. J'ai dû faire une mauvaise manip quelque part...


    Cependant, je souhaite pouvoir proposer à  tous les fichiers vidéos mon appui (via click droit). Ce que j'ai fais me permets de lire seulement des mov et dv (pas m4v et mp4 en l'occurrence) et j'ai essayer de supprimer tous les items du array CFBundleTypeOSTypes mais en vain 


     


    Voici ce que j'ai fais : 


  • C'est bon, j'ai trouvé : 


     


Connectez-vous ou Inscrivez-vous pour répondre.