【基于obs开发推流工具教程】-win-dshow,wasapi时间频率分析

麦克风获取地方:

一,win-wasspi
WASAPISource::ProcessCaptureData()
在这里插入图片描述
麦克风和电脑混音都从此地方获取

二,win-dshow
Receive(bool isVideo, IMediaSample *sample)
在这里插入图片描述
YY虚拟摄像头情况下,视频数据是无编码状态,音频是无编码状态
videostart时间正常,audiostarttime时间不正常,此值不规律增加,会造成音频声音延后。
在这里插入图片描述
三,时间分析
2种处理方式都会在处理
在这里插入图片描述
source_output_audio_data 主要是此函数处理时间数据:

diff = uint64_diff(source->next_audio_ts_min, in.timestamp);
下一次时间和当前数据时间的差值
/* smooth audio if within threshold */
if (diff > MAX_TS_VAR && !using_direct_ts) //过大,跳时间
handle_ts_jump(source, source->next_audio_ts_min,
in.timestamp, diff, os_time);
else if (diff < TS_SMOOTHING_THRESHOLD) {//过小,正常赋值
if (source->async_unbuffered && source->async_decoupled)
source->timing_adjust = os_time - in.timestamp;
in.timestamp = source->next_audio_ts_min;
}
source->last_audio_ts = in.timestamp; // 记录新来音频数据时间
source->next_audio_ts_min =
in.timestamp + conv_frames_to_time(sample_rate, in.frames); 记录下一次时间

in.timestamp += source->timing_adjust; 如有跳跃时间,做时间偏移

在这里插入图片描述

sync_offset = source->sync_offset; //同步偏移的值
in.timestamp += sync_offset;
in.timestamp -= source->resample_offset; 从采样偏移

source->next_audio_sys_ts_min =
source->next_audio_ts_min + source->timing_adjust;
//下一次系统时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值