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

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

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,使用mingw32编译该库,并使用x264将yuv文件编码为.h264文件。

Windows下使用视频编码一般使用opencv、ffmpeg、vlc,opencv其实也是调用ffmpeg,ffmpeg底层又调用了其他编码的库,与此类似的vlc平台也是一样。

 

x264库介绍

功能概述

  • 提供一流的性能,压缩和功能。
  • 实现出色的性能,在一台消费者级计算机上实时编码4个或更多1080p流。
  • 提供最好的质量,具有最先进的心理视觉优化。
  • 许多不同应用程序所必需的支持功能,例如电视广播,蓝光低延迟视频应用程序和Web视频。
  • x264构成了许多网络视频服务的核心,例如YoutubeFacebookVimeoHulu。它已被电视广播公司和ISP广泛使用。

编码器功能

  • 8x84x4自适应空间变换
  • 自适应B帧放置
  • B帧作为参考/任意帧顺序
  • CAVLC / CABAC熵编码
  • 自定义量化矩阵
  • 内部:所有宏块类型(具有所有预测的16x168x84x4PCM
  • Inter P:所有分区(从16x164x4
  • Inter B:从16x168x8的分区(包括跳过/直接)
  • 隔行扫描(MBAFF
  • 多个参考系
  • 速率控制:恒定量化器,恒定质量,单通道或多通道ABR,可选VBV
  • 场景切换检测
  • B帧中的时空直接模式,自适应模式选择
  • 在多个CPU上并行编码
  • 预测性无损模式
  • 用于细节保留的Psy优化(自适应量化,psy-RDpsy-网格)
  • 任意调整比特率分布的区域

使用x254编解码库的软件

  • Avidemux
  • ELDER
  • ffdshow
  • ffmpeg
  • GordianKnot
  • Handbrake
  • LiVES
  • MeGUI
  • MEncoder
  • Bencos (formerly RealAnime)
  • StaxRip
  • VLC media player

…and many more

 

x264库下载

      下载地址:https://www.videolan.org/developers/x264.html

 

Windows下x264库编译

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

 

步骤二:安装Msys环境

      笔者使用环境为win10+Qt5.9.3 mingw32,而x264库不支持CMake,所以只能搭建mingw的msys环境(windows下的仿linux环境)。

      读者看心情选吧,为了环境可控,建议msys1.0。

      下载msys:https://download.csdn.net/download/qq21497936/12009320

      或者下载msys2:http://www.msys2.org

      (msys2比msys更智能,并带有基础的编译环境,但是编译涉及到其他基础编译库和工具等等,所以使用之前需要检查版本,版本不合适则安装和修改环境变量切换到目标版本)

步骤三:部署mingw32编译环境

安装好后,将Qt5.9,3的mingw拷贝到msys根目录文件夹

      并检查环境,如下图:

步骤四:迁移源代码至msys

步骤五:linux的常规编译步骤,configure配置

./configure –enbale-shared

./configure --enable-shared --disable-asm

(补充解释下--enable-asm:纯C实现,不使用汇编代码,那部分是针对各个CPU架构做专门优化的。一般不需要disable)。

      重新配置下,主要是prefix参数配置install路径,好方便我们提取头文件和库文件:

./configure --enable-shared --disable-asm --prefix=/home/21497/compile/x264/x264-snapshot-20191130-2245/install

      (注意:此处对mp4是不支持的,“mp4: no”,要支持mp4请看:

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

步骤六:linux的常规编译步骤,make(mingw32-make.exe)

mingw32-make.exe

步骤七:linux的常规编译步骤,make install(mingw32-make.exe install)

      提取可执行文件、头文件和库文件,如下图:

 

Windows平台x264库模块化

      其中x264Manager.pri文件内容,如下图:

      建立模板工程测试,报错如下:

      添加”stdint.h”头文件,如下图:

编译测试通过。

 

工程模板v1.0.0

      Windows下mingw32的x264工程模板v1.0,0

 

Yuv格式文件下载

      测试文件yuv下载地址:

              http://www.cipr.rpi.edu/resource/sequences/index.html

              http://trace.eas.asu.edu/yuv/index.html

      连不上或者下载太慢,笔者下载一个后上传到CSDN

      CSDN下载地址(三个文件,2个yuv,1个y4m):

       https://download.csdn.net/download/qq21497936/12010079

 

视频格式

  • .y4m:Y4m(YUV4MPEG2)文件格式是一种以头文件存储视频规格的未压缩视频序列。简单来说,在原始的YUV序列的起始和每一帧的头部都加入了纯文字形式的视频参数信息,包括分辨率、帧率、逐行/隔行扫描方式、高宽比,以及每一起始帧标志位。
  • .h264:h264不属于视频格式,而是一种视频编码标准,跟avi、mpg不属于同一类。
  • .flv:FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
  • .mp4:全称MPEG-4 Part 14,是一种使用MPEG-4的多媒体电脑档案格式, Mp4实际为容器,包含编码数据,编码与mp4没有直接关系。

 

使用x264命令行测试

Yuv格式编码到flv

Yuv格式编码到mp4

 


相关文章
|
6月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
832 4
|
1月前
|
存储 虚拟化 Docker
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
2656 13
|
1月前
|
固态存储 C++ 计算机视觉
Windows平台GIMP 2.10下载教程:零基础入门高级图像编辑
GIMP(GNU Image Manipulation Program)是一款开源跨平台图像编辑工具,支持图层管理、高级修图、色彩校正等功能,广泛应用于平面设计和照片修复。其优势包括全功能免费、插件生态丰富(600+扩展插件)、硬件要求低(1GB内存即可流畅运行)。本文详细介绍GIMP的软件定位、安装流程、首次配置及常见问题解答,帮助用户快速上手并充分利用其强大功能。
|
6月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
162 0
Windows 平台安装 MongoDB
|
6月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
674 0
|
9月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
274 1
|
8月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
273 0
|
7月前
Qt开发
Qt开发
|
8月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
361 2
|
7月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
174 0

热门文章

最新文章