作为开始,这篇关于电影导出器的文章应该可以帮助您入门:
http://www.mactech.com/articles/mactech/Vol.16/16.05/May00QTToolkit/index.html
尽管 MacTech 是 Mac 资源,但所有描述的 API 函数也应该在 QuickTime for Windows SDK 中可用。
我一有时间就会自己拼凑一些示例代码作为参考。
编辑
有关其他信息,请参阅本书摘录:
QuickTime Toolkit - 基本电影播放和媒体类型 @ Google 图书
编辑 2 - 高级方法:电影导出器
如果您需要完成的只是从 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();
...