[英]Getting corrupted output when using NVENCODE API
我正在尝试使用作为视频编解码器 SDK 11.1.5 的一部分提供的 NVENC API(特别是 AppEncode 应用程序)使用 H.264 编码对 yuv 视频(从 IMX490 传感器保存)进行编码。
使用 CMake 构建所需的库后,我给出以下命令:
./AppEncCuda -i ~/Desktop/input-yuv420p.yuv -s 320x320 -tuninginfo lowlatency -rc cbr -gpu 0 -bitrate 2M -maxbitrate 4M -vbvbufsize 6M -vbvinit 25 -bf 0 -aq 0 -cq 20 -multipass qres -o ~/桌面/输出-yuv.h264
一些附加信息:input-yuv420p.yuv 的像素格式为 yuyv422(渐进式),2880x1860 所有标志设置均基于推荐设置(NVENC 视频编码器 API 编程指南:: NVIDIA 视频编解码器 SDK 文档)
使用的硬件:CUDA 11.4,NVIDIA GeForce RTX 3050 Ti
我还尝试了使用 ffmpeg(h264_nvenc 和 h264_cuvid)的等效方法,并且效果很好。 但是,当我尝试仅使用 NVENC API 进行编码时,我得到了损坏的输出。 我已经尝试将像素格式转换为 yuv420p 并进行编码,但仍然无效。 当我尝试使用 VLC 媒体播放器按编码文件显示时,我得到绿色像素/线条和随机颜色。
我对使用 NVENC API 很陌生,所以我立即开始观看视频 SDK,但我遇到了这些问题。 我不确定是什么原因造成的,所以任何建议都会很有帮助!
就像将-s 320x320
更改为-s 2880x1860
一样简单。 -s
标志表示输入分辨率大小而不是比例(这是我最初假设的)。
理想情况下,这样的命令应该可以顺利运行:
./AppEncCuda -i ~/Desktop/input-yuv420p.yuv -s 2880x1860 -tuninginfo lowlatency -rc cbr -gpu 0 -bitrate 2M -maxbitrate 4M -vbvbufsize 6M -vbvinit 25 -bf 0 -aq 0 -cq 20 -multipass qres -o ~/Desktop/output-yuv.h264
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.