win32 下多窗口显示问题

meegowei 发布于 2010/11/16 15:29
阅读 995
收藏 1
在windows 下使用 mplayer ,如何实现在多个窗口上显示一个视频流. 即我想打开一个视频文件, 但想在两个以上窗口上显示同一个视频, 使用 mplayer −wid  参数,无法把视频显示在多个窗口 上,有其它方吗 ?
加载中
0
m
meegowei
其实我也想过下面的解决方法:

1.使用 mplayer 本身的截图方法 即使用如下参数,生成 jpg 文件,再把生成的 jpg 文件 显示在电脑上, 不过这样质量好差,而且严重影响机器性能 命令如下: mplayer video.nut −vf format=bgr15 −vo jpg

2.使用截屏技术 由于 mplayer 使用的是 directx 的 direct draw 来显示视频,其视频是显示在 layer 层,普通的 gdi 截屏是无法实现对 mplayer 截屏的,只能自己通过 directx 的底层钩子来实现(类似 qq 截屏),非常复杂; 当然,我们可能通过禁用 directx 视频加速来实现截屏,但这样做,等于无法发挥 mplayer 使用 directx 性能好的优点,并非好办法 所以看看有没有大哥可以解决这个问题

0
m
meegowei

解决方案:

唯一办法就是修改 mplayer 的源代码,思路如下

1. 增加两个 mplayer 的 command 选项,把 另一个窗口的句柄传入 mplayer ,这里要修改  command.c 及 cfg-mplayer.h

2. 增加一个全局的 vo_functions_t 类型变量(即增加多一个 vo(video out ) ) 的输出变量 , 在原来 mplayer 原来视频输出基础上,得多输出一次,我是这样修改的

(1).先在 vodeo_out.c 中,修改  init_best_video_out  函数 ,多初始化一个 vo

(2).修改 video_out.c 中的 config_video_out , 多 config 一次我们自己的 vo

(3). 修改你需要的 vo 的源代码,主要是修改 control 函数,实现显示视频, 由于我只用到 directx , 所以我主要是修改 vo_directx.c 即可实现

返回顶部
顶部