六章FFmpeg+SDL的视频播放器的制作-图形界面版
目录
• MFC知识
• FFmpeg + SDL视频播放器知识回顾
• FFmpeg+SDL+MFC实现图形界面视频播放器
• 练习
MFC知识
1、创建MFC工程的方法
▫ 打开VC++
▫ 文件->新建->项目->MFC应用程序
▫ 应用程序类型->基于对话框
▫ 取消勾选“使用Unicode库”(暂不详细介绍)
2、置控件
▫ 找到“工具箱”,就可以将相应的控件拖拽至应用程序对话框中
▫ 常用控件有:Button,Edit Control,Static Text等
▫ 找到“属性”选项卡:(1)可以在“Caption”属性上修改控件上的文字。(2)可以在“ID”属性上修改控件上的ID(ID是控件的标识,不可重复)
3、添加消息响应函数
▫ 双击Button控件,就可以给该控件添加消息响应函数。
▫ 在菜单栏的“项目->类向导” 处,可以添加更多种类的消息响应函数。
▫ MFC最简单的弹出消息框的函数是AfxMessageBox(“HelloWorld”)
▫ 弹出主对话框附带的对话框
void CSFFPlayerDlg::OnBnClickedAbout()
{
CAboutDlg dlg;
dlg.DoModal(); //DoModal使用这个函数弹出的对话框必须关闭之后才能点击其他按钮。
}
4、删除按钮
删除按钮不能只删除界面上的按钮,这样会编译不过的,有两种方法:(1)代码中涉及到这个按钮的代码全部删掉(2)菜单栏项目->类向导,里面选择对应的类和按钮ID,点击右侧批量删除,代码中按钮相关的就会被注释掉。
5、获取输入到可输入框中的字符:
菜单栏项目->类向导,这样在代码中就会新增一个成员m_url,通过访问这个变量就可以获取输入的值。
void CSFFPlayerDlg::OnBnClickedFiledialog()
{
CString str1;
m_url.GetWindowText(str1);
AfxMessageBox(str1);
}
6、简单调用ffmpeg中的函数,并将打印显示出来,验证环境搭建可行
CString str1;
str1.Format("%s", avcodec_configuration()); //类似于C中的sprintf函数
AfxMessageBox(str1);
7、可以额外增加一个图片上去,使用画图软件保存一张bmp格式的图片到res目录下
(1)新建一个picture control到面板,选择属性类型为Bitmap
(2)资源视图->右键->添加资源->导入(必须是一张bmp格式的图片),导入之后在资源视图里面可以找到这张图片,然后设置其id。
(3)选择属性image到对应图片的id
8、增加和windows类似的菜单栏
(1)资源视图->右键->添加资源->menu->新建:然后就构建我们想要的菜单
(2)将菜单和主界面关联:点击主界面->属性->杂项->menu
(3)为菜单栏添加对应的功能:点击到菜单中某一项,将其id改成主界面中随便一个的id,就和对应的按钮有了相同的功能。
4、其他步骤
▫ 不再列出。通过实际操作进行演示。
5、练习
▫ 制作视频播放器的界面(不包含功能)
遇到的问题及解决方案:
问题1:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
解决:LINK : fatal error LNK1158: 无法运行“E:\VS2010\VC\bin\cvtres.exe”(我的vs装在E盘)根本不需要替换直接把E:\VS2010\VC\bin\cvtres.exe删除,既可以解决问题
2、在按钮函数中不能直接播放,需要创建一个线程去播放。