DJI Mobile SDK Documentation

      class ICameraStreamManager

      interface ICameraStreamManager
      包:dji.v5.manager.interfaces
      描述:

      相机码流管理类。支持相机镜头的码流显示、获取码流数据和帧数据等功能。以下是接口使用流程:

    • 通过addAvailableCameraUpdatedListener添加监听器获取可用的相机索引。
    • 调用putCameraStreamSurface将相机码流的画面显示到特定的的surface中。
    • 添加码流数据监听器addReceiveStreamListener来接收码流数据,码流数据可用于自行解码显示和第三方直播等功能。
    • 添加帧数据监听器addFrameListener来接收帧数据。帧数据可以用于AI识别等功能的算法处理。


    • MSDK 5.8.0开始支持

      类成员:
      method addAvailableCameraUpdatedListener
      void addAvailableCameraUpdatedListener(@NonNull AvailableCameraUpdatedListener listener)
      包:dji.v5.manager.interfaces
      描述:

      设置可用相机监听器。通过此监听器可以监听可用的相机索引。获取到可用的相机索引以后可以调用putCameraStreamSurface显示特定相机的码流。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull AvailableCameraUpdatedListener listener可用相机监听器
      method removeAvailableCameraUpdatedListener
      void removeAvailableCameraUpdatedListener(@NonNull AvailableCameraUpdatedListener listener)
      包:dji.v5.manager.interfaces
      描述:

      移除可用相机监听器。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull AvailableCameraUpdatedListener listener可用相机监听器
      method putCameraStreamSurface
      void putCameraStreamSurface(@NonNull ComponentIndexType cameraIndex,
      @NonNull Surface surface,
      int surfaceWidth,
      int surfaceHeight,
      @NonNull ScaleType scaleType)
      包:dji.v5.manager.interfaces
      描述:

      将相机码流的画面显示到特定的的surface中,单个surface只能显示一个相机的码流画面。如果针对同一个surface多次调用此接口,将进行该surface的参数更新,比如更新相机索引,surface的宽高和缩放类型。
      注意:
      如果你希望显示不同相机镜头的画面,你可以调用KeyCameraVideoStreamSource进行相机镜头切换。


      MSDK 5.8.0开始支持

      输入参数:
      @NonNull ComponentIndexType cameraIndex设置需要进行码流显示的相机索引。
      @NonNull Surface surface设置需要进行码流显示的surface。支持SurfaceView、TextureView和MediaCodeC的surface,不支持GLSurfaceView的surface以及任何和OpenGL绑定的surface。
      int surfaceWidth设置需要进行码流显示的surface宽度。
      int surfaceHeight设置需要进行码流显示的surface高度。
      @NonNull ScaleType scaleType设置需要进行码流显示的surface的缩放类型。
      method removeCameraStreamSurface
      void removeCameraStreamSurface(@NonNull Surface surface)
      包:dji.v5.manager.interfaces
      描述:

      移除已经添加的surface,当你不再需要使用该surface的时候,请调用此接口移除已经添加的surface,否则会导致内存泄漏。移除后该surface将不再显示相机画面。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull Surface surface设置需要移除的Surface。
      method addReceiveStreamListener
      void addReceiveStreamListener(@NonNull ComponentIndexType cameraIndex, @NonNull ReceiveStreamListener listener)
      包:dji.v5.manager.interfaces
      描述:

      添加码流数据监听器。通过此监听器可以接收指定相机的码流数据。你可以使用此码流数据自行解码显示或者实现第三方直播等功能。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull ComponentIndexType cameraIndex设置需要监听的相机索引。
      @NonNull ReceiveStreamListener listener码流数据监听器
      method removeReceiveStreamListener
      void removeReceiveStreamListener(@NonNull ReceiveStreamListener listener)
      包:dji.v5.manager.interfaces
      描述:

      移除码流数据监听器。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull ReceiveStreamListener listener码流数据监听器
      method addFrameListener
      void addFrameListener(@NonNull ComponentIndexType cameraIndex,
      @NonNull FrameFormat format,
      @NonNull CameraFrameListener listener)
      包:dji.v5.manager.interfaces
      描述:

      添加帧数据监听器。通过此监听器可以监听指定相机解码后的帧数据,你可以使用帧数据实现AI识别等功能。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull ComponentIndexType cameraIndex设置需要监听的相机索引。
      @NonNull FrameFormat format设置需要监听的帧格式。
      @NonNull CameraFrameListener listener帧数据监听器
      method removeFrameListener
      void removeFrameListener(@NonNull CameraFrameListener listener)
      包:dji.v5.manager.interfaces
      描述:

      移除帧数据监听器。

      MSDK 5.8.0开始支持

      输入参数:
      @NonNull CameraFrameListener listener帧数据监听器
      method setKeepAliveDecoding
      void setKeepAliveDecoding(boolean isKeepALive)
      包:dji.v5.manager.interfaces
      描述:

      是否让解码器在后台持续解码,默认值为false。如果为false,当模块内部没有引用任何Surface、ReceiveStreamListener、CameraFrameListener的时候,解码器会暂停解码以降低后台性能/电量的消耗,但是这会增加首次推送相机码流数据的延迟。如果为true,那么解码器会持续在后台解码,这会增加性能/电量的消耗,但是可以降低首次推送相机码流数据的延迟。

      MSDK 5.8.0开始支持

      输入参数:
      boolean isKeepALivetrue表示解码器在后台持续解码。
      method getLiveViewLocationWithGPS
      @NonNull
      PinPointInfo getLiveViewLocationWithGPS(@NonNull LocationCoordinate3D pointPos, @NonNull ComponentIndexType type)
      包:dji.v5.manager.interfaces
      描述:

      获取GPS点的Pin点信息,用于在图传界面中显示GPS点的相对位置。

      MSDK 5.9.0开始支持

      输入参数:
      @NonNull LocationCoordinate3D pointPosGPS位置,可以通过KeyLaserMeasureInformationgetLocation3D接口获取位置,也可以通过地图获取位置。
      @NonNull ComponentIndexType type设置当前码流显示的相机索引。
      返回值:
      PinPointInfo返回Pin点信息。
      enum MimeType
      enum MimeType
      包:dji.v5.manager.interfaces
      描述:

      编解码的媒体类型,支持H264和H265。

      MSDK 5.8.0开始支持

      Enum Members:
      H264H264
      H265H265
      Class Members:
      unknown
      unknown
      enum ScaleType
      包:dji.v5.manager.interfaces
      描述:

      画面缩放类型。

      MSDK 5.8.0开始支持

      enum FrameFormat
      enum FrameFormat
      包:dji.v5.manager.interfaces
      描述:

      帧数据格式。

      MSDK 5.8.0开始支持

      Enum Members:
      YUV420_888YUV420_888
      YUV444_888YUV444_888
      YUY2YUV2
      NV21NV21
      RGBA_8888RGBA_8888
      Class Members:


      Members

      enum
      enum Result
      enum Result
      包:dji.v5.manager.datacenter.camera.view
      描述:

      Pin点回调结果。

      Enum Members:
      SUCCESS成功获取Pin点位置,Pin点在图传界面中。
      SUCCESS_BUT_OUT_OF_SCREEN成功获取Pin点位置,但该点不在图传界面中,应该显示在侧面,请参考DJI Pilot。
      FAILED获取Pin点位置失败。
      INVALID_DRONE_POSITION获取Pin点位置失败,因为无法获取飞行器位置。
      INVALID_POINT_POSITION获取Pin点位置失败,因为设置的GPS位置是无效的。
      GIMBAL_ATTI_ERROR获取Pin点位置失败,因为云台姿态是无效的。
      CAMEAR_ERROR获取Pin点位置失败,因为相机错误。
      Class Members: