ffplay for MFC

挖坑

——————————

首先,先实现FFmpeg+SDL+MFC实现图形界面视频播放器。

在搜MFC的时候发现了这样的说法。所以对于MFC大概需要浅尝辄止吧。



1.新建一个MFC工程文件(由于我的VS中的VC++安装不完整,所以一开始无法新建MFC工程文件,需在控制面板的程序卸载中对VS2015进行修改,具体我也不知道需要哪个,总之我把对应的VC++目录下的未安装文件都勾上了。)

安装更新也是属于被屏蔽的,记得找个好点梯子,稳定点比较好,不然折腾死人(一分钱一分货吧,不然很耗时间的╮(╯▽╰)╭,中途断掉又要重来,我能怎么办啊我也很绝望啊)。


然后就可以新建MFC工程啦。

点击下一步

选择基于对话框


点击完成之后就出现了如下图所示:


接下来开始设置控件

点击  菜单栏 --> 视图--->工具箱,打开工具箱。


常用控件有:Button,Edit Control,Static Text等

找到“属性”选项卡

可以在“Caption”属性上修改控件上的文字

可以在“ID”属性上修改控件上的ID(ID是控件的标识,不可重复)

选中这个执行



然后弹出对话框如下图所示:

这就是一个简单的编写MFC的过程。


简单地了解了MFC之后,现在我们需要来实现FFmpeg + SDL + MFC实现图形界面视频播放器。

主要就是将FFmpeg和SDL这两个资源整合进MFC。



FFmpeg解码器与MFC的整合

需要将视频文件路径从MFC界面上的 Edit Control 控件传递给FFmpeg解码器

GetWindowText()

SDL与MFC的整合

需要将SDL显示的画面绘制到MFC的 Picture Control 控件上。

SDL_CreateWindowFrom()

实现一个图形界面的视频播放器


用VS2015直接打开VS2010的文件,然后发现编译报错。


在公共头文件里或者产生这些警告的cpp文件的开头加入pragma warning。

#pragma warning(disable:4005 4312 4244 4520 4018 4267 4800 4996 4482 4101 4002 4102 4101)

但是,还是报错,于是我强制关闭了警告报错。


1>ffplaycore.cpp(1692): error C3688: 文本后缀“PRId64”无效;未找到文文本运算符或文本运算符模板“operator """"PRId64”

原因分析

这种错误一般是在对下载得到的代码进行编译时出现,实际是文件编码问题。这时下载得到的文件编码为UTF-8,而Windows中文版默认使用GB2312,对于UTF-8编码的某些字符,在中文版VS下就容易因解码错误导致乱码造成编译错误。

解决方法

将出错的文件编码格式转换为GB2312即可(一般不会所有文件都出错)。

双击此错误会跳到出错的文件,这时在Visual Studio菜单栏上点击“文件”->“高级保存选项”,在“编码”下拉框选择“简体中文(GB2312)”,然后“确定”即可。重新编译就没问题啦!


但是还是不行。。

分析一下发现这里只是一个字符串常量,所以应该是可以删去报错的字符串的。


然后出现新的错误:







解决办法


选择:使用链接时间代码生成

这里需要改成跟上面一样。


开始在命令行进行设置

写入:/SAFESEH:NO

折腾到这里,终于成功编译。




选择一个本地文件,进行播放。

参考链接:

http://blog.csdn.net/leixiaohua1020/article/details/28685327

https://www.polarxiong.com/archives/%E8%A7%A3%E5%86%B3Visual-Studio%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF-%E6%96%87%E6%9C%AC%E5%90%8E%E7%BC%80%E6%97%A0%E6%95%88-%E6%9C%AA%E6%89%BE%E5%88%B0%E6%96%87%E6%96%87%E6%9C%AC%E8%BF%90%E7%AE%97%E7%AC%A6%E6%88%96%E6%96%87%E6%9C%AC%E8%BF%90%E7%AE%97%E7%AC%A6%E6%A8%A1%E6%9D%BF.html

http://blog.csdn.net/hejjunlin/article/details/68921811

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容