• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: six things I wasn't able to do with Cocoa
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: six things I wasn't able to do with Cocoa


  • Subject: Re: six things I wasn't able to do with Cocoa
  • From: Alex Curylo <email@hidden>
  • Date: Fri, 28 May 2010 12:33:41 -0700

On 2010-05-28, at 12:02 PM, email@hidden wrote:

> i've tried everything -- how do other people get movie posters and/or grab
> movie frames?

With classic QuickTime if there was no poster frame specifically set in the movie QuickTime would reliably return the first frame. With QuickTimeKit that is ... inconsistent. Safest to just grab the first frame yourself.

As for capturing frames, here's the I believe currently recommended way to do it:

   NSDictionary *imageAttrs = [NSDictionary dictionaryWithObjectsAndKeys:
      QTMovieFrameImageTypeNSImage, QTMovieFrameImageType,
      [NSArray arrayWithObject:@"NSBitmapImageRep"], QTMovieFrameImageRepresentationsType,
      [NSNumber numberWithBool:YES], QTMovieFrameImageDeinterlaceFields,
      [NSNumber numberWithBool:YES], QTMovieFrameImageHighQuality,
      [NSNumber numberWithBool:YES], QTMovieFrameImageSingleField,
      nil
   ];

   QTTime captureTime = [0 .. self.movie.duration];

   NSError *captureError = nil;
   NSImage *captureFullFrame = [self.movie frameImageAtTime:captureTime
      withAttributes:imageAttrs
      error:&captureError
   ];

That allows for a variety of other image types besides QTMovieFrameImageTypeNSImage, but is QuickTime 7.2 dependent. If you need older version compatibility, use

- (NSImage *)frameImageAtTime:(QTTime)time;

Either way, these should only be called on the main thread. Theoretically you can detach movies and move them around between threads, but you have a good chance of running into issues doing so, particularly if you're working with QTKit captured movies; something about the rendering context I think, although the details are old enough to be kinda fuzzy now. Safer to just call performSelectorOnMainThread: to get each grabbed frame if you've got a background renderer or suchlike, I'd say.

--
Alex Curylo -- email@hidden -- http://www.alexcurylo.com/

"...the variable PI can be given that value [3.141592653589793] with
 a DATA statement. This simplifies the modifying of the program,
 should the value of PI ever change." -- SDS Sigma series Fortran manual



_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Prev by Date: Re: Changing cursors in window's bounds
  • Next by Date: Re: six things I wasn't able to do with Cocoa
  • Previous by thread: Re: six things I wasn't able to do with Cocoa
  • Next by thread: Where is zlib located?
  • Index(es):
    • Date
    • Thread