alsa播放结束时的杂音问题
alsa的音频输出过程
alsa播放音频的原理通过snd_pcm_writei()等函数将音频数据写到alsa的buffer中。alsa启动播放以后,alsa驱动会产生中断,每次中断从buffer中取走period个音频数据帧输出到codec。
音频最后的数据不足一个period
alsa驱动从buffer中是按照一个完整的period个数据帧取走数据的,如果取走的一个period数据中,并不都是音频数据,可能有其他脏数据,那就可能在最后一帧产生噪音。
首先关于buffer和frame的概念还不知道的请参考:
https://huohongpeng.blog.csdn.net/article/details/116235192
具体举一个例子:
一个音频文件中包含10240个frame音频数据,alsa的硬件参数中period大小设置为1024。buffer大小是5120。那么应用程序通过snd_pcm_writei()每次向buffer中写入1024个frame音频帧,写入10次就将音频文件的数据全部送入到了buffer中(如果buffer没有空间应用会阻塞),然后alsa驱动每次从buffer中取走1024个frame,取走10次,这样音频就正常播放完成了。
但是如果音频文件中包含10246个frame音频数据,输入到buffer中的音频就是10个完整的period帧和一个不完整的只包含6个frame的period帧。所以alsa驱动要取11次才能把所有数据取走,而且最后一个period取走的时候,里面只包含了6个frame数据,其他1018个都是未定义的数据,这时候1018个数据输出到codec那就是产生噪声。如果想避免这个情况,应用层就需要将1018个frame填充为静音数据,然后发送给buffer。这样播放最后一个period的时候就不会有噪声了。生成静音数据的api是snd_pcm_format_set_silence().
alsa播放结束时的杂音问题相关推荐
- Ubuntu20.04 外接音响播放音频时出现杂音或滋滋滋电流声解决方法
Ubuntu20.04 外接音响播放音乐时出现杂音解决方法 引言 在Ubuntu 20.04及以上版本中使用Pipewire. 更新系统内核等 安装最新的Pipewire库 用Pipewire替换Pu ...
- ALSA播放时杂音问题
1.alsa的音频输出过程 alsa播放音频的原理通过snd_pcm_writei()等函数将音频数据写到alsa的buffer中.alsa启动播放以后,alsa驱动会产生中断,每次中断从buffer ...
- html5视频播放怎么结束,html5设置或返回音频/视频是否应该在结束时再次播放的属性loop...
实例 将视频设置为循环播放:myVid=document.getElementById("video1");myVid.loop=true; 定义和用法 loop 属性设置或返回音 ...
- Glide加载webp动画及监听动画播放结束
Glide加载图片非常方便,使用也非常广泛,但是并不能直接支持webp动图. 可能很多人会使用Fresco来加载webp,但是对于已经使用Glide的项目,总感觉再使用Fresco有点冗余,如果能用G ...
- 树莓派播放音频时3.5mm接口没有声音怎么办?
树莓派有两种声音输出方式,一种是通过HDMI口外接有输出设备的显示器输出,另一种是通过3.5mm接口连接耳机或者音箱输出. 网上一查发现不少人会遇到树莓派播放音频时3.5mm接口没有声音的情况,建议先 ...
- 互联网晚报 | 11/28日 星期一 | 蜜雪冰城客服回应喝出虫子店家态度消极;抖音回应世界杯直播时出现杂音;微信内测新功能...
蜜雪冰城客服回应喝出虫子店家态度消极 11月26日,有媒体报道,湖北仙桃蜜雪冰城被曝喝出虫子商家态度引争议.记者27日致电蜜雪冰城全国热线,客服表示:暂时还不了解这个情况,需要记录反馈一下.客服还记录 ...
- 解决 后台播放音乐时,设置手机铃声,后台音乐不会暂停
2019独角兽企业重金招聘Python工程师标准>>> 手机后台播放音乐时,设置手机铃声,后台音乐不会暂停,此现象的为设置手机铃声界面,并没要加入播放的foucs机制, 此修改在pa ...
- [J2ME]Nokia播放音乐时发生MediaException的解决办法
[J2ME]Nokia播放音乐时发生MediaException的解决办法 现象 在Nokia7610上播放音乐时遇到了-18的MediaException错误! J2ME中播放音乐资源的代码很容易 ...
- 计算机上播放时没声音什么故障,事实:在笔记本电脑上播放歌曲时如果没有声音怎么办...
在笔记本电脑上播放时如果没有声音该怎么办?关于在笔记本电脑上播放时无声音的问题,有些网民仍然不知道该怎么办,所以让我告诉您如何在笔记本电脑上播放无声音时解决问题.希望我能为您服务!播放歌曲时,笔记本电 ...
最新文章
- java数值运算后精度丢失问题
- 深度优先搜索c语言详解,深度优先搜索 — C语言版
- 函数dup和dup2
- SpringBoot2 整合MinIO中间件,实现文件便捷管理
- Mysql/Mariadb本地不可以登录,远程可以登录问题的解决
- c语言的常用英语单词和翻译,c语言通用英语词汇带翻译
- php webm文件头,webm EBML文件头分析
- 永恒之蓝漏洞补丁-MS17010补丁列表KB号
- 震撼!七大议题全数入选!九州云与您相约温哥华
- 领域驱动设计落地经验
- 17-什么是资源服务器
- 如何将 Ubuntu 配置为Ap模式
- Snip ntrip caster差分数据传输,rtklib差分数据传输,rtk2go
- flv转换mp4最简单方法
- 1880-2010年间全美婴儿姓名
- JSON数据交互和RESTful支持
- 水木-如何解压.iso文件
- html help文档制作,HTML Help Workshop(文件制作工具)
- 超详细分析Windows变慢原因及解决方法
- MATLAB画区域专题地图(省边界)
热门文章
- Mac电脑如何开启任何来源选项?
- python中小于号的重载_Python操作符重载
- ArcGIS for Android 100.3.0(6):动态地图图层(ArcGISMapImageLayer和ArcGISMapImageSublayer)
- 微信小程序登录-手机号授权并获取手机号
- Qt Quick Qml 之QML与C++ 混合编程学习
- mupdf源码分析(一)简介
- python制作照片_Python-制作抖音图片
- 晚上十点以后发快手有影响吗?上热门有哪些技巧?
- 计算机网络出行711,请问电脑联网时总是出现:711 是什么意思啊?
- 六石编程学:抄代码是个技术活,大多数人不传抄