问答文章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中运作的一些体会。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
圈里的数字是怎么来的? 感谢老师的感谢信怎么写 ...仰卧起坐时就像是用头把上身扯自己起来的,腰部也没有以前那... 如何下载电子杂志模板 word中的横线删不掉怎么办 苹果手机不见了,怎么查定位? 新买的导航仪为什么总是反复显示休眠倒计时,而且还充不进去电??? fαn的汉字第三声 这个字是ban吗?(贩) 如何在家自制薯片 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位下的编译问题