乐于分享
好东西不私藏

x264 编译指南:从源码到第一条编码命令

x264 编译指南:从源码到第一条编码命令

音视频开发系列 · 第 040 篇

聊一个很多人嫌麻烦的事:自己编译 x264。

按理说现在 apt、brew、pacman、vcpkg 都能装预编译的 libx264,何必折腾源码。

但只要你做的事稍微深入一点,就绕不开自己编译这一步。比如:

  • 想用最新版 x264 的某个新特性,发行版仓库版本太老;

  • 想编出带 libavformat 输入支持的 x264.exe,能直接读 mp4 而不只是裸 YUV;

  • 想交叉编译给安卓、iOS、嵌入式 Linux 用;

  • 想把 x264 链进自己的 C++ 项目,需要确认 ABI 一致;

  • 想确认 asm 汇编加速真的开了(这事影响 5-10 倍速度);

  • 想定制 bit depth 或 chroma format(比如只编 10bit 4:2:0 节省二进制体积);

  • 想给嵌入式平台做精简,去掉用不上的码率控制模式。

所以这篇就把 x264 编译流程从头到尾走一遍,给两套能直接抄的命令清单:Linux 一套,Windows MSYS2 一套。后面再给两个 C++ 工程示例:CMake 链接 x264 和封装一个简单的编码器类。最后再聊聊交叉编译给手机平台用、以及编译过程里那些隐蔽的坑。

x264 是什么

简单说:x264 是一个开源的 H.264/AVC 视频编码器。

VideoLAN 团队维护,GPL 协议,纯 C 写的,2004 年开始开发,至今仍在更新。

为什么它重要?

  • 它是工业界 H.264 编码画质的标杆。商业编码器评测,几乎都拿 x264 慢速预设当对照组;

  • FFmpeg 默认的 libx264 编码后端就是它;

  • 几乎所有需要软编 H.264 的开源项目,OBS、HandBrake、ffmpeg.wasm,背后都是它;

  • 代码极致优化,x86/ARM 上有大量手写汇编。

技术上,x264 不止是个标杆,更是 H.264 工具链里事实上的参考实现。

顺带提一句:x264 是 GPL 协议,意味着你的产品如果静态链接了 libx264,整个产品也要遵循 GPL 开源。商业项目想闭源用,需要单独从 x264 LLC 购买商业许可。这个许可不便宜,但流程清晰。OpenH264(Cisco 出的)是另一个开源 H.264 编码器,BSD 协议,但画质比 x264 弱不少,主要用在 WebRTC 场景。

获取源码

x264 官方仓库托管在 VideoLAN 的 git 上:

git clone https://code.videolan.org/videolan/x264.git
cd x264

国内拉不下来很正常,可以用 GitHub 的镜像 https://github.com/mirror/x264.git,或者从 ffmpeg 中文网下载源码包。

源码里有几个关键目录你心里要有数:

  • common/:核心算法,DCT、运动估计、熵编码这些;

  • encoder/:编码器主流程;

  • common/x86/common/aarch64/:各架构的汇编加速代码;

  • tools/:x264 命令行工具源码;

  • configure:configure 脚本(不是 autoconf 生成的,是手写的 shell 脚本)。

x264 的版本号有点特殊,长这样:0.165.r3211 7ed753b。第一段固定 0,第二段是 ABI 版本号(x264 内部叫 X264_BUILD),每次 ABI 不兼容时递增;第三段是从 git 起算的 commit 数;最后是 commit hash 前缀。看到这种版本号别奇怪,这是 VideoLAN 一贯风格。

依赖项要先理清楚

x264 本体几乎不依赖什么库,但有两个东西强烈推荐装上:

nasm 或 yasm(汇编器)

x264 大量使用手写 SSE/AVX/NEON 汇编,需要 nasm 把汇编源码编成目标文件。没有 nasm,所有汇编加速都不会启用,编出来的 x264 只跑纯 C 代码,速度比开汇编慢 5-10 倍。

新版 x264 推荐用 nasm,老版本用 yasm。装 nasm 2.13+ 就够了。两者的区别是 nasm 对新指令集(AVX-512 之类)支持更全,所以官方现在统一推荐 nasm,把 yasm 标为遗留兼容。

libavformat / libavcodec / libswscale(可选)

这是 FFmpeg 的库。装了之后 x264 命令行可以直接读 mp4、mkv、avi 这些容器作为输入。不装的话 x264 命令只能吃裸 YUV 或 y4m 格式。

