设备网络SDK开发使用手册


<StreamingChannel version="2.0">
  <id>
    <!--req, xs:string;id -->
  </id>
  <channelName>
    <!--req, xs:string, 通道名称 -->
  </channelName>
  <enabled>
    <!--req, xs:boolean, 使能 -->
  </enabled>
  <Transport>
    <!--req, 传输能力 -->
    <maxPacketSize>
      <!-- opt, xs:integer -->
    </maxPacketSize>
    <audioPacketLength>
      <!-- opt, xs:integer -->
    </audioPacketLength>
    <audioInboundPacketLength>
      <!-- opt, xs:integer -->
    </audioInboundPacketLength>
    <audioInboundPortNo>
      <!-- opt, xs:integer -->
    </audioInboundPortNo>
    <videoSourcePortNo>
      <!-- opt, xs:integer -->
    </videoSourcePortNo>
    <audioSourcePortNo>
      <!-- opt, xs:integer -->
    </audioSourcePortNo>
    <ControlProtocolList>
      <!-- req -->
      <ControlProtocol>
        <!-- req -->
        <streamingTransport>
          <!-- req, xs:string, "HTTP,RTSP,SHTTP" -->
        </streamingTransport>
      </ControlProtocol>
    </ControlProtocolList>
    <Unicast>
      <!-- opt -->
      <enabled>
        <!-- req, xs:boolean -->
      </enabled>
      <interfaceID>
        <!-- opt, xs:string -->
      </interfaceID>
      <rtpTransportType>
        <!-- opt, xs:string, "RTP/UDP,RTP/TCP" -->
      </rtpTransportType>
    </Unicast>
    <Multicast>
      <!-- opt -->
      <enabled>
        <!-- req, xs:boolean -->
      </enabled>
      <userTriggerThreshold>
        <!-- opt, xs:integer -->
      </userTriggerThreshold>
      <destIPAddress>
        <!-- dep, xs:string -->
      </destIPAddress>
      <videoDestPortNo>
        <!-- opt, xs:integer -->
      </videoDestPortNo>
      <audioDestPortNo>
        <!-- opt, xs:integer -->
      </audioDestPortNo>
      <destIPv6Address>
        <!-- dep, xs:string -->
      </destIPv6Address>
      <ttl>
        <!-- opt, xs:integer -->
      </ttl>
    </Multicast>
    <Security>
      <!-- opt -->
      <enabled>
        <!-- req, xs:boolean -->
      </enabled>
    </Security>
  </Transport>
  <Video>
    <!--opt, 视频流能力 -->
    <enabled>
      <!-- req, xs:boolean -->
    </enabled>
    <videoInputChannelID>
      <!-- req, xs:string;id -->
    </videoInputChannelID>
    <videoCodecType>
      <!-- req, xs:string, "MPEG4,MJPEG,3GP,H.264,HK.264,MPNG,SVAC" -->
    </videoCodecType>
    <videoScanType>
      <!-- opt, xs:string, "progressive,interlaced" -->
    </videoScanType>
    <videoResolutionWidth>
      <!-- req, xs:integer -->
    </videoResolutionWidth>
    <videoResolutionHeight>
      <!-- req, xs:integer -->
    </videoResolutionHeight>
    <videoPositionX>
      <!-- opt, xs:integer -->
    </videoPositionX>
    <videoPositionY>
      <!-- opt, xs:integer -->
    </videoPositionY>
    <videoQualityControlType>
      <!-- opt, xs:string, "CBR,VBR" -->
    </videoQualityControlType>
    <constantBitRate>
      <!-- dep, xs:integer, in kbps -->
    </constantBitRate>
    <fixedQuality>
      <!-- opt, xs:integer, percentage, 0..100 -->
    </fixedQuality>
    <vbrUpperCap>
      <!-- dep, xs:integer, in kbps -->
    </vbrUpperCap>
    <vbrLowerCap>
      <!-- dep, xs:integer, in kbps -->
    </vbrLowerCap>
    <maxFrameRate>
      <!-- req, xs:integer, maximum frame rate x100 -->
    </maxFrameRate>
    <keyFrameInterval>
      <!-- opt, xs:integer, milliseconds -->
    </keyFrameInterval>
    <rotationDegree>
      <!-- opt, xs:integer, degrees, 0..360 -->
    </rotationDegree>
    <mirrorEnabled>
      <!-- opt, xs:boolean -->
    </mirrorEnabled>
    <snapShotImageType>
      <!-- opt, xs:string, "JPEG,GIF,PNG" -->
    </snapShotImageType>
    <Mpeg4Profile>
      <!--dep, xs:string, "SP,ASP"-->
    </Mpeg4Profile>
    <H264Profile>
      <!-- dep, xs:string, "Baseline,Main,High, Extended" -->
    </H264Profile>
    <SVACProfile>
      <!-- dep, xs:string, "Baseline,Main,High,Extended" -->
    </SVACProfile>
    <GovLength>
      <!--opt, xs:integer -->
    </GovLength>
    <SVC>
      <enabled>
        <!-- req, xs:boolean -->
      </enabled>
      <SVCMode>
        <!--dep, xs:string, "manual,auto" -->
      </SVCMode>
    </SVC>
    <smoothing>
      <!-- opt, xs:integer-->
    </smoothing>
  </Video>
  <Audio>
    <!-- opt, 音频流能力 -->
    <enabled>
      <!-- req, xs:boolean, 使能 -->
    </enabled>
    <audioInputChannelID>
      <!-- req, xs:string;id, 音频输入通道号-->
    </audioInputChannelID>
    <audioCompressionType>
      <!-- req, xs:string, "G.711alaw,G.711ulaw,G.726,G.729,G.729a,G.729b,PCM,MP3,AC3,AAC,ADPCM,MP2L2", 音频编码类型-->
    </audioCompressionType>
    <audioInboundCompressionType>
      <!-- opt, xs:string, "G.711alaw,G.711ulaw,G.726,G.729,G.729a,G.729b,PCM,MP3,AC3,AAC,ADPCM,MP2L2", 音频输入类型-->
    </audioInboundCompressionType>
    <audioBitRate>
      <!-- opt, xs:integer, in kbps, 音频码率-->
    </audioBitRate>
    <audioSamplingRate>
      <!-- opt, xs:float, in kHz, 音频采样率-->
    </audioSamplingRate>
    <audioResolution>
      <!-- opt, xs:integer, in bits, 音频位数 -->
    </audioResolution>
  </Audio>
  <enableCABAC>
    <!-- opt, xs: boolean, 是否支持CABAC功能-->
  </enableCABAC>
  <subStreamRecStatus>
    <!-- opt, xs: boolean, 是否支持子码流录像状态-->
  </subStreamRecStatus>
  <isSupportRefreshFrame>
    <!-- opt, xs:boolen, 是否支持强制刷新帧,对应NET_DVR_STREAMING_REFRESH_FRAME命令 -->
  </isSupportRefreshFrame>
  <isSupportBareDataOverlay>
    <!--opt, xs:boolen, 是否支持热成像裸数据叠加功能,对应NET_DVR_BAREDATAOVERLAY_CFG配置结构体-->
  </isSupportBareDataOverlay>
</StreamingChannel>