Для начала, эта статья об экспортерах фильмов должна помочь вам начать:
http://www.mactech.com/articles/mactech/Vol.16/16.05/May00QTToolkit/index.html
Несмотря на то, что MacTech - это ресурс Mac, все описанные функции API должны быть доступны вQuickTime для Windows SDK.
Я сам соберу пример кода вместе, как только я найду время.
Редактировать
См. Эту выдержку из книги для получения дополнительной информации:
QuickTime Toolkit - Основные функции воспроизведения фильмов и мультимедиа @ Google Книги
Редактировать 2 - The High-Подход на уровне: экспортеры фильмов
Если все, что вам нужно сделать, - это извлечь все видеокадры из фильма QuickTime и преобразовать их в другой формат, поддерживаемый QuickTime API, вам не нужно будет ничего делатьдействия любого уровня при использовании Movie Exporter .
Приведенный ниже пример кода позволяет извлечь и преобразовать все видеокадры из фильма QuickTime в, например, набор файлов JPEG.используя программно вызванный диалог экспорта фильма.
Просто выберите Фильм к последовательности изображений в комбинированном окне Экспорт диалогового окна и выберите нужный формат изображения, нажав Опции .
Примечание 1: Если вам нужно сделать это не в интерактивном режиме, просто дайте мне знать.
Примечание 2: обработка ошибок для ясности опущена
#include "Movies.h"
#include "QTML.h"
#pragma comment (lib, "QTMLClient.lib")
...
int flags = createMovieFileDeleteCurFile
| showUserSettingsDialog
| movieToFileOnlyExport;
ItemCount movie_prop_count = 0;
CFStringRef cfpath = 0;
Boolean bool_true = true;
QTNewMoviePropertyElement movie_props[ 2 ];
Movie movie;
// initialize QuickTime API
InitializeQTML( 0 );
EnterMovies();
// set up Core Foundation string for source path (argv[ 1 ]) contains the full path to the MOV file to convert
cfpath = CFStringCreateWithCString( 0, argv[ 1 ], kCFStringEncodingASCII );
movie_props[movie_prop_count].propClass = kQTPropertyClass_DataLocation;
movie_props[movie_prop_count].propID = kQTDataLocationPropertyID_CFStringNativePath;
movie_props[movie_prop_count].propValueSize = sizeof(cfpath);
movie_props[movie_prop_count].propValueAddress = (void*)&cfpath;
movie_props[movie_prop_count].propStatus = 0;
++movie_prop_count;
// make Movie active
movie_props[movie_prop_count].propClass = kQTPropertyClass_NewMovieProperty;
movie_props[movie_prop_count].propID = kQTNewMoviePropertyID_Active;
movie_props[movie_prop_count].propValueSize = sizeof(bool_true);
movie_props[movie_prop_count].propValueAddress = &bool_true;
movie_props[movie_prop_count].propStatus = 0;
++movie_prop_count;
// aquire Movie for our Movie file
NewMovieFromProperties( movie_prop_count, movie_props, 0, 0, &movie );
// invoke conversion dialog
ConvertMovieToFile( movie, 0, 0, 0, 'TVOD', 0, 0, flags, 0 );
// clean up
DisposeMovie( movie );
CFRelease( cfpath );
ExitMovies();
TerminateQTML();
...