使用gstreamer将原始视频编码到h264

使用gstreamer将原始视频编码到h264,gstreamer,h.264,yuv,Gstreamer,H.264,Yuv,我正在使用nvh264enc将原始视频编码为h264 原始视频是使用dxgiscreencapsrc生成的,dxgiscreencapsrc具有以下功能 video/x-raw: format: BGRA width: [ 1, 2147483647 ] height: [ 1, 2147483647 ] framerate: [ 0/1, 2147483647/1 ] 因此,它以BGRA格式生成原始视频 NVH264ENC不

我正在使用nvh264enc将原始视频编码为h264

原始视频是使用dxgiscreencapsrc生成的,dxgiscreencapsrc具有以下功能

video/x-raw:
         format: BGRA
          width: [ 1, 2147483647 ]
         height: [ 1, 2147483647 ]
      framerate: [ 0/1, 2147483647/1 ]
因此,它以BGRA格式生成原始视频

NVH264ENC不支持此压缩格式,但也支持多种其他格式

它支持的格式列表是NV12、YV12、I420、BGRA、RGBA、Y444、VUYA

现在我不知道哪种格式最适合压缩到H264

我应该将其保留为BGRA,还是应该将BGRA转换为其他格式,如I420(使用gstreamer视频转换),然后以这种方式压缩为h264

每种原始视频格式的优点/缺点是什么,转换会使h264变得更糟吗

我应该将其保留为BGRA,还是应该将BGRA转换为其他格式,如I420

如果已经支持像素格式,请坚持使用。否则,从一种像素格式转换到另一种像素格式只会浪费无用的CPU周期(特别是考虑到编码器元素在GPU中可能更有效地完成这项工作)

每种原始视频格式的优点/缺点是什么,转换会使h264变得更糟吗

这里没有好处/坏处。所有这些格式都指定了原始视频数据的结构方式。唯一需要注意的是,如果您要使用像NV12/YV12/I420这样的格式,因为这些格式使用,所以这将是有损转换。一般来说,基于YUV的格式需要更少的处理(因为这是编码器可能在内部使用的),但正如前一点所述,您最好让编码器元素以更高效的方式为您完成这项工作