如果你只是要编 libx264.a 链到自己的项目,不需要这个。但如果要做 x264.exe 命令行工具能直接转码 mp4,必装。一个间接好处是:configure 阶段会顺便检测到 swscale,命令行支持非 4:2:0 输入的色彩转换。

l-smash(可选)

输出 mp4 容器用的,让 x264 可以直接把编码结果写成 mp4 文件而不只是裸 .264 流。如果不装,可以编完后用 ffmpeg 把 .264 重封装成 mp4,多一步但效果一样。

Linux 编译命令清单

Ubuntu/Debian 系:

# 装依赖
sudo apt update
sudo apt install -ygit build-essential nasm pkg-config

# 可选:装 FFmpeg 开发库(让 x264 支持 mp4 输入)
sudo apt install -y libavformat-dev libavcodec-dev libswscale-dev

# 拉源码
git clone https://code.videolan.org/videolan/x264.git
cd x264

# 配置:同时编静态库和动态库
./configure --enable-shared--enable-static--prefix=/usr/local

# 编译,开 8 线程
make-j8

# 安装到 /usr/local
sudomake install

# 让动态库立刻生效
sudo ldconfig

CentOS/RHEL 系基本一样,把 apt 换成 yum/dnf,nasm 包名一样。

编译完检查:

x264 --version

输出大概是这样:

x264 0.165.r3211 7ed753b
built on Jun 21 2026, gcc: 11.4.0
configuration: --bit-depth=8 --chroma-format=all
x264 license: GPL version 2 or later

关键点:看 configuration 那行有没有出现汇编相关字眼。如果你看到 --disable-asm 或者编译过程里看到 nasm: command not found,那汇编没开,回去检查 nasm。

Windows MSYS2 编译命令清单

Windows 编译 x264 推荐用 MSYS2 + MinGW-w64 工具链。不要用 Cygwin,不要用 MSVC(x264 大量 GCC 扩展和汇编语法,MSVC 编不了)。

第一步:装 MSYS2,从 msys2.org 下安装包,一路下一步。

第二步:装工具链(在 MSYS2 MINGW64 终端里):

pacman -Syu

pacman -S--needed \
git \
    base-devel \
    mingw-w64-x86_64-toolchain \
    mingw-w64-x86_64-nasm \
    mingw-w64-x86_64-pkgconf

# 可选:FFmpeg 库
pacman -S--needed mingw-w64-x86_64-ffmpeg

第三步:configure + make。注意必须在 MINGW64 终端里跑,不是 MSYS 终端:

git clone https://code.videolan.org/videolan/x264.git
cd x264

./configure \
--enable-shared \
--enable-static \
--prefix=/mingw64 \
--host=x86_64-w64-mingw32

make-j8
make install

编译产物会装到 MSYS2 的 /mingw64 目录下,大致是这些文件:

  • /mingw64/lib/libx264.a — 静态库

  • /mingw64/lib/libx264.dll.a — 动态库的导入库

  • /mingw64/bin/libx264-165.dll — 动态库本体(数字是当前 ABI 版本)

  • /mingw64/bin/x264.exe — 命令行工具

  • /mingw64/include/x264.hx264_config.h — 头文件

注意一个细节:MSYS2 的 mingw64 prefix 默认就是 /mingw64,所以 --prefix=/mingw64 实际上把库装进了 MSYS2 自己的库目录里,pkg-config 能直接找到。如果你想装到自己的项目目录,把 prefix 改成绝对路径,记得后面用 pkg-config 时设置 PKG_CONFIG_PATH

Windows 这边最常见的坑:configure 脚本如果检测不到 nasm,会自动 fallback 成 --disable-asm,但只在屏幕上闪一行警告就过去了。然后你编出来一个慢得吓人的 x264,还以为是机器问题。

每次 configure 完,仔细看输出最后那一段总结,必须看到 assembly: yes

第一条编码命令

x264 装好了,拿一段裸 YUV 试试。

如果你手头没有 YUV 文件,可以用 ffmpeg 现做一段:

ffmpeg -i sample.mp4 -pix_fmt yuv420p -s 1920x1080 -r25 input.yuv

然后开始编码:

x264 --input-res 1920x1080 --fps25-o out.264 input.yuv

参数拆开看:

  • --input-res 1920x1080:告诉 x264 这个 YUV 是 1080p 的(裸 YUV 没有头信息,必须手动告诉);

  • --fps 25:帧率 25;

  • -o out.264:输出文件名,自动按后缀决定输出格式(这里输出裸 H.264 流);

  • input.yuv:输入 YUV 文件,默认按 YUV420P 解释。

跑完会得到一个 out.264 文件。可以用 ffplay 或者 VLC 直接播。

如果输出 mp4,把 -o out.264 改成 -o out.mp4 就行(前提是编译时带了 l-smash 或者 gpac)。x264 自己就能写 mp4 容器,不需要再用 ffmpeg 封装一次。

configure 几个常用选项要心里有数

x264 的 configure 脚本支持的选项不少,常用的有这么几个:

  • --enable-shared:编 .so/.dll 动态库;

  • --enable-static:编 .a 静态库(默认就开);

  • --enable-strip:strip 掉调试符号,二进制体积小一半;

  • --disable-cli:只编库,不编 x264 命令行(嵌入到 SDK 里常用);

  • --bit-depth=8|10|all:8bit、10bit 或两者都支持,搞 HDR 必须 10 或 all;

  • --chroma-format=420|422|444|all:色彩采样格式;

  • --enable-pic:生成位置无关代码,给动态库链接用,64 位系统默认开;

  • --cross-prefix=...:交叉编译时给的工具链前缀,比如 aarch64-linux-android-

  • --host=...--sysroot=...:交叉编译目标平台和系统根目录。

调试 x264 自身的话,加 --enable-debug 留符号;做性能分析加 --enable-profiling 让 gprof 能用。

交叉编译给安卓/iOS 用

桌面平台的编译说完,简单说一下移动端。这是工程里高频踩坑点。

安卓:用 NDK 提供的 clang 工具链。configure 大致这样:

NDK=/your/path/to/android-ndk-r25
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
TARGET=aarch64-linux-android
API=21

exportCC=$TOOLCHAIN/bin/${TARGET}${API}-clang
exportAR=$TOOLCHAIN/bin/llvm-ar
exportSTRIP=$TOOLCHAIN/bin/llvm-strip

./configure \
--host=$TARGET \
--sysroot=$TOOLCHAIN/sysroot \
--cross-prefix=$TOOLCHAIN/bin/llvm- \
--enable-pic \
--enable-static \
--disable-cli \
--prefix=$(pwd)/install_android_arm64

make-j8 && make install

armv7 把 TARGET 改成 armv7a-linux-androideabi,加上 --extra-cflags=-mfpu=neon 开 NEON。

iOS:configure 时指定 -isysroot-arch arm64-mios-version-min=11.0 等 cflags,编出 .a 静态库后丢进 Xcode 工程链接即可。iOS 一般不上动态库,因为 App Store 限制。

两个常见错误

  • 忘了 --enable-pic,链动态库时报 relocation R_X86_64_32 against symbol

  • 忘了 --disable-cli,编译卡在某些命令行依赖(getopt、libavformat 这些移动端没装的库)报错。

编码命令进阶:CRF / preset / tune

实际工程中,光给个分辨率帧率不够,要调画质和速度的平衡。

preset:速度档位

x264 --preset slow ...

可选值从快到慢:ultrafast / superfast / veryfast / faster / fast / medium / slow / slower / veryslow / placebo

档位越慢,画质越好但编码时间越长。medium 是默认。直播一般 veryfast 起步。点播离线转码至少 slow,追求极致画质用 veryslowplacebo 慢得离谱但提升微弱,基本只用来跑评测。

CRF:质量恒定模式

x264 --crf23--preset slow -o out.264 input.yuv

CRF 是基于感知质量的 1-pass 模式,参数范围 0-51,越小画质越好

  • CRF 18:视觉无损,文件大;

  • CRF 20-23:高画质,主流点播首选;

  • CRF 23:默认值,适合大部分场景;

  • CRF 28:低画质,可见明显损失;

  • CRF 51:最差。

CRF 之外还有 --bitrate 平均码率模式和 --pass 1/2 二次编码模式。直播用 ABR/CBR,点播用 CRF。

tune:场景调优

x264 --tune film --preset slow ...

可选值:film(电影内容)、animation(动画)、grain(强保留胶片颗粒)、zerolatency(零延迟,关 B 帧)、stillimagefastdecodepsnrssim

直播必须 --tune zerolatency,关掉 B 帧和 lookahead,端到端延迟从几百毫秒压到一两帧。

几个 preset 的实测感受

我自己在 1080p 25fps 测试视频上跑过对比,仅供参考:

  • ultrafast:编码 ~400fps,文件大约 1.6 倍于 medium;

  • veryfast:~200fps,文件 1.15 倍;

  • medium(默认):~80fps,作为基准 1.0;

  • slow:~40fps,文件 0.92 倍;

  • veryslow:~8fps,文件 0.85 倍。

