现在的位置: 首页 > 综合 > 正文

如何让公共播放器支持特殊格式文件

2013年09月19日 ⁄ 综合 ⁄ 共 1674字 ⁄ 字号 评论关闭

视屏解码插件是如何同播放器关联起来的?

我知道一个播放器只要安装其它厂家的解码插件就能播放相关电影, 关联原理是什么啊?解码插件是dll库还是其它什么?

 

Write a DLL that exports a DriverProc() function and registers it's FOURCC in the [drivers32] section of SYSTEM.INI (Win9X) or registry key (WinNT). In DriverProc(), 

you need to handle the ICM_* messages described in the Video For Windows and Multimedia Reference chapters of the Platform SDK. Find the OpenDivX or XviD source code on the net to see real-life samples of VCM codecs. 


如:想让暴风影音能够播放我们自己保存的视频文件,由于我们自己的文件中每一帧都有自己特殊的头信息,所以暴风影音不能解析,这时我们可以自己写解码库的方式来让暴风影音寻找对应的解码器。

注意:1.如果我们特殊的类型是"Divx",我们的解码库DLL的名字应该是Divx.DLL,并且修改注册表对应位置。

          2.我们的DLL必须实现 DriverProc方法,根据DriverProc的参数uiMessage来执行不同的操作。

        __declspec(dllexport) LRESULT WINAPI DriverProc(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2) 

            uiMessage代表不同的消息类型 如:ICM_DECOMPRESS  ICM_DECOMPRESS_QUERY   ICM_DECOMPRESS_GET_FORMAT   ICM_DECOMPRESS_BEGIN    DRV_OPEN 等等消息类型

           3.实现我们自己的解码对象类,

              a.在ICM_DECOMPRESS_QUERY时,查询我们解码库支持哪种解码类型

              b.在DRV_OPEN时,创建解码对象

              c.在ICM_DECOMPRESS_BEGIN,初始化解码库相关组件

              d.在ICM_DECOMPRESS时,开始进行解码操作,并通过传入的参数返回

              e.在ICM_DECOMPRESS_END时,释放解码库相关组件

           4.在注册表中注册相关信息:如下 


[MPEG4.AddRegNT]
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,DivX.dll,,%DivX%
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32,vidc.DIVX,,DivX.dll 
HKLM,%UnInstallPath%,DisplayName,,%UninstallDispName%
HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_DivX 132 %17%\%InfFile%" 

[MPEG4.DelReg]
HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\icm\vidc.DIVX 
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,DivX.dll,,""
HKLM,%UnInstallPath%

抱歉!评论已关闭.