yjjnls/Notes

View on GitHub
gstreamer/doc/gstreamer工具2.md

Summary

Maintainability
Test Coverage
<font face="微软雅黑">

-   [1. gst-inspect](#1-gst-inspect)
    -   [1.1 Basics](#11-basics)
    -   [1.2 查看element的caps](#12-%E6%9F%A5%E7%9C%8Belement%E7%9A%84caps)
-   [2. gst-discoverer](#2-gst-discoverer)
-   [3. debug](#3-debug)
    -   [3.1 打印调试信息](#31-%E6%89%93%E5%8D%B0%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF)
    -   [3.2 获取pipeline图像](#32-%E8%8E%B7%E5%8F%96pipeline%E5%9B%BE%E5%83%8F)
    -   [3.3 环境变量的设置](#33-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E8%AE%BE%E7%BD%AE)

# 1. gst-inspect

## 1.1 Basics

-   不带参数,它会列出所有可用的element,也就是你所有可以使用的元素
-   带一个文件名,它会把这个文件作为GStreamer的一个插件,试着打开,然后列出内部所有的element
-   带一个GStreamer的element,会列出该element的所有信息
    ## 1.2 查看element的caps


    gst-inspect-1.0 videotestsrc

    Factory Details:
      Rank                     none (0)
      Long-name                Video test source
      Klass                    Source/Video
      Description              Creates a test video stream
      Author                   David A. Schleef <ds@schleef.org>

    Plugin Details:
      Name                     videotestsrc
      Description              Creates a test video stream
      Filename                 D:\Working\Prj\Git\WMS\build\build\debug\local\x86_64\lib\gstreamer-1.0\libgstvideotestsrc.dll
      Version                  1.12.0
      License                  LGPL
      Source module            gst-plugins-base
      Source release date      2017-05-04
      Binary package           GStreamer Base Plug-ins source release
      Origin URL               Unknown package origin

    GObject
     +----GInitiallyUnowned
           +----GstObject
                 +----GstElement
                       +----GstBaseSrc
                             +----GstPushSrc
                                   +----GstVideoTestSrc

    Pad Templates:
      SRC template: 'src'
        Availability: Always
        Capabilities:
          video/x-raw
                     format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)AYUV, (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR, (string)RGB, (string)BGR, (string)Y41B, (string)Y42B, (string)YVYU, (string)Y444, (string)v210, (string)v216, (string)NV12, (string)NV21, (string)GRAY8, (string)GRAY16_BE, (string)GRAY16_LE, (string)v308, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)UYVP, (string)A420, (string)RGB8P, (string)YUV9, (string)YVU9, (string)IYU1, (string)ARGB64, (string)AYUV64, (string)r210, (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)NV16, (string)NV24, (string)NV12_64Z32, (string)A420_10BE, (string)A420_10LE, (string)A422_10BE, (string)A422_10LE, (string)A444_10BE, (string)A444_10LE, (string)NV61, (string)P010_10BE, (string)P010_10LE, (string)IYU2, (string)VYUY, (string)GBRA, (string)GBRA_10BE, (string)GBRA_10LE, (string)GBR_12BE, (string)GBR_12LE, (string)GBRA_12BE, (string)GBRA_12LE, (string)I420_12BE, (string)I420_12LE, (string)I422_12BE, (string)I422_12LE, (string)Y444_12BE, (string)Y444_12LE }
                      width: [ 1, 2147483647 ]
                     height: [ 1, 2147483647 ]
                  framerate: [ 0/1, 2147483647/1 ]
             multiview-mode: { (string)mono, (string)left, (string)right }
          video/x-bayer
                     format: { (string)bggr, (string)rggb, (string)grbg, (string)gbrg }
                      width: [ 1, 2147483647 ]
                     height: [ 1, 2147483647 ]
                  framerate: [ 0/1, 2147483647/1 ]
             multiview-mode: { (string)mono, (string)left, (string)right }


    Element Flags:
      no flags set

    Element Implementation:
      Has change_state() function: gst_base_src_change_state

    Element has no clocking capabilities.
    Element has no URI handling capabilities.

    Pads:
      SRC: 'src'
        Pad Template: 'src'

    Element Properties:
      name                : The name of the object
                            flags: readable, writable
                            String. Default: "videotestsrc0"
      parent              : The parent of the object
                            flags: readable, writable
                            Object of type "GstObject"
      blocksize           : Size in bytes to read per buffer (-1 = default)
                            flags: readable, writable
                            Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
      num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                            flags: readable, writable
                            Integer. Range: -1 - 2147483647 Default: -1 
      typefind            : Run typefind before negotiating
                            flags: readable, writable
                            Boolean. Default: false
      do-timestamp        : Apply current stream time to buffers
                            flags: readable, writable
                            Boolean. Default: false
      pattern             : Type of test pattern to generate
                            flags: readable, writable
                            Enum "GstVideoTestSrcPattern" Default: 0, "smpte"
                               (0): smpte            - SMPTE 100% color bars
                               (1): snow             - Random (television snow)
                               (2): black            - 100% Black
                               (3): white            - 100% White
                               (4): red              - Red
                               (5): green            - Green
                               (6): blue             - Blue
                               (7): checkers-1       - Checkers 1px
                               (8): checkers-2       - Checkers 2px
                               (9): checkers-4       - Checkers 4px
                               (10): checkers-8       - Checkers 8px
                               (11): circular         - Circular
                               (12): blink            - Blink
                               (13): smpte75          - SMPTE 75% color bars
                               (14): zone-plate       - Zone plate
                               (15): gamut            - Gamut checkers
                               (16): chroma-zone-plate - Chroma zone plate
                               (17): solid-color      - Solid color
                               (18): ball             - Moving ball
                               (19): smpte100         - SMPTE 100% color bars
                               (20): bar              - Bar
                               (21): pinwheel         - Pinwheel
                               (22): spokes           - Spokes
                               (23): gradient         - Gradient
                               (24): colors           - Colors
      timestamp-offset    : An offset added to timestamps set on buffers (in ns)
                            flags: readable, writable
                            Integer64. Range: 0 - 2147483646999999999 Default: 0 
      is-live             : Whether to act as a live source
                            flags: readable, writable
                            Boolean. Default: false
      k0                  : Zoneplate zero order phase, for generating plain fields or phase offsets
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kx                  : Zoneplate 1st order x phase, for generating constant horizontal frequencies
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      ky                  : Zoneplate 1st order y phase, for generating contant vertical frequencies
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kt                  : Zoneplate 1st order t phase, for generating phase rotation as a function of time
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kxt                 : Zoneplate x*t product phase, normalised to kxy/256 cycles per vertical pixel at width/2 from origin
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kyt                 : Zoneplate y*t product phase
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kxy                 : Zoneplate x*y product phase
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kx2                 : Zoneplate 2nd order x phase, normalised to kx2/256 cycles per horizontal pixel at width/2 from origin
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      ky2                 : Zoneplate 2nd order y phase, normailsed to ky2/256 cycles per vertical pixel at height/2 from origin
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      kt2                 : Zoneplate 2nd order t phase, t*t/256 cycles per picture
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      xoffset             : Zoneplate 2nd order products x offset
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      yoffset             : Zoneplate 2nd order products y offset
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      foreground-color    : Foreground color to use (big-endian ARGB)
                            flags: readable, writable, controllable
                            Unsigned Integer. Range: 0 - 4294967295 Default: 4294967295 
      background-color    : Background color to use (big-endian ARGB)
                            flags: readable, writable, controllable
                            Unsigned Integer. Range: 0 - 4294967295 Default: 4278190080 
      horizontal-speed    : Scroll image number of pixels per frame (positive is scroll to the left)
                            flags: readable, writable
                            Integer. Range: -2147483648 - 2147483647 Default: 0 
      animation-mode      : For pattern=ball, which counter defines the position of the ball.
                            flags: readable, writable
                            Enum "GstVideoTestSrcAnimationMode" Default: 0, "frames"
                               (0): frames           - frame count
                               (1): wall-time        - wall clock time
                               (2): running-time     - running time
      motion              : For pattern=ball, what motion the ball does
                            flags: readable, writable
                            Enum "GstVideoTestSrcMotionType" Default: 0, "wavy"
                               (0): wavy             - Ball waves back and forth, up and down
                               (1): sweep            - 1 revolution per second
                               (2): hsweep           - 1/2 revolution per second, then reset to top
      flip                : For pattern=ball, invert colors every second.
                            flags: readable, writable
                            Boolean. Default: false

主要看**Pad Templates**属性,这里videtestsrc只包含src pad,表示只有输出。同时该pad有两个caps:**video/x-raw**和**video/x-bayer**。

如果是测试autovideosink,则会得到如下结果

    Pad Templates:
      SINK template: 'sink'
        Availability: Always
        Capabilities:
          ANY

表示autovideosink可以接收任何类型的cap。

# 2. gst-discoverer

参数为文件,可以查看媒体文件的信息。比如查看录制的videotestsrc的录像文件,可以看到它的媒体属性。

    Topology:
      video: H.264 (High Profile)

    Properties:
      Duration: 0:02:46.347000000
      Seekable: yes
      Tags:
          video codec: H.264 (High Profile)

# 3. debug

[GStreamer基础教程11——调试工具](http://blog.csdn.net/sakulafly/article/details/21559785)

## 3.1 打印调试信息

设置环境变量 **GST_DEBUG**

    GST_DEBUG=2
    GST_DEBUG=2,audiotestsrc:5
    GST_DEBUG=2,audio*:5

设置日志重定向为文件
    GST_DEBUG_FILE=log.txt

    G_DEBUG=fatal-criticals
    G_DEBUG=fatal_warnings


## 3.2 获取pipeline图像

设置**GST_DEBUG_DUMP_DOT_DIR**变量就可以在每次pipeline的状态变化时查看序列图(gst-launch)

## 3.3 环境变量的设置

```dos
set GSTREAMER_ROOT=%~dp0
set GST_PLUGIN_SYSTEM_PATH_1_0=%GSTREAMER_ROOT%/lib/gstreamer-1.0
set GIO_EXTRA_MODULES=%GSTREAMER_ROOT%/lib/gio/modules
set GST_PLUGIN_SYSTEM_PATH=%GSTREAMER_ROOT%/lib/gstreamer-0.10
set GST_PLUGIN_SCANNER=%GSTREAMER_ROOT%/libexec/gstreamer-0.10/gst-plugin-scanner
set GST_PLUGIN_SCANNER_1_0=%GSTREAMER_ROOT%/libexec/gstreamer-1.0/gst-plugin-scanner
PATH=%GSTREAMER_ROOT%bin;%PATH%
set GI_TYPELIB_PATH=%GSTREAMER_ROOT%/lib/girepository-1.0


start cmd
```

```bash
#!/bin/bash

export GSTREAMER_ROOT="d:/gstreamer/1.0/x86_64"
export CPPFLAGS="-I${GSTREAMER_ROOT}/include ${CPPFLAGS}"
export GST_REGISTRY_1_0="${HOME}/.cache/gstreamer-1.0/gstreamer-cerbero-registry"
export XDG_CONFIG_DIRS="${GSTREAMER_ROOT}/etc/xdg${XDG_CONFIG_DIRS:+:$XDG_CONFIG_DIRS}:/etc/xdg"
export LDFLAGS="-L${GSTREAMER_ROOT}/lib ${LDFLAGS}"
export XDG_DATA_DIRS="${GSTREAMER_ROOT}/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}:/usr/local/share:/usr/share"
export GST_PLUGIN_SYSTEM_PATH_1_0="${GSTREAMER_ROOT}/lib/gstreamer-1.0"
export GIO_EXTRA_MODULES="${GSTREAMER_ROOT}/lib/gio/modules"
export GST_PLUGIN_SYSTEM_PATH="${GSTREAMER_ROOT}/lib/gstreamer-0.10"
export GST_PLUGIN_SCANNER="${GSTREAMER_ROOT}/libexec/gstreamer-0.10/gst-plugin-scanner"
export GST_PLUGIN_SCANNER_1_0="${GSTREAMER_ROOT}/libexec/gstreamer-1.0/gst-plugin-scanner"
export CFLAGS="-I${GSTREAMER_ROOT}/include ${CFLAGS}"
export PYTHONPATH="${GSTREAMER_ROOT}/lib/python2.7/site-packages${PYTHONPATH:+:$PYTHONPATH}"
export PKG_CONFIG_PATH="${GSTREAMER_ROOT}/lib/pkgconfig:${GSTREAMER_ROOT}/share/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
export PATH="${GSTREAMER_ROOT}/bin${PATH:+:$PATH}:/usr/local/bin:/usr/bin:/bin"
export GST_REGISTRY="${HOME}/.gstreamer-0.10/gstreamer-cerbero-registry"
export LD_LIBRARY_PATH="${GSTREAMER_ROOT}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export CXXFLAGS="-I${GSTREAMER_ROOT}/include ${CXXFLAGS}"
export GI_TYPELIB_PATH="${GSTREAMER_ROOT}/lib/girepository-1.0"


$SHELL "$@"
```