可以看到,从 medium 到 veryslow,速度慢了 10 倍,文件只小 15%。这就是边际收益递减。所以工程上 slow 是性价比最高的档位,veryslow 适合归档场景,placebo 几乎没人真用。

C++ 实战一:CMake 链接 x264

最小化的 CMake 工程,调用 x264 编一帧 YUV。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(x264_demo CXX)

set(CMAKE_CXX_STANDARD 17)

# 找 x264:用 pkg-config 是最稳的方式
find_package(PkgConfig REQUIRED)
pkg_check_modules(X264 REQUIRED x264)

add_executable(x264_demo main.cpp)
target_include_directories(x264_demo PRIVATE ${X264_INCLUDE_DIRS})
target_link_directories(x264_demo PRIVATE ${X264_LIBRARY_DIRS})
# 注意链接顺序:x264 必须放在依赖它的目标后面
target_link_libraries(x264_demo PRIVATE ${X264_LIBRARIES})

main.cpp:

#include <x264.h>
#include <stdio.h>
#include <string.h>

intmain() {
x264_param_tparam;
x264_param_default_preset(&param"medium"nullptr);
param.i_csp=X264_CSP_I420;
param.i_width=640;
param.i_height=480;
param.i_fps_num=30;
param.i_fps_den=1;
param.i_keyint_max=60;        // 每 60 帧一个 IDR
param.b_annexb=1;
x264_param_apply_profile(&param"high");

x264_t*enc=x264_encoder_open(&param);
if (!encreturn-1;

x264_picture_tpic_inpic_out;
x264_picture_alloc(&pic_inX264_CSP_I420640480);

// 一段彩条画面:Y 渐变,U/V 灰
for (inty=0y<480++y)
for (intx=0x<640++x)
pic_in.img.plane[0][y*pic_in.img.i_stride[0+x= (x+y&0xff;
memset(pic_in.img.plane[1], 128640*480/4);
memset(pic_in.img.plane[2], 128640*480/4);

pic_in.i_pts=0;
x264_nal_t*nals=nullptr;
intnal_count=0;
intsize=x264_encoder_encode(enc&nals&nal_count&pic_in&pic_out);
printf("encoded one frame, total bytes=%d, NAL count=%d\n"sizenal_count);

x264_picture_clean(&pic_in);
x264_encoder_close(enc);
return0;
}

编译运行:

mkdir build && cd build
cmake .. && make
./x264_demo

C++ 实战二:封装一个 X264Encoder 类

实战项目里你不会到处散调 x264 API,会封装一层。封装的好处是:调用方代码干净、错误处理集中、参数变更不影响业务、单元测试好写。给个干净的最小实现:

// x264_encoder.h
#pragma once
#include <x264.h>
#include <stdint.h>
#include <vector>
#include <functional>

classX264Encoder {
public:
structConfig {
intwidth=1280;
intheight=720;
intfps=25;
intbitrate_kbps=2000;     // 目标码率,0 表示走 CRF
intcrf=23;                // bitrate=0 时使用
intgop=50;                // I 帧间隔
constchar*preset="veryfast";
constchar*tune="zerolatency";
constchar*profile="main";
    };

usingOutputCallback=std::function<void(constuint8_t*dataintsizeboolis_key)>;

X264Encoder() =default;
~X264Encoder() { close(); }

boolinit(constConfig&cfgOutputCallbackcb) {
cb_=std::move(cb);
cfg_=cfg;

x264_param_tp;
if (x264_param_default_preset(&pcfg.presetcfg.tune<0returnfalse;

p.i_csp=X264_CSP_I420;
p.i_width=cfg.width;
p.i_height=cfg.height;
p.i_fps_num=cfg.fps;
p.i_fps_den=1;
p.i_keyint_max=cfg.gop;
p.b_annexb=1;
p.b_repeat_headers=1;       // 每 IDR 前重发 SPS/PPS
if (cfg.bitrate_kbps>0) {
p.rc.i_rc_method=X264_RC_ABR;
p.rc.i_bitrate=cfg.bitrate_kbps;
p.rc.i_vbv_max_bitrate=cfg.bitrate_kbps*2;
p.rc.i_vbv_buffer_size=cfg.bitrate_kbps;
        } else {
p.rc.i_rc_method=X264_RC_CRF;
p.rc.f_rf_constant= (float)cfg.crf;
        }
if (x264_param_apply_profile(&pcfg.profile<0returnfalse;

enc_=x264_encoder_open(&p);
if (!enc_returnfalse;

if (x264_picture_alloc(&pic_in_X264_CSP_I420cfg.widthcfg.height<0) {
x264_encoder_close(enc_);
enc_=nullptr;
returnfalse;
        }
pts_=0;
returntrue;
    }

// 输入一帧 YUV420P。y/u/v 为三平面指针,stride 为 Y 平面行步长(U/V 默认 stride/2)
boolencode(constuint8_t*yconstuint8_t*uconstuint8_t*vintstride_y) {
if (!enc_returnfalse;

// 拷贝到 x264 的图像 buffer(也可以直接让 plane 指向外部内存避免拷贝)
for (introw=0row<cfg_.height++row)
memcpy(pic_in_.img.plane[0+row*pic_in_.img.i_stride[0],
y+row*stride_ycfg_.width);
for (introw=0row<cfg_.height/2++row) {
memcpy(pic_in_.img.plane[1+row*pic_in_.img.i_stride[1],
u+row* (stride_y/2), cfg_.width/2);
memcpy(pic_in_.img.plane[2+row*pic_in_.img.i_stride[2],
v+row* (stride_y/2), cfg_.width/2);
        }
pic_in_.i_pts=pts_++;

x264_nal_t*nals=nullptr;
intnal_count=0;
x264_picture_tpic_out;
intsize=x264_encoder_encode(enc_&nals&nal_count&pic_in_&pic_out);
if (size<0returnfalse;

if (size>0&&cb_) {
boolis_key= (pic_out.b_keyframe!=0);
// 把所有 NAL 串起来回调出去(Annex B 已经带起始码)
cb_(nals[0].p_payloadsizeis_key);
        }
returntrue;
    }

voidclose() {
if (enc_) {
// flush 缓冲帧
x264_nal_t*nals;
intnal_count;
x264_picture_tpic_out;
while (x264_encoder_delayed_frames(enc_>0) {
intsize=x264_encoder_encode(enc_&nals&nal_countnullptr&pic_out);
if (size>0&&cb_)
cb_(nals[0].p_payloadsizepic_out.b_keyframe!=0);
            }
x264_picture_clean(&pic_in_);
x264_encoder_close(enc_);
enc_=nullptr;
        }
    }

private:
x264_t*enc_=nullptr;
x264_picture_tpic_in_{};
Configcfg_{};
OutputCallbackcb_;
int64_tpts_=0;
};

调用方式就很清爽了:

X264Encoderenc;
X264Encoder::Configcfg;
cfg.width=1280cfg.height=720cfg.fps=25;
cfg.bitrate_kbps=1500;
enc.init(cfg, [](constuint8_t*dataintsizeboolis_key) {
// 写文件 / 推 RTMP / 塞队列
fwrite(data1sizestdout);
});

while (read_yuv_frame(yuv)) {
enc.encode(yuv1280);
}
enc.close();

加错误日志、加多路并发、加动态码率调整,都在这个骨架上扩。

工程上还有几个常见扩展点:

  • 动态调整码率:直播场景根据网络反馈调整目标码率,调用 x264_encoder_reconfig 不需要重启编码器;

  • 强制 IDR:网络重连或者关键帧请求时,把下一帧的 i_type 设为 X264_TYPE_IDR,强制插入 IDR;

  • 零拷贝输入:把 pic_in.img.plane[] 直接指向外部内存而不拷贝,对于摄像头直采或 GPU 输出的 YUV 能省一次大块内存复制;

  • 多线程编码池:高分辨率高帧率场景,单实例 x264 在 lookahead 上是瓶颈,多实例并行可以拉吞吐。

几个真实踩过的坑

坑一:Windows 编译没开 asm,速度差 5-10 倍

最经典的坑。MSYS2 装的时候忘装 nasm,或者装了但没在 MINGW64 终端里跑 configure,结果 asm 自动 disable。编出来一个慢得离谱的 x264 还以为是机器问题。每次 configure 都要看输出确认 asm: yes

坑二:链接顺序错了

GCC/Clang 的链接器是从左到右扫的,符号要在被引用之前找到。x264 依赖 pthread、m(数学库),所以要写 -lx264 -lpthread -lm,反过来就报 undefined reference。CMake 用 PkgConfig 一般会自动处理,但手写 g++ 命令的时候经常翻车。

坑三:版本号 ABI 不一致

x264 的动态库文件名带版本号,比如 libx264-165.dll。你升级了 x264 但忘记重新编自己的程序,跑起来报 entry point not found 或者 dll 找不到。x264 没有 SONAME 兼容承诺,每次升级最好都重新编一遍依赖它的程序。

坑四:直接用发行版的 libx264 太老

Ubuntu 22.04 仓库里的 libx264 还停在 0.163,新的 10-bit、HDR 相关的 API 不全。生产环境推荐自己编最新版,固定一个版本号长期用。

坑五:configure 跨行写 \ 末尾有空格

shell 脚本里反斜杠续行符后面如果不小心加了空格,整行 configure 就被截断成默认参数。这种错误肉眼看不出来。建议每次 configure 完都看一眼最后输出的总结。

坑六:CRF 和 ABR 模式混着用

直播一般是恒定码率(CBR)或平均码率(ABR),保证带宽稳定。点播一般是 CRF,画质恒定。如果你直播用了 CRF,码率会随画面复杂度剧烈波动,简单画面 500kbps,复杂画面 8Mbps,CDN 和播放器都受不了。反过来点播用 CBR 也不合适,简单画面浪费码率,复杂画面又不够清晰。

坑七:开了线程数过多反而变慢

x264 默认会用 min(cpu_count * 1.5, 16) 个线程。但如果你机器同时跑多个编码进程,每个都开十几个线程,线程切换开销反而拖累整体吞吐。批量转码场景,每个进程的线程数手动限制到 4-8 比较合理,命令行用 --threads N,API 里设 param.i_threads = N

坑八:码率控制和 GOP 长度配合不当

CBR 模式下,如果 GOP 设得太大(比如 10 秒),码率控制器为了维持 CBR,I 帧那一刻会被强行压缩得很狠,画质明显下降。一般直播 GOP 控制在 1-2 秒比较合理,既能秒开又能保证 I 帧画质。点播或归档可以放大到 5-10 秒,CRF 模式下没什么副作用。

小结

x264 编译这件事,在不熟的人眼里是一道槛,熟了之后只是输入几行命令的事。

但「自己能编」和「只会用包管理器装」,是工程能力的一道分水岭。前者出问题能查、能改、能定制;后者只能等着升级。我见过太多人卡在「为什么我这台机器编出来的就是慢」的玄学问题上,最后查清楚原因都是一些可笑的细节:nasm 没装、链接到了系统老版本、cflags 没传到子目录之类。

更重要的是,自己编一遍 x264 你才会真正理解:为什么 nasm 这么重要、为什么 preset 慢的那么慢、为什么不同 profile 编出来的码流大小差这么多。这些直觉是用包管理装出来的人体会不到的。

实际项目里我自己的做法是这样:

  • 把 x264 源码作为 git submodule 集成进自己的项目,pin 一个具体 commit;

  • 写一个一键脚本,一次编出 Linux x86_64、Android arm64-v8a、Android armeabi-v7a、iOS arm64 四份静态库;

  • libx264.a 直接放进项目仓库,不依赖系统包;

  • CI 里跑编码 smoke test,验证版本升级不会破坏现有码流。

这样不管换什么机器、什么版本的工具链,编码行为都是稳的。

下一篇我会讲 H.264 的码流结构:NALU 是什么、SPS/PPS 怎么解、Annex B 和 AVCC 到底怎么转换。这些是做封装、推流、转码绕不开的基础。


如果觉得有用,欢迎转发给身边搞音视频的朋友。有问题可以在评论区留言,我会及时回复。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-22 21:52:36 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/866857.html
  2. 运行时间 : 0.121158s [ 吞吐率:8.25req/s ] 内存消耗:4,994.49kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=142ecfa78f270af5dce70cfc235b4adc
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000471s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000687s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.011740s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000340s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000787s ]
  6. SELECT * FROM `set` [ RunTime:0.000269s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000735s ]
  8. SELECT * FROM `article` WHERE `id` = 866857 LIMIT 1 [ RunTime:0.000600s ]
  9. UPDATE `article` SET `lasttime` = 1784728356 WHERE `id` = 866857 [ RunTime:0.017906s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000444s ]
  11. SELECT * FROM `article` WHERE `id` < 866857 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000646s ]
  12. SELECT * FROM `article` WHERE `id` > 866857 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000512s ]
  13. SELECT * FROM `article` WHERE `id` < 866857 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001316s ]
  14. SELECT * FROM `article` WHERE `id` < 866857 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000939s ]
  15. SELECT * FROM `article` WHERE `id` < 866857 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001890s ]
0.122868s