关于音频文件不同格式保存和传输的问题

一个不能再白的小白 2021-04-28 03:24:38
菜鸟一个,正在学习。

我现在正在做一个通讯的软件,想完成发送语音的功能,当前实现的方法是,使用
QAudioFormat format;
format.setSampleRate(8000); //设置采样的赫兹
format.setChannelCount(1); //设置通道数通道 v//设定声道数目,mono(平声道)的声道数目是1;stero(立体声)的声道数目是2
format.setSampleSize(16); //设置样本大小,一般为8或者16
format.setCodec("audio/pcm");//设置编解码器
format.setByteOrder(QAudioFormat::LittleEndian);//
format.setSampleType(QAudioFormat::UnSignedInt);//
...
QAudioInput * input;
QAudioOutput* output;
...

来将保存录音,保存为raw格式的文件,再转换为wav格式的文件进行播放,传输的时候想使用udp传输raw文件的内容,接收方在保存并生成raw文件,播放时也是转为wav格式播放。但是有一个严重的问题,当录音文件过大时,udp传输就会丢包。导致传输失败。但我还不想使用tcp。

请问有什么方法可以解决上述问题?
...全文
1397 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 10 楼 Erice 的回复:
如果是 单纯的语音沟通,可以采用 qq & 微信常用的 .silk的编码。SILK v3编码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器,Skype后来将其开源。它的体积对比mp3和acc更小。
好的,我学习学习。
Erice 2021-05-04
  • 打赏
  • 举报
回复
如果是 单纯的语音沟通,可以采用 qq & 微信常用的 .silk的编码。SILK v3编码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器,Skype后来将其开源。它的体积对比mp3和acc更小。
  • 打赏
  • 举报
回复
引用 8 楼 梦起丶 的回复:
建议直接用TCP即可。 我觉得对于通信软件,选择合适的协议(即时通讯协议)很重要。 并且对于文字/录音/图像这类文件,用UDP实在不妥(例如一张图像的部分数据丢包,那么图像就损坏了)。 另一方面,图像(JPG / PNG等格式)本身已经压缩,并不需要多此一举。 - -。话说建议楼主多多了解TCP和UDP。
现在已经修改使用tcp了
梦起丶 2021-04-30
  • 打赏
  • 举报
回复
建议直接用TCP即可。 我觉得对于通信软件,选择合适的协议(即时通讯协议)很重要。 并且对于文字/录音/图像这类文件,用UDP实在不妥(例如一张图像的部分数据丢包,那么图像就损坏了)。 另一方面,图像(JPG / PNG等格式)本身已经压缩,并不需要多此一举。 - -。话说建议楼主多多了解TCP和UDP。
  • 打赏
  • 举报
回复
引用 4 楼 丁劲犇 的回复:
如果是文件形式的非实时单工语音,可以用lame存成文件。lame直接可以命令行调用。
这个我去了解了,但是网上也没能找到合适的例子,也没能找到 这个 lame 三方库,您能给个链接吗?
  • 打赏
  • 举报
回复
引用 6 楼 丁劲犇 的回复:
https://lame.sourceforge.io/
感谢
  • 打赏
  • 举报
回复
https://lame.sourceforge.io/
  • 打赏
  • 举报
回复
如果是文件形式的非实时单工语音,可以用lame存成文件。lame直接可以命令行调用。
  • 打赏
  • 举报
回复
up up up
  • 打赏
  • 举报
回复
我现在在想最好的方法就是在发送前压缩要发送的语音文件。因为之前从没接触过这类操作,一直不知道怎么下手,网上说可以使用lame库编码为MP3的格式,MP3格式的文件应该小一点吧,但是我又不会,也没能找到这个三方的lame库。还希望有大佬帮帮孩子。
  • 打赏
  • 举报
回复
发送语音消息应该是用udp还是tcp呢?我的想法是,UDP发送吧必须要压缩语音文件内容,要不然容易丢包,不够稳定。使用TCP吧,我认为太过于繁琐,因为我想的是,客户端又不像服务器会一直监听自己的端口,因为我其他的数据传输都是使用的udp(文字,表情,图片(图片我是压缩后发的,还没实现点击下载原图的方式)),如果不一直监听的话,仅因为发送语音文件而去监听,再建立连接我觉得过于麻烦。 而且在我使用微信的时候发现,发送语音不能说的太久(好像最大只能到60秒),我猜测太久了,即便是压缩了也会出现文件过大的问题,使用UDP发送也会出现丢包的情况。

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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