网络实时音频传输,同步和克服延迟的问题

disney 2004-04-01 08:34:24
在学做一个网络实时的音频传输,把麦克风信号直接传至另台电脑,发送端是 捕捉--》编码--》发送,接收端是 接收--》解码--》音频输出,是用Directshow实现的,当遇有网络延迟变化、其它原因导致输出滞后,时间会越来越长,如何解决这问题?在滞后时想选择丢掉一些数据的算法,想用Directshow自身功能解决这一问题,如何做?
...全文
257 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huqiming 2004-04-01
  • 打赏
  • 举报
回复
你在做网络接收时不要开过长的buffer,否则数据一直不会断的话,迟延就会一直存在

因为音频的播放是按照解码后实际长度播放的,播放时间固定,所以只能丢数据。
disney 2004-04-01
  • 打赏
  • 举报
回复
看来我这样解决吧,我把接收网络数据的FILTER写成Live Sources,然后提供参考时钟,利用Directshow自身功能来做到,实际效果还需要验证
NoneSoVile 2004-04-01
  • 打赏
  • 举报
回复
用tcp不行吧,tcp的自动重发功能会导致严重延迟,一般都用udp,虽然会丢包,但是适当的丢包加上一定丢包纠错策略(比方说将连续的数据包错开发送)不会影响声音质量。
disney 2004-04-01
  • 打赏
  • 举报
回复
缓冲区不是很长,根据编码,大概每秒40个数据包。我用的是TCP连接来传输数据,因此当有一个数据包滞后时,随后的数据到达时间可能恢复过来,但都会延迟播出。可如何才能获得Audio Renderer正在播出的是哪个数据包,然后才能确定应该丢弃多少数据来保证尽可能小的延迟呢?

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