QuickTime SDK for Windows之二:video解码

来源:互联网 发布:cpa挂机赚钱软件 编辑:程序博客网 时间:2024/04/19 08:06

QT SDK提供三种方法对MOV文件的video进行不同深度的操作。

1>     movie controller:使用controller组件,封装了基本的数据操作,方便播放等操作。

2>     movie tools:提供最基本的API接口,可以对流操作或帧操作。

3>     Image Compression component:可以进行每一帧的编解码。

 

下面,用伪代码说明以上三种用法了,具体的代码会在附件中给出或来信向我索取 J

 

1>     movie controller : [zz]QuickTime SDK》中的第三节 QuickTimeWindows编程

 

可编译的代码: 附件[simpleplayersdi.win.zip]

 

VC6下编译,记住要把Quicktime SDK的头文件件和库文件加入你的工程啊.

 

2>     movie toolbox:

 

1、  在程序其始处初始化QuickTime媒体层(InitializeQTML) QuickTime(EnterMovies)

2、  建立QuickDraw图形端口与视频窗口(CreatePortAssociation)的联系。

 

3、  打开视频文件(OpenMovieFile) 并从中提取视频内容(NewMovieFromFile)

 

4、  移动时间线到开始位置。

 

5、  移动movie时间线(GetMovieNextInterestingTime

 

6、  设置播放时间点(SetMovieTimeValue),播放image(UpdateMovie, MoviesTask).

 

7、  移动时间线到下一帧位置,转到5,直到文件末尾。

 

8、  在程序结束处,中断QuickTime (ExitMovies) QuickTime 媒体层(TerminateQTML)

 

可编译的代码:附件[movietools.rar]

 

 

VC6下编译,记住要把Quicktime SDK的头文件件和库文件加入你的工程啊.

 

 

3>  Image Compression component

 

由于用到了component回稍微增加一些复杂度了。这里只说明解码的流程,编码涉及到更多的参数,以后有时间再探讨了L

1         在程序其始处初始化QuickTime媒体层(InitializeQTML) QuickTime(EnterMovies)

 

2         建立QuickDraw图形端口与视频窗口(CreatePortAssociation)的联系。

 

3         打开视频文件(OpenMovieFile) 并从中提取视频内容(NewMovieFromFile)

 

4         调用QTCmpr_DeCompressSequence函数,在文件QTDecompress.c中定义。

 

4.1 创建Component对象

 

       // open an instance of the Standard Image Compression dialog component

 

       OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType);

 

4.2 得到Picture对象

 

       // get the bounding rectangle of the movie

 

GetMoviePosterPict(mySrcMovie);

 

       4.3 创建Gworld,设置解码后的数据格式为32bit RGB(k32ARGBPixelFormat)

 

              NewGWorld(&myImageWorld, k32ARGBPixelFormat, &myRect, NULL, NULL, 0L);

 

4.4 // get the pixmap of the GWorld;

 

GetGWorldPixMap(myImageWorld);

 

4.5 set movie to draw into it

 

SetMovieGWorld(mySrcMovie, myImageWorld, GetGWorldDevice(myImageWorld));

 

5         移动时间线到开始位置。

 

6         移动movie时间线(GetMovieNextInterestingTime

 

7         设置播放时间点(SetMovieTimeValue),解码 image( MoviesTask).

 

8         取得解码后的32bit RGB pixmap数据(myPixMap

 

9         显示移动时间线到下一帧位置,转到5,直到文件末尾。

 

10     在程序结束处,中断QuickTime (ExitMovies) QuickTime 媒体层(TerminateQTML)

 

参考代码:附件[qtcompress.win.zip]

 

 

VC6下编译,记住要把Quicktime SDK的头文件件和库文件加入你的工程啊.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
原创粉丝点击