web-dev-qa-db-ja.com

NVIDIA HEVC 4k5.0レベルのサポート

レベル5.0以下の4K(3840x2160)ストリームをエンコードしようとしていますが、成功しません。

私はffmpegの最新ビルドであるnvidiaドライバー410.66を使用しています。すべてnvidia/cuda:8.0-devel-ubuntu16.04イメージにドッキングされています。

私のテストコマンド:

ffmpeg -nostdin -loglevel trace -hwaccel cuvid -c:v hevc_cuvid -analyzeduration 10000000 -probesize 10000000 -y -i "udp://239.1.2.3:1234?pkt_size=1316\&timeout=2500000\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1" -map i:0x100 -filter:v:0 "scale_cuda=w=3840:h=2160" -c:v:0 hevc_nvenc -profile main -level 150 -preset llhp -zerolatency 1 -cbr 1 -rc cbr_ld_hq -b:v:0 2000k -minrate:0 1500k -maxrate:0 2400k -bufsize:0 1000k -map i:0x101 -c:a copy -f ismv /tmp/test.ismv

Apple仕様 は次のように述べているため、以下である必要があります。

1.6。 HEVCのプロファイル、レベル、およびティアは、Main10プロファイル、レベル5.0、高ティア以下である必要があります。

奇妙なことに、低解像度(HD)でエンコードすると機能しますが、4K解像度では次のエラーが発生します。

InitializeEncoderが失敗しました:無効なパラメータ(8)出力ストリーム0:0の初期化エラー-出力ストリーム#0:0のエンコーダを開いているときにエラーが発生しました-bit_rate、rate、width、heightなどのパラメータが正しくない可能性があります

私のffmpegconfigureコマンド:

PKG_CONFIG_PATH="/usr/local/nv-codec-headers" ./configure --prefix=/usr/local/ffmpeg_build --extra-cflags='-I/usr/local/ffmpeg_build/include -I/usr/local/cuda/include/' --extra-ldflags='-L/usr/local/ffmpeg_build/lib -L/usr/local/cuda/lib64/' --bindir=/usr/local/bin --extra-libs=-ldl --enable-cuvid --enable-cuda --enable-cuda-sdk --enable-nvenc --enable-filter=scale_cuda --enable-filter=thumbnail_cuda --enable-libnpp --enable-gpl --enable-libx264 --enable-libfdk-aac --enable-nonfree --enable-version3
2
Facundo

HEVCレベル5.0は、1秒あたり最大267,386,880ルマサンプルをサポートします。3840x2160は、1フレームあたり8,294,400サンプルです。8,294,400/ 267,386,880 =最大32フレーム/秒です。 (ここを参照 https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding_tiers_and_levels

あなたのビデオVideo: hevc (Main 10), 1 reference frame ([36][0][0][0] / 0x0024), yuv420p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbcは毎秒50フレームです。

フレームレートを25に下げると、機能します。それ以外の場合は、レベル5.1にする必要があります

2
szatmary