如何才能达到 H265下 8路视频编码 1080p 30fps 的参数

问题描述

硬件设备:apeax orin nx

系统版本:5.1.1

模组:orin nx 16G

操作过程:

1.生成yuv文件(仅供参考 任意1080p文件均可)

#生成文件

nvidia@miivii-tegra:/usr/src/jetson_multimedia_api/samples/15_multivideo_encode$

sudo ffmpeg -f lavfi -i testsrc=size=1920x1080:rate=30:duration=10 -pix_fmt yuv420p -y …/07_video_convert/video420.yuv0

2.进入nvidia 的视频编码api,修改multivideo_encode_main.cpp
cd /usr/src/jetson_multimedia_api/samples/15_multivideo_encode

在multivideo_encode_main.cpp中添加记录编码完成时间的代码。

修改后的文件如下:
multivideo_encode_main.txt (35.1 KB)

编译:sudo make

3.运行 8路1080p 视频编码 查看是否达到1080p 30FPS的纸面参数

运行命令如下:

nvidia@miivii-tegra:/usr/src/jetson_multimedia_api/samples/15_multivideo_encode$

sudo ./multivideo_encode num_files 8 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test1.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test2.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test3.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test4.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test5.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test6.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test7.h265 \

…/07_video_convert/video420.yuv0 1920 1080 H265 test8.h265 \

异常现象

在8路1080p30帧下 H265 编码延时就会大于帧间隔

完整输出可见日志:

外部媒体

其他尝试:

1.sudo jetson_clocks >>> 依旧出现大于33ms的帧

2.降低码率 bitrate = 1 * 1024 * 1024 , 4M将至1M 与2M >>> 依旧出现问题

3.尝试每个进程执行一路,同时执行7个进程 >>> 依旧出现问题

nvidia@miivii-tegra:/usr/src/jetson_multimedia_api/samples/15_multivideo_encode$ sudo cat test.sh
#!/bin/bash

切换到脚本所在目录或使用绝对路径

cd /path/to/your/directory

sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test1.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test2.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test3.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test4.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test5.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test6.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test7.h265 &
sudo ./multivideo_encode num_files 1 …/07_video_convert/video420.yuv0 1920 1080 H265 test8.h265 &

等待所有后台进程完成

wait
echo “所有编码任务已完成”

疑问点

1.这样逐帧计算编码完成时间是否正确

2.如何才能达到 H265下 8路视频编码 1080p 30fps 的参数