繁体   English   中英

使用 NVENCODE 时损坏 output API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM