如题,通过文件映射把加密后的本地视频文件映射进内存,然后解密后直接在内存中播放,不想做成解密后存盘再播放,虽然media player控件播放本地文件很简单,但是我要做成 对解密后的内存视频数据直接播放,有比较好的办法吗?
加、解密已有开源库可以使用,主要问题是如何直接播放内存中解密后的视频数据
加、解密已有开源库可以使用,主要问题是如何直接播放内存中解密后的视频数据
解决方案 »
- socket 服务器程序 要写成Windows服务么?如何做?
- exe程序由于程序配置不正确,应用程序未能启动
- 在看一个类,其中有几个疑问,请大家指教!!!在线给分
- 急...刚问了没人回答,加分,如何得到某一年中每个月的天数???
- 如何测试磁盘文件是否可以改名
- 请教一个VC自带库函数的问题(在线急候)
- 我这辈子不知得罪哪位神仙了,背字当头啊 :( 大家来顶啊!
- 有关ctreeview的问题,谢谢各位了
- 那位大侠做过条形码输入的程序?能谈谈怎么做吗?多谢了!
- 高程有没有出分数线!!!!!
- vc++ 加载AUTOCAD ARX文件,如何屏蔽提示
- c++象棋程序调试时有Debug Assertion Failed,求大神解答
如果播放器只支持以路径形式的方式的接口,那么可以把文件释放到一个隐藏目录然后播放,完了删除。或者,给播放器加密后的文件路径,但是HOOK播放器的相关函数,比如HOOK readfile,在读取时解密。
或者像楼上说的那样,自己解码帧数据,然后自己画出来。
如果用VC中的media player 控件实现解密播放,具体需要hook 哪些函数呢?
如果用VC中的media player 控件实现解密播放,具体需要hook 哪些函数呢?
我没有用过这个控件,大致说下我的猜测,首先需要HOOK CreateFile函数,当调用控件相关接口函数设置需播放文件路径后,控件应该会调用CreateFile函数打开文件,HOOK这个函数,然后当文件名为需播放文件时,正常打开文件并保存得到的文件句柄。然后需HOOK ReadFile,当控件调用ReadFile时,并且文件句柄为需播放文件句柄时,你就知道控件此时需要读取需播放文件的内容,然后根据ReadFile的参数值读取文件相应的内容并且解密,然后返回给控件。
比如控件调用ReadFile获取文件前10个字节,首先你要知道ReadFile读取的是不是加过密的播放文件,控件也有可能是读取其他文件,这就不需要解密,所以你需要首先得到CreateFile打开播放文件的句柄,然后与ReadFile中的句柄进行比较。如果两个句柄一样,说明ReadFile是读取的播放文件,但是播放文件是经过加密的,读取出来的比如是1234567890,你就需要解密,解密过后的比如是0987654321,然后再返回给控件,这样控件得到的就是正常的播放文件数据。