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

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

发布网友 发布时间:2023-10-12 17:32

我来回答

1个回答

热心网友 时间:2024-12-12 21:34

下面是代码片段:
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
莲花冬天发芽好吗 过冬荷花什么时候发芽 一个手机号怎样登陆两个孩子的长沙市中小学生人人通云平台 人人通怎么进入学校 人人通电脑版学生怎样登录 名侦探柯南真人版3为什么要换人? 真人版柯南,你最喜欢小栗旬还是沟端淳平? 央企中国稀土集团落户江西,衷心希望江西摆脱“环江西经济带”地位_百度... 来天津的央企有哪些 东丽区的央企有哪些 CS的优化在哪些方面? 杭州市临安区哪里有补异地移动卡的地方 无法连接到远程计算机怎么办:[2]远程计算机 ...是帮别人贷的款现在他不还钱,现在被起诉了,贷款车找不到了怎么办... 十堰丹江口市多少所高中,每所高三年级多少班,每班大概多少人 十堰郧县有多少所高中,每所高三年级大概多少班,一班大概多少人 泰安有适合情侣去的地方吗?9 什么叫手机锁屏,是密码上锁吗 sdl window怎样设置背景 手机锁屏有什么好处?12 在交换二重积分的次序之后,新的二重积分的积分区域要怎么求?能...1 请问交换二重积分顺序的时候 为什么要分成两部分?12 红米n0te移动4g增强版和红米note增强版哪个好 车贷手续费2000合理吗 我的QQ是隐身的,但是我的QQ校友好友里面总是显示我在线,请问有什么方 ... 快递结单了怎么再到国家邮政申诉,没有给我解决问题,快递公司私... 如何投诉中通快递9 怎么登录不上去怎么办353 在word中怎么制作网格作文纸? 何为手机锁屏、黑屏、休眠5 sdl1.2 多窗口2 用信用卡分期付款买手机要先刷全额吗57 分期买手机,免息是什么意思?19 月薪只有2000的一个普通人,怎样在5年内赚到50到100万...6 我一个手机号绑定了两个,怎样删除其中一个 人民日报与光明日报谁更权威26 光明日报理论版与光明网理论频道是一回事吗?我指文章内容2 关于二重积分,请问这道题为什么x区域要分为两段?4 二重积分的极坐标积分顺序改为先积θ然后积r,但为什么要分成两...4 高数 微积分II的内容 计算 二重积分 为什么交换积分次序后... 数学。高等数学,这个二重积分更换累次积分怎么变成两个了???...1 对于一个电容器,下列说法正确的是( )A.电容器两板间电压越大,电容越大... 泰安有适合情侣游玩居住的地方吗?除了泰山3 泰安有适合情侣的主题宾馆吗1 形容一个人疯狂的成语31 用网络怎样在5年内赚500万,我要确切可行的方案,行的通的话...12 怎样先可以短时间内赚100万以上?4 微信被封,无法登录,怎么办?还能使用吗? 我已经喜欢他半年了``他是我的同班同学,他很有风度,但是有点假,谁告诉... 我上初二。喜欢同班的一个男生。他是典型理工男,学习很好,人也很老实...