簡體   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