Skip to content

Latest commit

 

History

History
186 lines (155 loc) · 6.5 KB

File metadata and controls

186 lines (155 loc) · 6.5 KB

音视频流

public interface IMediaTransManager {
	
	/**
     * 启动多媒体传输通道.这个方法必须调用,否则无法push 数据流到App端,也无法接受Mqtt消息.
     * (注意: 需要在MQTT上线时开启,请参看文档"SDK初始化-开始推流"部分)
     * 调用这个方法之后,可用通过{@link IMediaTransManager#pushMediaStream(int, int, byte[], long)} 方法push
     * 一帧数据流到该SDK
     * @param max 接收并发量
     * @return success: 0 fase: !0
     * */
    int startMultiMediaTrans(int max);
   
   /**
     * 码流通道类型
     * */
    public class Common.ChannelIndex {

        /**
         * 视频流路数
         */
        public static final int E_CHANNEL_VIDEO_MAIN = 0;
        public static final int E_CHANNEL_VIDEO_SUB = 1;
        public static final int E_CHANNEL_VIDEO_3RD = 2;
        public static final int E_CHANNEL_VIDEO_4TH = 3;
        /**
         * 最大支持视频码流路数
         */
        public static final int E_CHANNEL_VIDEO_MAX = 8;

        /**
         * 音频流路数
         */
        public static final int E_CHANNEL_AUDIO = 9;
        public static final int E_CHANNEL_AUDIO_2RD = 10;
        public static final int E_CHANNEL_AUDIO_3RD = 11;
        public static final int E_CHANNEL_AUDIO_4TH = 12;
        /**
         * 最大支持音频码流路数
         * */
        public static final int E_CHANNEL_MAX = 16;
    }
   
       /**
     * push 一帧多媒体流到SDK
     * @param streamType 媒体数据类型 {@link Common.ChannelIndex}
     * @param nalType 是视频流时,为H264码流的nal类型. 是音频流时,此参数无效,默认为0
     * @param streamData 码流数据: 视频流为H264格式;音频流为PCM(8KHz/16bit/单声道)
     * @return success: 0 fase: !0
     * */
    int pushMediaStream(int streamType, int nalType, byte[] streamData);
    
    /**
     * 开启/关闭 连续本地存储,开启后自动生成本地录像。录像存储路径为激活设备时传入的 recordPath
     * @param enable 是否开启
     * @return 执行结果
     */
    boolean autoLocalStorage(boolean enable);
    
    /**
     * 开启事件本地存储。录像存储路径为激活设备时传入的 recordPath
     * @return 是否执行成功
     */
    boolean startLocalStorage();

    /**
     * 结束事件本地存储
     * @return 是否执行成功
     */
    boolean stopLocalStorage();

    /**
     * 本地存储清除
     */
    void cleanLocalStorage();
    
    
    /**
     * 注册对讲回调接口
     * 该接口将回调对讲时的音频数据
     * @param cb
     * */
    void addAudioTalkCallback(AudioTalkCallback cb);
    
    interface AudioTalkCallback {
    /**
     * 开启对讲后的数据回调接口
     * @param data 对讲回调数据. 回调之后的数据格式为PCM(8KHz/16bit/单声道)
     * */
    	void onAudioTalkData(byte[] data);
	}

	/**
     * 注册P2P回调接口
     * */
    void setP2PEventCallback(IP2PEventCallback cb);
    
    interface IP2PEventCallback {
    /**
     * p2p 事件回调
     * @param event 请求事件{@link IMediaTransManager.P2PEvent}
     * @param value 请求事件的值
     * */
    void onEvent(IMediaTransManager.P2PEvent event,Object value);
    
    }
    
    //p2p事件定义
	enum P2PEvent{
                UNKNOW(-1),
                TRANS_LIVE_VIDEO_START(0),  /**video 直播开始请求*/
                TRANS_LIVE_VIDEO_STOP(1),   /**video 直播结束请求*/
                TRANS_LIVE_AUDIO_START(2),  /**audio 直播开始请求*/
                TRANS_LIVE_AUDIO_STOP(3),   /**audio 直播结束请求*/

                TRAN_VIDEO_CLARITY_SET(4), /**< 设置视频直播清晰度 ,参数为*/

                TRANS_LIVE_VIDEO_CLARITY_QUERY(5), /* query clarity informations*/
                TRANS_LIVE_LOAD_ADJUST(6),
                TRANS_PLAYBACK_LOAD_ADJUST(7),
                TRANS_PLAYBACK_QUERY_MONTH_SIMPLIFY(8), /* query storage info of month  */
                TRANS_PLAYBACK_QUERY_DAY_TS(9), /* query storage info of day */

                TRANS_PLAYBACK_START_TS(10), /* start playback */
                TRANS_PLAYBACK_PAUSE(11), /* pause playback */
                TRANS_PLAYBACK_RESUME(12), /* resume playback */
                TRANS_PLAYBACK_MUTE(13), /* mute playback */
                TRANS_PLAYBACK_UNMUTE(14), /* unmute playback */
                TRANS_PLAYBACK_STOP(15), /* stop playback */

                TRANS_SPEAKER_START(16), /* start APP-to-IPC speak */
                TRANS_SPEAKER_STOP(17),  /* stop APP-to-IPC speak */
                TRANS_ABILITY_QUERY(18),/* query the alibity of audion video strraming */

                TRANS_DOWNLOAD_START(19),   /* start to download */
                TRANS_DOWNLOAD_STOP(20),
                TRANS_DOWNLOAD_PAUSE(21),
                TRANS_DOWNLOAD_RESUME(22),
                TRANS_DOWNLOAD_CANCLE(23),

                TRANS_STREAMING_VIDEO_START(100),
                TRANS_STREAMING_VIDEO_STOP(101);
        }

   /**
     * 设置门铃呼叫状态回调接口
     * 注该接口之后,将接收到门铃呼叫后的接听和挂断状态(需要先初始化门铃环境{@link IFeatureManager#initDoorBellFeatureEnv()})
     * 门铃呼叫报警接听状态:
     * status = -1 未知状态
     * status = 0 接听
     * status = 1 挂断
     * status = 2 通话中心跳
     * {@link Common.DoorBellCallStatus}
   * */
    void setDoorBellCallStatusCallback(@AutoTestInterface IDoorBellCallStatusCb cb);


    /**
     * 当门铃按下时device端发送门铃呼叫到App端和云端. 此时呼叫界面显示为本地视频画面
     * @param data 发送呼叫时需要附带一张图片
     * @param snapType 图片的类型 {@link Common.NOTIFICATION_CONTENT_TYPE_E}
     * 图片,.jpeg文件 NOTIFICATION_CONTENT_JPEG
     * 图片,.png文件 NOTIFICATION_CONTENT_PNG
     * @return 0: success !0: failed
     * */
    int sendDoorBellCallForPress(@Nullable byte[] data, int snapType);
	
	
	/**
     * 获取p2p状态信息
     * @return {@link P2PConnectInfo}
     */
    P2PConnectInfo[] getP2PConnInfos();
    
    public class P2PConnectInfo {
    	int p2p_mode;    //0: P2P mode, 1: Relay mode, 2: LAN mode, 255: Not connected.
    	int local_nat_type;  //The local NAT type, 0: Unknown type, 1: Type 1, 2: Type 2, 3: Type 3, 10: TCP only
    	int remote_nat_type; //The remote NAT type, 0: Unknown type, 1: Type 1, 2: Type 2, 3: Type 3, 10: TCP only
    	int relay_type;  //0: Not Relay, 1: UDP Relay, 2: TCP Relay
    }
}