关于雷霄骅博士的博客FFMPEG+SDL的音频播放器播放有杂音的问题

article/2025/9/24 11:12:50

博主在这里怀着对雷霄骅最高的敬意修复了雷神的一点点bug。
雷神的以下博客,在播放时会造成卡顿。

最简单的基于FFmpeg的音频播放器系列文章列表:
《最简单的基于FFMPEG+SDL的音频播放器》

————————————————
版权声明:本文为CSDN博主「雷霄骅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leixiaohua1020/article/details/10528443

简言之,就是雷霄骅博士的博客在播放的时候,会有杂音,杂音听起来像是兹拉兹拉的声音。
经过作者的多次实验,最终修复了雷神的一点小小的bug。
修复方法如下:

关于杂音的问题:
while(audio_len>0) SDL_Delay(1);
应该改为
while(audio_len>0) SDL_Delay(0.5);
这样就不会有兹啦啦的声音。有杂音的原因是 SDL_Delay(1);会让回调延迟1毫秒,导致播放延迟,就会感觉不连贯。把延迟缩短为SDL_Delay(0.5);这样不会导致播放延迟,就会感觉连贯了。SDL_Delay(0.5)并不是必须要是0.5ms,你也可以试试别的延迟时间。反正只要保证播放不延迟即可。
事实证明你把延迟改为SDL_Delay(0.9)都可以无杂音播放,但只要延迟SDL_Delay(1)>=1ms时,就会出现卡顿。
你可以用采样定理理解为什么必须要SDL_Delay()至少为0.9。那是因为
while(audio_len>0) SDL_Delay();
作为主线程的阻塞代码,在等待线程播放音频流的时候,如果SDL_Delay()的时间太长,就会导致在SDL_Delay()的期间,音频播放线程就已经播放结束了,导致卡顿,不连贯。所以你必须把SDL_Delay()的时间变短,应用采样定理,这样才可以让音频播放线程播放结束后,马上开启新的播放,无缝衔接,这样才不会卡顿。

附录奈奎斯特采样定理:

采样定理是E.T.Whittaker(1915)、Kotelnikov(1933)、Shannon(1948)提出的,在数字信号处理领域中,采样定理是连续时间信号(通常称为“模拟信号”)和离散时间信号(通常称为“数字信号”)之间的基本桥梁。该定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。 它为采样率建立了一个足够的条件,该采样率允许离散采样序列从有限带宽的连续时间信号中捕获所有信息。
采样过程所应遵循的规律,又称取样定理、抽样定理。采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理又称奈奎斯特定理。 [1]
如果对信号的其它约束是已知的,则当不满足采样率标准时,完美重建仍然是可能的。 在某些情况下(当不满足采样率标准时),利用附加的约束允许近似重建。 这些重建的保真度可以使用Bochner定理来验证和量化。 [2]
在这里插入图片描述
1924年奈奎斯特(Nyquist)推导出在理想低通信道的最高码元传输速率的公式。
1928年美国电信工程师H.奈奎斯特推出采样定理,因此称为奈奎斯特采样定理。
1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理,因此在苏联文献中称为科捷利尼科夫采样定理。
1948年信息论的创始人C.E.香农对这一定理加以明确地说明并正式作为定理引用,因此在许多文献中又称为香农采样定理。采样定理有许多表述形式,但最基本的表述方式是时域采样定理和频域采样定理。
采样定理在数字式遥测系统、时分制遥测系统、信息处理、数字通信和采样控制理论等领域得到广泛的应用。

奈奎斯特采样定理
以下为该篇博客的详情:
香农采样定理(奈奎斯特采样定理)
月疯
于 2022-03-31 12:02:50 发布
定义:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。
在这里插入图片描述

香农采样定理,又称奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。采样是将一个信号(即时间或空间上的连续 函数)转换成一个数值序列(即时间或空间上的离散函数)。采样得到的离散信号经保持器后,得到的是阶梯信号,即具有零阶保持器的特性。如果信号是带限的,并且采样频率高于信号最高频率的一倍,那么,原来的连续信号可以从采样样本中完全重建出来。公式为:fs≥2fmax。采样率越高,稍后恢复的波形就越接近原信号,但是对系统的要求就更高,转换电路必须具有更快的转换速度。
在这里插入图片描述

