Skip to content

Cum să folosești formatul NV12 în FFmpeg

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să folosești formatul NV12 în FFmpeg. We cover key concepts, practical examples, and best practices.

Problema

NV12 este un format de pixeli utilizat frecvent de API-urile hardware (DirectX, Vulkan, VAAPI). Când procesezi video provenit de la accelerare hardware sau destinație hardware, folosirea formatului greșit cauzează erori de memorie sau conversii ineficiente.

Soluția

Fix 1: Conversie la NV12 pentru hardware

ffmpeg -i input.mp4 -c:v h264_nvenc -pix_fmt nv12 output.mp4

NV12 este formatul standard al encoderelor hardware NVIDIA și AMD.

Fix 2: Verifică formatul curent

ffprobe -v error -select_streams v:0 -show_entries stream=pix_fmt input.mp4

Fix 3: Forțează NV12 în filter chain

ffmpeg -i input.mp4 -vf "scale=1920:1080,format=nv12" -c:v h264_amf output.mp4

Fix 4: Decodare HW cu ieșire NV12

ffmpeg -hwaccel cuda -hwaccel_output_format nv12 -i input.mp4 -c:v h264_nvenc output.mp4

Prevenție

  • NV12 și yuv420p sunt echivalente din punct de vedere al informației, dar NV12 are aranjament diferit în memorie.
  • Folosește întotdeauna NV12 pentru encoding hardware (NVENC, AMF, QSV).
  • Pentru encoding software, yuv420p e mai potrivit.

Întrebări frecvente

### Care e diferența dintre NV12 și yuv420p?

Ambele stochează aceeași informație (YUV 4:2:0), dar aranjamentul în memorie diferă. NV12 stochează planul U și V intercalat (UVUV), în timp ce yuv420p le stochează separat.

Când primesc erori de pix_fmt la encoding HW?

Când încerci să folosești un format neacceptat de encoderul hardware. De exemplu, h264_nvenc acceptă doar nv12 și yuv444p (pe plăci moderne).

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro