IStreamPublisher.java 1.49 KB
package com.genersoft.iot.vmp.jtt1078.publisher;

/**
 * 推流器接口
 *
 * 定义统一的推流器接口,支持多种推流实现(FFmpeg、原生RTMP等)
 *
 * 设计原则:
 * 1. 简单明了,只定义核心方法
 * 2. FFmpeg推流器实现时,sendAVCSequenceHeader为空操作
 * 3. 原生RTMP推流器实现时,SPS变化通过sendAVCSequenceHeader立即生效
 */
public interface IStreamPublisher {

    /**
     * 启动推流
     * @param tag 通道标识
     */
    void start(String tag);

    /**
     * 发送FLV视频数据
     * @param flvData FLV Video Tag数据(包含PreviousTagSize和Video Tag)
     * @param timestamp 时间戳(毫秒)
     */
    void sendVideoData(byte[] flvData, int timestamp);

    /**
     * 发送AVC序列头(SPS/PPS)
     * 当检测到SPS变化时调用此方法
     * FFmpeg推流器不需要实现此方法(因为重启FFmpeg即可)
     * 原生RTMP推流器会立即发送新的AVC Sequence Header到RTMP服务器
     */
    void sendAVCSequenceHeader();

    /**
     * 关闭推流
     * 应该释放所有资源,包括进程、Socket连接等
     */
    void close();

    /**
     * 检查是否连接中
     * @return true表示推流器处于活跃状态
     */
    boolean isConnected();

    /**
     * 获取推流器类型
     * @return "ffmpeg" 或 "native"
     */
    String getType();

    /**
     * 获取推流器信息(用于调试)
     * @return 推流器状态描述
     */
    String getStatus();
}