SDL怎么嵌入到QT中
1个回答
2016-08-05 · 知道合伙人生活技巧行家
关注
展开全部
下面是代码片段:SDL_Eventevent;staticstructSwsContext*img_convert_ctx;char*filePath="c:/test.mp4";/************************************************************************//*测试SDL窗口显示到mfc对话框中*//************************************************************************/charvariable[256];CWnd*pWnd=this->GetDlgItem(IDC_VIEW);//获取图片控件的窗口指针sprintf(variable,"SDL_WINDOWID=0x%1x",pWnd->GetSafeHwnd());//格式化字符串SDL_putenv(variable);//这句是最重要的了,将上面的字符串传入即可//剩下的就是设置视频播放大小的问题了,自己可以随便改SDL_Rectrect;//设置好播放的大小后传入SDL_SetVideoModeRECTrc;pWnd->GetWindowRect(&rc);rect.x=0;rect.y=0;rect.w=rc.right-rc.left;rect.h=rc.bottom-rc.top;//Registerallformatsandcodecsavcodec_register_all();av_register_all();if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_TIMER)){fprintf(stderr,"CouldnotinitializeSDL-%s\n",SDL_GetError());exit(1);}以下N行代码都是解码的部分,就不写了,主要写和SDL嵌入有关的下面这句大家是相当的熟悉了,用过SDL播放的都应该知道//Makeascreentoputourvideoscreen=SDL_SetVideoMode(rect.w,rect.h,0,0);//此处需要设置成缩放大小if(!screen){exit(1);}不知道大家看明白没?其实实现这个功能一共就需要四行代码,大家是不是有种蛋碎的感觉?charvariable[256];CWnd*pWnd=this->GetDlgItem(IDC_VIEW);//获取图片控件的窗口指针sprintf(variable,"SDL_WINDOWID=0x%1x",pWnd->GetSafeHwnd());//格式化字符串SDL_putenv(variable);//这句是最重要的了,将上面的字符串传入即可只要把上面的SDL_WINDOWID传入后,不管你怎么画图,播放视频,都是在那个控件中显示!这个问题绝对不是我第一个想出来的,肯定有人已经知道,但是就这么一个简单的问题,百度上却没有一个人说明!可见中国的大环境啊!为了刚接触ffmpeg的TX少走弯路我会后续写自己对SDL在MFC中运作的一些体会。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询