一、使用环境
Qt 5.13.1 编译器 MSVC2017 64bit (vs2017)
mp4v2 版本是 2.0.0 下载地址:https://code.google.com/archive/p/mp4v2/,也可以在CSDN上下载https://download.csdn.net/download/qdwx724/12149903。
注意google网站上有多个版本,要下完整的2.0.0版本,不然会出现各种问题。
二、遇到的问题
(1) 使用VS2017编译mp4v2时,报以下错误:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2371 “int8_t”: 重定义;不同的基类型 libmp4v2 ***\mp4v2\releases\2.0.0\include\mp4v2\platform.h 16
解决方法:保留 #include <stdint.h> 分支,将原先的分支判断注释掉。
#if 0
#ifndef MP4V2_NO_STDINT_DEFS
#if defined( _WIN32 ) && !defined( __MINGW32__ )
typedef char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
#else
#include <stdint.h>
#endif
#endif
#endif
//添加以下
//#include <stdint.h>
(2)使用库时,mp4文件无法创建,或者mp4文件是乱码。
解决方法:下载的mp4v2版本不是最新的导致的。后来google下载了的2.0.0完整版本后,重新编译,问题解决。
(3)使用库时,Qt程序无法启动,连第一行代码也无法运行。
解决方法:下载的mp4v2版本不是最新的导致的。后来google下载了的2.0.0完整版本后,重新编译,问题解决。
(4)H264文件封装为mp4文件,播放时,出现拖影、模糊的现象。
原因:在网上找到的例子(https://blog.csdn.net/qq_29350001/article/details/73742075 MP4Encoder 作者:firehood),是将h264文件里的图片全部加载到内存中,但是内存申请的不够时,应用软件里会多次解析图像数据以及将已分析数据的丢弃,分析数据部分有BUG,以及在已分析数据的丢弃部分也存在BUG导致的。
解决方法:分析代码,修复BUG. 修改后的代码, 待上传。