问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么实现的SDL播放画面嵌入MFC控件中去的

发布网友 发布时间:2022-04-22 05:57

我来回答

1个回答

热心网友 时间:2023-08-14 12:31

下面是代码片段:
SDL_Event event;
static struct SwsContext *img_convert_ctx;
char * filePath="c:/test.mp4";
/************************************************************************/
/* 测试SDL窗口显示到mfc对话框中 */
/************************************************************************/
char variable[256];
CWnd* pWnd = this->GetDlgItem(IDC_VIEW); //获取图片控件的窗口指针
sprintf(variable,"SDL_WINDOWID=0x%1x",pWnd->GetSafeHwnd()); // 格式化字符串
SDL_putenv(variable);
//这句是最重要的了,将上面的字符串传入即可
//剩下的就是设置视频播放大小的问题了,自己可以随便改
SDL_Rect rect; //设置好播放的大小后传入SDL_SetVideoMode RECT rc;
pWnd->GetWindowRect(&rc);
rect.x = 0; rect.y = 0;
rect.w = rc.right-rc.left; rect.h = rc.bottom-rc.top;
// Register all formats and codecs avcodec_register_all();

av_register_all();
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());

exit(1);

}

以下N行代码都是解码的部分,就不写了,主要写和SDL嵌入有关的

下面这句大家是相当的熟悉了,用过SDL播放的都应该知道

// Make a screen to put our video

screen = SDL_SetVideoMode(rect.w, rect.h, 0, 0); //此处需要设置成缩放大小
if(!screen) {

exit(1);
}

不知道大家看明白没?其实实现这个功能一共就需要四行代码,大家是不是有种蛋碎的感觉?
char variable[256];

CWnd* pWnd = this->GetDlgItem(IDC_VIEW); //获取图片控件的窗口指针

sprintf(variable,"SDL_WINDOWID=0x%1x",pWnd->GetSafeHwnd());
// 格式化字符串

SDL_putenv(variable);

//这句是最重要的了,将上面的字符串传入即可

只要把上面的SDL_WINDOWID传入后,不管你怎么画图,播放视频,都是在那个控件中显示!
这个问题绝对不是我第一个想出来的,肯定有人已经知道,但是就这么一个简单的问题,百度上却没有一个人说明!可见中国的大环境啊! 为了刚接触ffmpeg的TX少走弯路我会后续写自己对SDL在MFC中运作的一些体会。
SDL怎么嵌入到QT中

同样道理,GTK,QT更适合于开发GUI。用这些库画窗口,画对话框,进度条什么的控件,会比较方便。道理类似于,你在Windows中使用MFC,1分钟就能出来一个支持窗口界面来:)这要比自己,一个矩形一个矩形画,要方便多了吧?另外,Qt, GTK是基于X系统的Xlib库的,这也是一些历史原因吧。因为,我们目前使...

我想实现文件拖拽到控件里面 拼接屏怎么实现多个画面显示 如何实现控件的拖拽 画面程序可以实现什么 想象的画面会实现吗 实现内心的画面 自己实现控件 安全控件实现 winform实现控件自由拖动
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁有韩国手机号帮我验证一下游戏账号。 a4与b5纸尺寸是多少厘米 武松一踅的踅是什么意思 空调滴水一直开会爆炸吗 空调机滴水对身体有危害吗? 空调内机漏水还能继续用吗? 必备资料一览解除房产抵押所需 4399开心宝贝如何能快速有钱 在4399开心宝贝里怎么拜访好友赚取 在4399开心宝贝中怎样才可以有许多钱 scratch少儿编程7,图形化编程,培养儿童编程思维 备用机都是用来干嘛的 如何在Android用FFmpeg+SDL2.0之同步音频 听说图形化编程并不是正规的编程语言,那孩子如果... 学生党有必要买备用机吗 如何在Android用FFmpeg+SDL2.0解码显示图像 学生备用机买什么手机好 学生备用机能接打电话用吗 目前少儿编程程序有哪些呢? 为什么图形化编程很适合孩子学习? 生活中小概率事件都有哪些 图形化编程适合多大孩子学? 38. 论述题 请至少例举3个现实生活中遇到的概率问... 生活中的概率估计问题 生活中的问题 绝大部分是概率 掷骰子概率问题(生活中常见)求解 西门子300的sf灯闪烁是什么故障 实际生活中概率问题,谢谢 生活中的坐车概率问题 一道生活中发生的概率问题,求数学大神解答。 学生党想买个备用机 如何让ffmpeg从SDL1.*转到SDL2.*上 陶瓷茶具怎么清洁与保养 Qt中如何使用ffmpeg实现转码和播放 学生党 求备用机推荐 怎么去除盖碗上的茶垢 巧用小苏打去茶垢 除了DirectShow还有什么能写视频播放器? FFMPEG+SD... 学生买备用机是不是浪费 茶叶陶瓷换一种茶叶怎么新怎么清理那个陶瓷啊 在校学生想买个备用机,不知道是选择iphone5s还是... 茶杯上的茶垢怎么处理? 我想买部备用机带去学校,选什么好。价格1000左右。 学生党买备用机求200左右的智能手机 有没有100学以内的备用机 如何在Android用FFmpeg+SDL2.0解码图像线程 新买的陶瓷茶具怎么清洗 上学交了个备用机,没有卡,如果老师要查怎么办? 有人用过松能电脑升降台吗?怎么样 linux 下怎样使用ffmpeg sdl开发程序 请教ffmpeg在centeOS 64位下的编译问题