[GStreamer] TX1-CPU- und -GPU-Decodierung zeigen den RTSP-Stream der Hikvision-Kamera an

      Hallo zusammen, ich bin Bruder Hu. Ich habe heute eine Reihe von Hikvision-Kameras gefunden. Ich möchte DeepStream testen und den RTSP-Stream der Netzwerkkamera als Eingabe verwenden, um die anschließende Zielerkennung und -klassifizierung zu sehen. Aber ich möchte das Video trotzdem in Echtzeit ansehen. Natürlich kann ich VLC auswählen, um es anzuzeigen. Übrigens habe ich es auch mit GStreamer getestet und die Ressourcennutzung von CPU-Decodierung und GPU-Decodierung unter dem TX1-Kernmodul verglichen Teilen Sie es mit allen, und es ist auch mein eigenes Erstellen Sie eine zusammenfassende Notiz.

        Ich habe festgestellt, dass die Bildgröße der Hikvision-Kamera 1280 x 720 beträgt und die H.264-Komprimierung verwendet wird. Außerdem konnte ich nach der Installation des VLC-Players auf meinem eigenen System den Netzwerk-Stream nicht abspielen.Nach langer Suche konnte ich es nicht lösen, also habe ich ehrlich gesagt noch den GStreamer-Test bekommen.

Inhaltsverzeichnis

1. Zeigen Sie die RTSP-Stream-CPU-Decodierung der Netzwerkkamera an

1.1 Speichern Sie einen Fotorahmen

1.2 Anzeige (NoMachine-Terminal) avdec_h264 CPU-Decodierung

1.3 Grundlegende Informationen zum Plug-in avdec_h264

2. GPU-Hardware-Decodierung in TX1

1.1 Grundlegende Informationen zu omxh264dec

1.2 Dekodierungsanzeige


1. Zeigen Sie die RTSP-Stream-CPU-Decodierung der Netzwerkkamera an

#playbin 插件播放 需要显示器支持 NoMachine终端不显示
gst-launch-1.0 playbin uri= rtsp://admin:[email protected]:554/h264/ch1/main/av_stream
#子码流取流:
#playbin 插件播放 需要显示器支持 NoMachine终端不显示
gst-launch-1.0 playbin uri= rtsp://admin:[email protected]:554/h264/ch1/sub/av_stream

1.1 Speichern Sie einen Fotorahmen

#rtspsrc 指定数据来源,类似之前的v4l2 Receive data over the network via RTSP (RFC 2326)
#location 数据来源URL,需要可以使用playbin能播放
#rtph264depay 从RTSP数据流转接成H264 video  Extracts H264 video from RTP packets (RFC 3984)
#avdec_h264 H.264解码 不是所有平台都有,先要查一下自己平台是否有这个插件
#h264parse 分析和缓冲H.264数据流 Parses H.264 streams
#videorate 调整帧率,优化视频流 Drops/duplicates/adjusts timestamps on video frames to make a perfect stream
#jpegenc 编码
 
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
! rtph264depay ! h264parse ! avdec_h264 \
! videorate ! jpegenc ! filesink location=./file_1280_720_img-1.jpg

1.2 Anzeige (NoMachine-Terminal) avdec_h264 CPU-Decodierung

gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
! rtph264depay ! h264parse ! avdec_h264 \
! videorate ! xvimagesink

#第1种 CPU 解码 不进行调整帧率
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
latency=7  \
! rtph264depay ! h264parse \
! avdec_h264  \
! xvimagesink
#第2种 CPU 解码 进行调整帧率
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
latency=7  \
! rtph264depay ! h264parse \
! avdec_h264 ! videorate \
! xvimagesink
#第3种 CPU 解码  不进行调整帧率 不适用latency cap
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
! rtph264depay ! h264parse \
! avdec_h264 \
! xvimagesink
#第4种 CPU 解码  不进行调整帧率 sync 关闭
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
latency=7  \
! rtph264depay ! h264parse \
! avdec_h264 \
! xvimagesink sync=false 

Standardsystemressourcen

 Typ 1: Die CPU-Auslastung ist deutlich erhöht und die Bildschirmflüssigkeit ist akzeptabel

 Typ 2: Die CPU-Auslastung ist deutlich erhöht und die Bildschirmflüssigkeit ist akzeptabel, was sich nicht wesentlich vom ersten Typ unterscheidet

Typ 3: Die CPU-Auslastung ist deutlich erhöht und die Bildschirmflüssigkeit ist akzeptabel, aber die Verzögerung beträgt offensichtlich mehrere Sekunden

 Typ 4: Die CPU-Auslastung ist deutlich erhöht, die Bildschirmflüssigkeit ist akzeptabel und es gibt im Grunde keine Verzögerung

1.3 Grundlegende Informationen zum Plug-in avdec_h264

nvidia@ubuntu:~$ gst-inspect-1.0 avdec_h264
Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { (string)I420, (string)YUY2, (string)RGB, (string)BGR, (string)Y42B, (string)Y444, (string)YUV9, (string)Y41B, (string)GRAY8, (string)RGB8P, (string)I420, (string)Y42B, (string)Y444, (string)UYVY, (string)NV12, (string)NV21, (string)ARGB, (string)RGBA, (string)ABGR, (string)BGRA, (string)GRAY16_BE, (string)GRAY16_LE, (string)A420, (string)RGB16, (string)RGB15, (string)I420_10BE, (string)I420_10LE, (string)I422_10BE, (string)I422_10LE, (string)Y444_10BE, (string)Y444_10LE, (string)GBR, (string)GBR_10BE, (string)GBR_10LE, (string)A420_10BE, (string)A420_10LE, (string)A422_10BE, (string)A422_10LE, (string)A444_10BE, (string)A444_10LE, (string)GBRA, (string)xRGB, (string)RGBx, (string)xBGR, (string)BGRx, (string)I420_12BE, (string)I420_12LE, (string)I422_12BE, (string)I422_12LE, (string)Y444_12BE, (string)Y444_12LE, (string)GBR_12BE, (string)GBR_12LE, (string)GBRA_12BE, (string)GBRA_12LE }
  
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-h264
              alignment: au
          stream-format: { (string)avc, (string)byte-stream }
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

2. GPU-Hardware-Decodierung in TX1

1.1 Grundlegende Informationen zu omxh264dec

nvidia@ubuntu:~$ gst-inspect-1.0 omxh264dec
nvbuf_utils: Could not get EGL display connection
Factory Details:
  Rank                     primary + 10 (266)
  Long-name                OpenMAX H.264 Video Decoder
  Klass                    Codec/Decoder/Video
  Description              Decode H.264 video streams
  Author                   Sebastian Dröge <[email protected]>
Plugin Details:
  Name                     omx
  Description              GStreamer OpenMAX Plug-ins
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstomx.so
  Version                  1.2.3
  License                  LGPL
  Source module            gstreamer
  Source release date      2014-02-08
  Binary package           GStreamer source release
  Origin URL               Unknown package origin
Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-h264
                 parsed: true
              alignment: au
          stream-format: byte-stream
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw(memory:NVMM)
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

1.2 Dekodierungsanzeige

#第1种 :GPU 解码 不使用latency cap
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
! rtph264depay ! h264parse \
! omxh264dec  \
! videoconvert  \
! xvimagesink
#第2种 :GPU 解码 使用latency cap
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
latency=7  \
! rtph264depay ! h264parse \
! omxh264dec  \
! videoconvert  \
! xvimagesink
#第3种 :GPU 解码 使用latency cap,关闭显示sync=false 
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
latency=7  \
! rtph264depay ! h264parse \
! omxh264dec  \
! videoconvert  \
! xvimagesink sync=false 
#第4种 :GPU 解码 不使用latency cap,关闭显示sync=false 
gst-launch-1.0 rtspsrc \
location="rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" \
! rtph264depay ! h264parse \
! omxh264dec  \
! videoconvert  \
! xvimagesink sync=false 
Typ 1: Es gibt eine erhebliche Verzögerung im Video

 Typ 2: Der Alarm wird kontinuierlich gedruckt und die Verzögerung ist offensichtlich

 Typ 3: Kein Alarm, flüssiges Video, keine Verzögerung

Typ 4: Kein Unterschied zu Typ 3

Das Obige ist das, was ich heute teilen möchte. Fehlerbehebung, Fragen, Kommunikation:  [email protected]

Supongo que te gusta

Origin blog.csdn.net/cau_weiyuhu/article/details/129102319
Recomendado
Clasificación