Ubuntu 20 LTS环境下实现实时输入音频随机静音模拟弱网效果方案咨询
实时音频模拟弱网卡顿(随机静音)实现方案
你当前基于Ubuntu 20 LTS、PulseAudio + SoX的环境可直接使用以下两种方案,均支持保留音调偏移效果,输出路由逻辑和你原有流程完全一致,直接从「Monitor of Nullsink」取流即可。
方案一:Bash 脚本结合 SoX 实现(适配现有使用习惯)
先安装依赖工具:
sudo apt install sox pulseaudio-utils bc
编写执行脚本weaknet_audio.sh:
#!/bin/bash while true; do # 随机正常播放时长:默认2-5秒,可自行修改计算式调整卡顿频率 PLAY_DUR=$(echo "scale=2; $RANDOM/32767*3 + 2" | bc) # 随机静音时长:1-2秒,匹配需求 MUTE_DUR=$(echo "scale=2; $RANDOM/32767*1 + 1" | bc) # 带音调偏移的正常音频输出 sox -t pulseaudio default -t pulseaudio null trim 0 $PLAY_DUR pitch +1000 2>/dev/null # 静音时段输出 sox -n -t pulseaudio null trim 0 $MUTE_DUR 2>/dev/null done
运行方法:
chmod +x weaknet_audio.sh ./weaknet_audio.sh
方案二:FFmpeg 实现(切换无爆音、延迟更低)
FFmpeg自带音频滤镜可直接实现随机静音逻辑,稳定性更强,先安装FFmpeg:
sudo apt install ffmpeg
直接运行以下单命令即可:
ffmpeg -f pulse -i default -af "volume=enable='lt(random(0),0.2)':volume=0,aresample=async=1,pitch=+1000" -f pulse null -loglevel error
参数说明:
lt(random(0),0.2)表示20%概率触发静音,修改0.2的数值即可调整卡顿出现的频率- 已内置
pitch=+1000音调偏移参数,和你原有SoX效果一致
优化提示
- 若出现音频延迟过高,可给SoX命令添加
--buffer 256参数缩小缓存,或给FFmpeg命令添加-low_delay 1参数优化实时性 - 需调整静音时长范围可直接修改对应参数的计算逻辑即可
内容的提问来源于stack exchange,提问作者Nobody
相关产品推荐
相关产品推荐

