qt中用SDL 1.3实现播放视频双窗口(附源代码)

这篇博客介绍了如何在QT环境下利用SDL 1.3库在一个窗口内同时播放两段视频。作者通过修改SDL源代码,避免了SDL自动生成窗口,而是将窗口控制权交给QT,并详细阐述了实现过程和关键代码改动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境:vs2008 + xp或mingw + gcc

  
    这个问题在开发视频软件thinkvd的对比效果前也一直困惑着我,在网上找了些资料,也没有结果, 现在把实现的过程简单记录下来,供大家参考。当时是以为sdl代码比较复杂,所有在这以前从来没有去看过SDL的源代码,尽管我下了它的1.26, 1.3源代码。

先说要实现的目标:在QT的一个window中放两个视频播放画面,一个是原始视频,一个是效果视频。如图:

思路:
1。跳过由sdl直接创建弹出窗口,那么它的窗口应该是QT指定的窗口。
2。给SDL传递窗口Handle,由SDL_getenv("SDL_WINDOWID")来实现
3。在SDL调用系统函数CreateWindow前把它Filter下来,否则会生成一个独立的窗口。
4。更改当前窗口的消息循环.

  印象中当时是参考1.26版本源代码来实现的,由于1.26与1.3相差比较大,因此走了一些弯路。
当时花了很多时间在处理消息循环上, 最终才形成下面的代码。

下面是SDL中需要更改的地方:
sdl1.3/src/video/win32/SDL_win32window.h:
extern void WIN_DestroyWindow(_THIS, SDL_Window * window);
extern SDL_bool WIN_GetWindowWMInfo(_THIS, SDL_Window * window,
                                    struct SDL_SysWMinfo *info);
&#

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值