Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译

简介: Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译

Qt开发笔记之编码x264码流并封装mp4

Qt开发笔记之编码h264码流并封装mp4(一):x264介绍、windows平台x264库编译

Qt开发笔记之编码h264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译

Qt开发笔记之编码h264码流并封装mp4(三):Qt使用x264库对.yuv文件编码为.h264文件

Qt开发笔记之编码h264码流并封装mp4(四):mp4v2库的介绍和windows平台编译

Qt开发笔记之编码h264码流并封装mp4(五):ubuntu平台编译x264》

Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4

 

前言

      x264的码流已经拿到,接下来需要使用mp4v2库对裸x264码流进行封装,本篇章对mp4v2库进行介绍并进行编译。

     

Mp4

      MP4文件可以理解为本身就是一个容器,对于视频来说就是把不同的内容放按照mp4的规则存放。

      MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的动态图像专家组Moving Picture Experts Group,即MPEG)制定,第一版在199810月通过,第二版在199912月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。

MPEG-4包含了MPEG-1MPEG-2的绝大部份功能及其他格式的长处,并加入及扩充对虚拟现实模型语言(VRML VirtualReality Modeling Language)的支持,面向对象的合成档案(包括音效,视讯及VRML对象),以及数字版权管理(DRM)及其他互动功能。而MPEG-4MPEG-2更先进的其中一个特点,就是不再使用宏区块做影像分析,而是以影像上个体为变化记录,因此尽管影像变化速度很快、码率不足时,也不会出现方块画面。

 

mp4v2库介绍

      MP4V2的前身是MPEG4IP开源项目中的一个功能库,可是如今MPEG4IP已经不在更新了。可是MP4V2还在更新,而且独立出来了。MP4V2主要是作为MP4文件的录制一个开源库。

 

mp4v2库下载

第三方下载地址:https://launchpad.net/ubuntu/artful/+source/mp4v2

CSDN下载:https://download.csdn.net/download/qq21497936/12012169

      (CSND更新了库,包含了缺少win32的两个头文件的库和谷歌的源码补充2个头文件)

 

Windows下mp4v2库编译

步骤一:下载、放入编译文件夹并解压

步骤二:在msys中configure配置mp4v2

./configure --prefix=/home/21497/compile/mp4v2/mp4v2-2.0.0/install
./configure --prefix=/home/21497/compile/mp4v2/mp4v2-2.0.0/install --enable-shared --disable-debug

步骤三:编译mingw32-make.exe,缺少头文件“platform_win32_impl.h”

步骤四:将平台文件夹copy过去

      继续mingw32-make。

步骤五:编译错误“error:definition of static member mp4v2::impxxxx”

      直接注释掉

步骤六:编译错误“error:definition of static member xxxxxx”

      解决方法同步骤五,找到源文件直接注释

步骤七:修改configure文件

      添加如下

步骤七:编译其他定义错误,各种奇葩错误,不一一记录,修改源码改变量都上了,未解决。

 

结论

      暂时先放弃,有其他方案选择。

这里提供另一种方案:windows下的msvc编译器,编译mv4v2库,笔者已编译成功编,由于x264不支持msvc,需要mingw32编译后,使用.def文件将其函数抽出来供msvc版本使用,有点饶,但可行,笔者就不折腾了。

最终笔者决定,测试还是切换至ubuntu系统,且后续的事实证明ubuntu下编译那是一帆风顺的。


相关文章
|
2月前
|
C++
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
2月前
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
129 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
2月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
2月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录
|
2月前
|
机器学习/深度学习 Java 计算机视觉
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
本文记录了使用mingw81_64编译OpenCV 4.5.5、Qt 5.15.2、VTK 9.1的详细过程,包括编译结果截图、编译步骤、遇到的问题及其解决方案,以及相关参考链接。文中还提到了如何编译boost源码为静态库,并提供了测试代码示例。
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
|
2月前
|
C语言
BOOST1.75+QT5.15.2编译记录
本文记录了BOOST 1.75与Qt 5.15.2编译过程的详细步骤,包括编译结果截图、将boost源码编译为静态库的步骤,以及如何在Qt项目中使用BOOST库的测试代码。文章还提供了相关参考链接,以帮助解决在编译和使用过程中可能遇到的问题。
BOOST1.75+QT5.15.2编译记录
|
2月前
|
IDE 开发工具 C++
qt creator + vs2019编译记录
本文记录了作者在使用qt creator和vs2019编译项目时遇到的困难和解决方案,包括编译环境设置、qt creator编译脚本的成功案例、不带Ninja的编译脚本问题、错误示范以及相关参考链接。
qt creator + vs2019编译记录
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
180 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0