问题描述
硬件设备: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 的参数