Я предполагаю, что причиной замедления вашего видео является конвертация видео формата. OpenCv получает видео в формате BGR
от элемента gstreamer appsink
. Если ваш imxv4l2videosrc
выводит другой формат (например, UYVY
или I420
), элементу videoconvert
придется много вычислять. В некоторых случаях эти вычисления используют более 100% вашего процессора, и это замедлит ваш поток ввода.
Вы можете проверить, какой формат использует исходный канал, добавив -v
в конец канала.
gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=2 ! imxvpuenc_h264 quant-param=29 ! rtph264pay mtu=60000 ! udpsink host=10.42.0.1 port=5000 sync=false -v
Мы можем проверить, замедляет ли преобразование видео вашу систему, уменьшая разрешение. Можете ли вы попробовать еще раз, уменьшив разрешение до 1280x720
или 640x360
, и проверить загрузку вашего процессора?
Если это так, мы можем запросить вывод у imxv4l2videosrc
в разных форматах. Я не использовал этот элемент, и я не знаю его возможностей. Но вы можете проверить возможности с помощью команды gst-inspect-1.0
.
gst-inspect-1.0 imxv4l2videosrc
На выходе будет такая часть
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw
format: { (string)RGB16, (string)BGR, (string)RGB, (string)GRAY8, (string)GRAY16_LE, (string)GRAY16_BE, (string)YVU9, (string)YV12, (string)YUY2, (string)YVYU, (string)UYVY, (string)Y42B, (string)Y41B, (string)YUV9, (string)NV12_64Z32, (string)NV24, (string)NV61, (string)NV16, (string)NV21, (string)NV12, (string)I420, (string)BGRA, (string)BGRx, (string)ARGB, (string)xRGB, (string)BGR15, (string)RGB15 }
width: [ 1, 32768 ]
height: [ 1, 32768 ]
framerate: [ 0/1, 2147483647/1 ]
Форматы, такие как BGRx
, 'RGB' или 'xRGB', имеющие каналы B, G и R., будут полезными и быстрыми для вас.