|
|
@@ -3,27 +3,58 @@
|
|
|
|
|
|
// 低延迟模式配置参数(平衡模式 - 类似VLC)
|
|
|
namespace LowLatencyConfig {
|
|
|
- // 缓冲区大小优化(平衡模式)
|
|
|
- constexpr int BALANCED_FRAME_QUEUE_SIZE = 3; // 3帧 ≈ 100ms@30fps
|
|
|
- constexpr int BALANCED_PACKET_QUEUE_SIZE = 6; // 6包 ≈ 200ms
|
|
|
+ // 缓冲区大小优化(动态调整模式)
|
|
|
+ constexpr int BALANCED_FRAME_QUEUE_SIZE = 2; // 减少到2帧 ≈ 67ms@30fps
|
|
|
+ constexpr int BALANCED_PACKET_QUEUE_SIZE = 4; // 减少到4包 ≈ 133ms
|
|
|
+ constexpr int MAX_FRAME_QUEUE_SIZE = 5; // 最大帧队列大小
|
|
|
+ constexpr int MIN_FRAME_QUEUE_SIZE = 1; // 最小帧队列大小
|
|
|
|
|
|
- // 音频缓冲区优化(稳定模式)
|
|
|
- constexpr int BALANCED_AUDIO_SAMPLES = 512; // 512样本 ≈ 11.6ms@44.1kHz
|
|
|
+ // 音频缓冲区优化(动态调整模式)
|
|
|
+ constexpr int BALANCED_AUDIO_SAMPLES = 256; // 减少到256样本 ≈ 5.8ms@44.1kHz
|
|
|
+ constexpr int MAX_AUDIO_SAMPLES = 1024; // 最大音频样本数
|
|
|
+ constexpr int MIN_AUDIO_SAMPLES = 128; // 最小音频样本数
|
|
|
|
|
|
- // 同步阈值优化(温和模式)
|
|
|
- constexpr double BALANCED_SYNC_THRESHOLD_MIN = 0.02; // 20ms
|
|
|
- constexpr double BALANCED_SYNC_THRESHOLD_MAX = 0.06; // 60ms
|
|
|
- constexpr double BALANCED_NOSYNC_THRESHOLD = 3.0; // 3秒放弃同步
|
|
|
- constexpr double BALANCED_SYNC_FRAMEDUP_THRESHOLD = 0.1; // 100ms单帧视频时长阈值上限
|
|
|
- constexpr double BALANCED_SYNC_REJUDGE_THRESHOLD = 0.01; // 10ms同步重判阈值
|
|
|
+ // 缓冲区动态调整参数
|
|
|
+ constexpr double BUFFER_ADJUST_THRESHOLD = 0.1; // 缓冲区调整阈值(100ms)
|
|
|
+ constexpr double BUFFER_SHRINK_FACTOR = 0.8; // 缓冲区收缩因子
|
|
|
+ constexpr double BUFFER_EXPAND_FACTOR = 1.2; // 缓冲区扩展因子
|
|
|
+
|
|
|
+ // 同步阈值优化(自适应模式)
|
|
|
+ constexpr double BALANCED_SYNC_THRESHOLD_MIN = 0.01; // 减少到10ms
|
|
|
+ constexpr double BALANCED_SYNC_THRESHOLD_MAX = 0.04; // 减少到40ms
|
|
|
+ constexpr double BALANCED_NOSYNC_THRESHOLD = 2.0; // 减少到2秒放弃同步
|
|
|
+ constexpr double BALANCED_SYNC_FRAMEDUP_THRESHOLD = 0.08; // 减少到80ms单帧视频时长阈值上限
|
|
|
+ constexpr double BALANCED_SYNC_REJUDGE_THRESHOLD = 0.005; // 减少到5ms同步重判阈值
|
|
|
+
|
|
|
+ // 时间戳处理优化参数
|
|
|
+ constexpr double TIMESTAMP_SMOOTH_FACTOR = 0.1; // 时间戳平滑因子
|
|
|
+ constexpr double TIMESTAMP_JUMP_THRESHOLD = 1.0; // 时间戳跳跃检测阈值(1秒)
|
|
|
+ constexpr int TIMESTAMP_HISTORY_SIZE = 10; // 时间戳历史记录大小
|
|
|
+
|
|
|
+ // 延迟累积控制参数
|
|
|
+constexpr double DELAY_ACCUMULATION_THRESHOLD = 0.5; // 延迟累积阈值
|
|
|
+constexpr double DELAY_RESET_FACTOR = 0.9; // 延迟重置因子
|
|
|
+constexpr int DELAY_MONITOR_INTERVAL = 30; // 延迟监控间隔
|
|
|
+
|
|
|
+// 高精度时间处理参数
|
|
|
+constexpr double TIME_PRECISION_FACTOR = 1000000.0; // 微秒到秒的转换因子
|
|
|
+constexpr double FRAME_TIMER_CORRECTION_THRESHOLD = 0.001; // 帧定时器校正阈值(1ms)
|
|
|
+constexpr double PRECISION_ERROR_COMPENSATION = 0.0001; // 精度误差补偿值(0.1ms)
|
|
|
+constexpr int TIMER_RESET_INTERVAL = 300; // 定时器重置间隔(帧数)
|
|
|
+constexpr double MAX_ACCEPTABLE_DRIFT = 0.01; // 最大可接受漂移(10ms)(帧数)
|
|
|
|
|
|
// 网络优化参数(更新为平衡配置)
|
|
|
constexpr const char* RTSP_TRANSPORT = "tcp";
|
|
|
- constexpr const char* PROBE_SIZE = "32768"; // 32KB探测大小
|
|
|
- constexpr const char* ANALYZE_DURATION = "1000000"; // 1秒分析时长
|
|
|
+ constexpr const char* PROBE_SIZE = "1048576"; // 1MB探测大小 - 增加以获得足够帧进行帧率计算
|
|
|
+ constexpr const char* ANALYZE_DURATION = "3000000"; // 3秒分析时长 - 增加以确保准确的流信息
|
|
|
constexpr const char* MAX_DELAY = "500000"; // 500ms最大延迟
|
|
|
constexpr const char* FFLAGS = "nobuffer"; // 无缓冲模式
|
|
|
- constexpr const char* BUFFER_SIZE = "65536"; // 64KB接收缓冲区
|
|
|
+ constexpr const char* BUFFER_SIZE = "131072"; // 128KB接收缓冲区 - 增加以配合更大的探测大小
|
|
|
+
|
|
|
+ // RTSP流优化参数
|
|
|
+ constexpr const char* RTSP_FLAGS = "prefer_tcp"; // 优先使用TCP传输
|
|
|
+ constexpr const char* STIMEOUT = "5000000"; // 5秒连接超时
|
|
|
+ constexpr const char* USER_AGENT = "LearningSmartClient/1.0"; // 自定义用户代理
|
|
|
|
|
|
// 解码器优化(平衡配置)
|
|
|
constexpr int DECODER_THREAD_COUNT = 2; // 2线程平衡性能与延迟
|