Skip to main content

V4L2-H264Enc

测试功能

  1. 使用ffmpeg工具,将视频生成特定格式(NV12/NV21/YUV420)的YUV源文件
  2. 输入YUV格式的文件, 配置格式,输出h264码流.
  3. 使用ffmpeg或者其他码流分析工具,导入VPU编码后的数据,看是否能正常解码。

生成YUV数据

  1. 从视频文件中输出3帧nv12格式数据. vframes控制输出的帧数.
ffmpeg -i video.mp4.dump.h264 -pix_fmt nv12 -vframes 3 video-nv12.yuv

应用程序基本思路

  1. 使用标准的V4L2 API.
  2. 初始化output 信息. 指定输入格式,宽高. 根据宽高申请内存. < NV12/NV21/YUV420P > < width * height > 等等
  3. 初始化capture信息. 指定输出格式,根据输入宽高,申请一帧大小(实际码流肯定小于一帧.) < H264` >
  4. 循环读入帧文件,编码器编码
  5. 结束

测试方法

编译应用程序v4l2_h264enc

cd  doc/开发使用说明/VPU编解码驱动和应用/v4l2-h264enc/src

../../../../../buildroot/buildroot/output/host/bin/mips-linux-gnu-gcc v4l2-h264enc.c v4l2.c -o v4l2-h264enc

执行

./v4l2_h264enc -t [nv12,nv21,yuv420] -v [/dev/videox] -f [input yuv data] -w [input picture widht] -h [input picture height]

参数说明:

  • 支持的输入格式 -t: nv12, nv21, yuv420
  • 输入设备选择-v: /dev/videoX, 选择helix设备节点
  • 输入yuv数据文件 -f:
  • 输入yuv数据文件宽高: -w 1280 -h 720