ffmpeg编码器编码元数据的过程以及编码前后的差异

编码方式为avcodec_send_frame:将原始帧发送到编码器进行编码

编码过程完成于avcodec_receive_packet:从编码器接收编码后的压缩数据,也就是说已经编码压缩完成了,并存储到avpacket中,此时元数据被分割成多个NALU单元,并按照H.264规范封装成码流,码流可以用AVPacket *pkt的指针进行访问,如pkt->data

在H.264编码中,编码器会将一帧图像分割成若干宏块,符号每个宏块进行帧间/帧内预测、变换、量化等操作,最终生成编码数据。这些编码数据通常会被分割成多个NALU单元,并按照H.264规范封装成码流。因此,一个像素点数据不会单独编码成一个NALU,而是被整合到宏块中,并与其他宏块一起编码成多个NALU单元。

cpp 复制代码
编码前数据;

Y平面
0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6 分别对应1~16号像素点的Y数值

U平面
128 129  
129 130
//128对应左上角四个像素点的U值,同理

V平面
64 69
65 70


编码后数据(H.264 NALU结构):
00 00 00 01 67 ... 00 00 00 01 68 ... 00 00 00 01 65 ...

由此可见,十六个像素点被划分成了三个NALU ,宏块怎么划分是不固定的有大有小,一帧图片被划分为多个宏块.

相关推荐
HY小宝F10 小时前
树莓派 FFmpeg 实战笔记(二):命令行、源码编译与硬件编码的真相
学习·职场和发展·ffmpeg
qq_3168377513 小时前
uniapp + Vite + ffmpeg-wasm 0.12.x 集成示例
ffmpeg·uni-app·wasm
qingmiaozhuan15 小时前
电脑录屏黑屏?只有声音没画面?从原理到排查一篇搞定
ffmpeg·电脑·音视频开发·录屏技术·电脑录屏
大鹅办公15 小时前
酷狗音乐怎么转换MP3格式?4种方法亲测对比+避坑指南(附FFmpeg命令行教程)
ffmpeg·音视频·音频格式
工具派2 天前
记一次用在线工具压缩视频的过程(两档实测)
ffmpeg·视频压缩·crf
bu_shuo3 天前
使用ffmpeg快速截取一段视频
ffmpeg·音视频
天天进步20154 天前
Pixelle-Video 源码解析 #4:快速启动流程:uv、Streamlit、ffmpeg 分别负责什么?
ffmpeg·uv
Facechat4 天前
Seedance 2.0 + FFmpeg:我的「一句话出片」工具是怎么做出来的
ffmpeg·seedance
HY小宝F4 天前
从 APP 层打穿到传感器:树莓派 FFmpeg 底层学习笔记(一)V4L2/ALSA 踩坑与认知重构
笔记·学习·ffmpeg
proware5 天前
ffmpeg 初始化配置及基本概念与套路
ffmpeg·mpp·rockchip·rga