关于音频问题,有偿请教问题,对我过于难了。

2024 年 5 月 25 日
 pipixiarwksb

通过 socket 发送原始 pcm 数据,格式如下 Sample Rate: 48000.0 Channel Count: 2 Common Format: PCM Float32

pcm 数据发送的: (0x10529da40: 3840/3840 bytes)

在 python 服务端接收数据时,直接写入 wav 文件,背景有声音,但是噪声很大,这应该怎么处理,客户端写入文件时是没问题的。如有大佬知道能解决问题,200 元给大佬喝茶!!!还望大佬能指点一二!!!

1433 次点击
所在节点    外包
13 条回复
a33291
2024 年 5 月 25 日
udp 发的?乱序或者丢包了吧
客户端发送时写入文件,服务端收到也写入文件,然后用 BC 十六进制对比一下差异
dode
2024 年 5 月 25 日
记录首发 HEX 原始数据,对比差异,这个要多少带宽,中途 TC 连接要是断了怎么办?

客户端写好文件,再用程序发到服务器吧
iOCZS
2024 年 5 月 25 日
两端收发的文件是否一致啊
pipixiarwksb
2024 年 5 月 27 日
@a33291 tcp 协议
@dode 要求一定的实时性,没法写入文件再发到服务器
@iOCZS 这个怎么做啊,因为我服务端是一直再接收,客户端可以随时停掉,怎么才能确保两边同时停止写入文件
ziding
2024 年 5 月 27 日
1. 对比两端的 wav 文件
2. 播放的设置是否搞对了?有点像采样率没搞对的情况
jifengg
2024 年 5 月 27 日
wav 文件头写了吗?
pipixiarwksb
2024 年 5 月 27 日
@jifengg 头是啥,还要写头?
@ziding 采样率是 48000.0
dode
2024 年 5 月 27 日
客户端传输数据时,TCP 连接断掉了怎么办?
客户端一个线程直接边写文件,一个线程边读取这个文件,发送到服务器。
dode
2024 年 5 月 27 日
现有程序执行时,占用多大网络带宽?
jifengg
2024 年 5 月 27 日
wav 文件头,包含了你说的 PCM 格式描述:
“Sample Rate: 48000.0 Channel Count: 2 Common Format: PCM Float32”
以及其他信息,如果没有这些信息,用播放器直接播放 wav 文件,要么不能播,要么按默认参数播
csulyb
2024 年 5 月 27 日
思路:
1.服务器端直接把 pcm 存下来,然后用播放器比如 audacity 播放看看正常不
a.正常就是你 wav 的头不对,自己对着 wav 的头修改下。
b.不正常的话,注意下音频数据存储用哪个,float 还是 int16 ?

还有个问题 网络通信为啥直接 pcm ,节省带宽最好 opus 编码下发
xsen
2024 年 5 月 28 日
1. 服务端保存为 pcm ,用 vlc 看播放是否有问题
2. 确认包是否完整—就是对整个 pcm/wav 文件做 MD5 ,接收后确认 MD5 值是否一样
3. 确认写入的采样率、通道数是否一致
EvaDan
2024 年 5 月 30 日
@pipixiarwksb 前面有个哥们说的对 wav 文件的需要文件头信息来表明怎么解析后续的数据格式,不然播放器解析不了。PCM 就是纯数据,不带格式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043925

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX