当前位置: 首页 > news >正文

树莓派学习专题<12>:使用x264库实施H264编码--Linux和Windows上的部署

树莓派学习专题<12>:使用x264库实施H264编码--Windows和Linux上的部署

  • 1. 代码下载
  • 2. linux下的编译与测试
    • 2.1 必备软件
    • 2.2 解压x264代码
    • 2.3 配置和编译
    • 2.4 测试
  • 3. windows下的编译与测试
    • 3.1 必备软件
    • 3.2 配置与编译
    • 3.3 编码测试

1. 代码下载

x264代码下载:
地址1:网页下载:下载地址
地址2:git仓库复制:# git clone https://code.videolan.org/videolan/x264.git

2. linux下的编译与测试

操作系统环境:Ubuntu 24.04.2 LTS;

2.1 必备软件

  1. 安装bzip2;
  2. 安装编译工具;
  3. 安装nasm。
sudo apt-get install bzip2
sudo apt install build-essential
sudo apt-get install nasm

2.2 解压x264代码

tar -xvf x264-master.tar.bz2 

2.3 配置和编译

进入x264-master目录,执行:

./configure

配置结果为:

platform:       X86_64
byte order:     little-endian
system:         LINUX
cli:            yes
libx264:        internal
shared:         no
static:         no
bashcompletion: no
asm:            yes
interlaced:     yes
avs:            yes
lavf:           no
ffms:           no
mp4:            no
gpl:            yes
thread:         posix
opencl:         yes
filters:        crop select_every
lto:            no
debug:          no
gprof:          no
strip:          no
PIC:            no
bit depth:      all
chroma format:  all

然后make。在目录下得到程序文件x264。
在这里插入图片描述

2.4 测试

拷贝一个720P的YUV420文件到目录下,使用如下命令编码h264文件:

./x264 720p.yuv -o 720p.264 --input-res 1280x720

编译结束后显示:

yuv [info]: 1280x720p 0:0 @ 25/1 fps (cfr)
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 3.1, 4:2:0, 8-bit
x264 [info]: frame I:4     Avg QP:18.82  size: 81591                           
x264 [info]: frame P:264   Avg QP:21.48  size: 16404
x264 [info]: frame B:556   Avg QP:25.87  size:  2500
x264 [info]: consecutive B-frames:  3.3% 16.7% 10.6% 69.4%
x264 [info]: mb I  I16..4:  4.7% 61.3% 34.0%
x264 [info]: mb P  I16..4:  2.0%  6.5%  0.8%  P16..4: 48.3% 16.2%  7.7%  0.0%  0.0%    skip:18.6%
x264 [info]: mb B  I16..4:  0.1%  0.2%  0.0%  B16..8: 29.8%  2.2%  0.2%  direct: 1.2%  skip:66.2%  L0:42.3% L1:53.5% BI: 4.2%
x264 [info]: 8x8 transform intra:68.1% inter:73.5%
x264 [info]: coded y,uvDC,uvAC intra: 49.1% 77.1% 43.8% inter: 8.2% 17.2% 1.6%
x264 [info]: i16 v,h,dc,p: 30% 25% 22% 23%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 17% 26%  4%  6%  7%  6%  5%  5%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 14% 16%  7%  8%  9%  7%  8%  5%
x264 [info]: i8c dc,h,v,p: 49% 18% 23%  9%
x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x264 [info]: ref P L0: 73.0% 12.7% 12.6%  1.7%
x264 [info]: ref B L0: 92.2%  6.9%  0.9%
x264 [info]: ref B L1: 99.1%  0.9%
x264 [info]: kb/s:1467.69encoded 824 frames, 117.77 fps, 1467.69 kb/s

一共824帧,编码速率117fps。应该是虚拟机性能的原因。稍后可以看到,在windows下,速度快得多。
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

3. windows下的编译与测试

操作系统环境:windows11 64bit;

3.1 必备软件

  1. 安装MSYS2;
  2. 安装mingw64;
  3. 安装nasm;
  4. 安装make工具。

MSYS2下载地址:网页下载:下载地址
安装好MSYS2之后,执行一次更新:

pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime

然后安装mingw64。

pacman -S mingw-w64-x86_64-toolchain

然后运行mingw64,安装nasm。

pacman -S nasm

此时还要安装make,否则make时找不到命令。

pacman -S autoconf automake libtool autoconf-archive make

3.2 配置与编译

执行配置:

./configure --host=x86_64-w64-mingw32 --enable-static

然后make。x264-master目录下会生成一个x264.exe可执行文件。

3.3 编码测试

打开一个cmd命令行窗口,进入到x264-master目录下,准备待编码文件720p.yuv,执行如下命令,测试编码:

x264.exe 720p.yuv -o 720p.264 --input-res 1280x720

执行结果:

yuv [info]: 1280x720p 0:0 @ 25/1 fps (cfr)
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 3.1, 4:2:0, 8-bit
x264 [info]: frame I:4     Avg QP:18.89  size: 81318
x264 [info]: frame P:274   Avg QP:21.57  size: 16011
x264 [info]: frame B:546   Avg QP:25.88  size:  2419
x264 [info]: consecutive B-frames:  4.4% 18.2% 10.9% 66.5%
x264 [info]: mb I  I16..4:  4.8% 61.3% 33.9%
x264 [info]: mb P  I16..4:  2.0%  6.4%  0.8%  P16..4: 48.3% 15.8%  7.5%  0.0%  0.0%    skip:19.1%
x264 [info]: mb B  I16..4:  0.1%  0.2%  0.0%  B16..8: 29.5%  2.1%  0.2%  direct: 1.2%  skip:66.7%  L0:41.0% L1:54.7% BI: 4.2%
x264 [info]: 8x8 transform intra:68.0% inter:73.4%
x264 [info]: coded y,uvDC,uvAC intra: 48.8% 76.8% 43.2% inter: 8.2% 17.1% 1.6%
x264 [info]: i16 v,h,dc,p: 31% 25% 22% 22%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 17% 26%  4%  6%  7%  6%  5%  5%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 14% 16%  7%  8%  9%  7%  8%  5%
x264 [info]: i8c dc,h,v,p: 50% 18% 23%  9%
x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x264 [info]: ref P L0: 73.1% 12.5% 12.7%  1.7%
x264 [info]: ref B L0: 92.1%  7.0%  0.9%
x264 [info]: ref B L1: 99.1%  0.9%
x264 [info]: kb/s:1464.27encoded 824 frames, 247.45 fps, 1464.27 kb/s

可以看到,编码速度可以达到大约250fps。


相关文章:

  • 【C++】线程池
  • VASP 教程:VASP 结合 phonopy 计算硅的声子谱
  • UDP 报文结构与注意事项总结
  • 打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解
  • Vue 生命周期钩子总结
  • 第9讲:坐标轴美学深度优化——刻度线、网格线与边框控制
  • 【更新】LLM Interview (2)
  • CMCC RAX3000M使用Tftpd刷写OpenWrt固件的救砖方法
  • 顶会idea:Mamba+CNN暴力涨点新突破!
  • 一种在使用Kaggle并遇上会话中断时强行保存数据的方法
  • 国标云台控制状态
  • C语言-指针(一)
  • Paramiko 完全指南
  • 2020南京区域赛vp
  • InnoDB对LRU算法的优化
  • LangChain入门(二)安装开发环境
  • MCP 模型上下文协议配置MCP Server开发实践
  • Spark知识总结
  • AI在Java中的场景面试题深度解析
  • c++之使用 libdl.so 和 <dlfcn.h> 实现动态链接
  • 李在明涉嫌违反《公职选举法》案将于5月1日宣判
  • 成都警方:在地铁公共区域用改装设备偷拍女乘客,男子被行拘
  • 牛市早报|国家发改委:将推出做好稳就业稳经济推动高质量发展若干举措
  • 一场与纪录并行的伦敦马拉松,超40项新世界纪录诞生
  • 中国黄金协会:一季度我国黄金产量同比增1.49%,黄金消费量同比降5.96%
  • 准85后青海海北州副州长、州公安局局长李贤荣赴山东临沂挂职