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

182 天前
 pipixiarwksb

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

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

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

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

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

还有个问题 网络通信为啥直接 pcm ,节省带宽最好 opus 编码下发
xsen
179 天前
1. 服务端保存为 pcm ,用 vlc 看播放是否有问题
2. 确认包是否完整—就是对整个 pcm/wav 文件做 MD5 ,接收后确认 MD5 值是否一样
3. 确认写入的采样率、通道数是否一致
EvaDan
177 天前
@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