分别是采样频率大于、等于和小于奈奎斯特采样的情况,小于的情况下直接出现了混叠。

在这里插入图片描述

网上找到图片

所以说:采样定理是连续信号和离散信号之间的桥梁。

举个例子:
在这里插入图片描述

采样定理的作用和意义:

   采样过程所应遵循的规律,又称取样定理、抽样定理。采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。采样定理是1928年由美国电信工程师H.奈奎斯特首先提出来的,因此称为奈奎斯特采样定理。1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理,因此在苏联文献中称为科捷利尼科夫采样定理。1948年信息论的创始人C.E.香农对这一定理加以明确地说明并正式作为定理引用,因此在许多文献中又称为香农采样定理。采样定理有许多表述形式,但最基本的表述方式是时域采样定理和频域采样定理。

采样定理在数字式遥测系统、分时制遥测系统、信息处理、数字通信和采样控制理论等领域得到广泛的应用。
————————————————
版权声明:本文为CSDN博主「月疯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chehec2010/article/details/123865626

个人感想:
本文不想再这里参杂任何政治性的讨论。诚然,美国在上世纪开启了信息化革命,但是苏联的科学家们做出了更多贡献。
如果完全否定苏联科学家的贡献,那真的就是心胸狭隘。美国各界甚至包括影视界都在诋毁苏联,否定加加林。个人觉得这真的是一种心胸狭隘的表现。
事实证明,科学无国界是很难的。


http://chatgpt.dhexx.cn/article/xKoBPZsR.shtml

相关文章

沉痛悼念CSDN博主、年仅26岁的音视频专家雷霄骅

CSDN的老朋友、连续两届CSDN博客之星、微软MVP、博客排名52位、在中国传媒大学通信与信息系统专业攻读博士的雷霄骅,于2016年7月17日凌晨猝死在学校主楼五层,并于7月23号安葬。据相关报道称,事发前雷霄骅一直泡在实验室忙碌,怀疑其是劳累过度导致猝死。(详见法制晚报的报道…

纪念音视频界前辈-雷霄骅

这是一篇记录文,纪念一位在音视频领域研究的博士雷霄骅。 雷霄骅生前是中国传媒大学通信与信息系统博士在读生,于2016年7月17日凌晨猝死在学校主楼五层,10月就将迎来自己26岁的生日。 雷霄骅在音视频领域有很深的造诣和贡献,指导了…

雷霄骅系列博客汇总

这两天快速浏览了一下雷霄骅的博客,相信看过他博客的人内心都是无比钦佩,说句天妒英才确不为过,可能雷神说过最多的话大概就是,...没有我想要的,打开源代码... 真的是厉害。雷神不仅分享了自己的学习经历,里…

分享一个免费分流抢票软件!一键全自动抢票

感谢您抽出 .. 阅读本文 小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序。君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法…

抢火车票,出行必备程序(12306bypass)--可以抛掉同程什么的抢票软件了

一. 免费原则 分流抢票(12306Bypass)的发布和使用均不收取任何费用。拒绝任何人或任何实体进行出售,严禁用于商业谋利用途; 二. 无害原则 任何人不得使用分流抢票(12306Bypass)进行加价代购、倒票等任何与…

抢票系统详解

转载自:https://blog.csdn.net/qq_37095882/article/details/102777226 秒杀抢购系统选型: 火车票秒杀系统如何在高并发情况下提供正常、稳定的服务呢? 我们知道用户秒杀流量通过层层的负载均衡,均匀到了不同的服务器上,即使如…

程序员专用的抢票小助手,再也不用担心抢不到车票了。

作者:JackTian 微信公众号:杰哥的IT之旅(ID:Jake_Internet) 马上临近过年了,漂泊在远方的朋友,也都准备陆续抢过年回家的车票了,但是往年每次不管是十一假期还是年关,大家…

12306崩了,90%的人都用过这三款抢票工具

12306又蹦了 12306回应软件崩了:操作旅客过多,可尝试重装app或切换网络 有不少网友反映12306崩了,买票太难了。12306客服表示,可能是操作旅客过多,系统繁忙造成的,可尝试重新卸载安装客户端或切换网络。关…

Python 一百多行实现抢票助手

一. 代码使用PythonSplinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。 二. 安装好Python 3或2都可以,然后安装Splinter pip install Splinter 三. Splinter注意事项 1. Splinte…

分流抢车票软件

分流抢车票软件 下载地址 传送门 没积分的的可以私信取

抢票(python)

关注微信公众号: 程序工厂,不定期更新更新黑科技、脚本等资源 腾讯云服务器优惠购买链接: 1核2G云服务器首年88元:http://url.cn/5Z0ZWGI 阿里云服务器优惠购买链接: 服务器半年只需要54 https://www.aliyun.com/minisite/goods?userCo…

python实现云服务器上12306自动化抢票功能

本文将分为几大模块讲解python服务器上12306自动化抢票功能: 一、云服务器的安装与配置 1.1 云服务器与个人主机不同,不受时间、场所等条件的限制,将python代码运行在云服务器上可以实现真正意义上的解放。 1.2 这里,我选择阿里…

12306分流抢票软件 v1.13.21官方版 -抢票神器

软件介绍: 分流抢票,是以用户为中心、人性化的抢票软件。不做广告、不做推广、不携带病毒、不收集隐私信息,并接受各方技术评测,全心全意为用户打造一款属于自己的抢票软件!12306分流抢票器是能够提供给用户强大的自动…

12306GT多线程、分流免费抢票工具使用

大事记背景 我相信很多远游他乡的朋友每逢佳节都会遇到一个难题,就是购票难,这个难题有多难呢?经常在12306官网购票的小伙伴应该知道每个地方的放票时间是不一样的,但是逢年过节的那几天即使你在放票几分钟前一直盯着电脑屏幕或者…

分流抢票软件浅谈

其实,我不是很想写这篇文章的,因为现在有很多抢票的软件,即我们所说的第三方抢票软件,也有很多抢票的心得在网上,但是,我今天在微信晒了一个抢票成功的图片,就有很多人来问我,说要我分享这个软件,我在微信也看到一个师姐因抢不到票而哭,我就有了写下这篇文章的决心,…

免费的Windows抢票神器 – 12306分流抢票 – bypass

本页目录 分流抢票 官网要求操作 输入账号密码滑块登陆主界面绑定微信公众号后,可以获取消息 微信消息 年复一年的火车抢票大战,光靠我们人工抢是无法满足的,毕竟有很多第三方付费平台使用服务器间歇性抢票!更有甚者,第…

Bypass一款不错的分流抢票助手工具

前言 Bypass也就是12306分流抢票软件,是一款全程自动抢票,自动识别验证码,多线程秒单、稳定捡漏,支持多天、多车次、多席别、多乘客等功能。   下载 Bypass 使用方法 1.软件打开时,会有一个联网检测的过程。 2.输入你在中铁12306订票官网申请到的…

bypass分流抢票(火车、高铁)

1、双击运行Bypass.exe或者右键以管理员身份运行 2、输入账户、密码进行登录(该账户为12306的账户,如若没有则点击更多功能进行注册) 3、滑块登录 4、进行选择买票 5、设置支付选项(在这里可设置自动支付,也可在抢票成…

关于12306Bypass-分流抢票

原文地址为: 关于12306Bypass-分流抢票 12306Bypass-分流抢票-2013-15年 官网:http://www.12306bypass.com 分流抢票是一款完全免费的抢票软件,请抵制淘宝贩卖等诈骗行为 作者不会授权任何人去出售,更不会自己去出售&#xff0…

c语言scanf和printf区别,printf和scanf的区别是什么

printf和scanf的区别:1、printf是格式化的输出函数,scanf是C语言的输入功能;2、printf用于以规定格式将信息输出到标准输出设备,scanf是一种格式输入功能,即以用户指定的格式从键盘将数据输入到指定的变量中。 本文操作…