导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2023/3/21 14:18:49
标题:
如果用delphi做语音对讲,有什么好的方法或者好控件
浏览:1668
加入我的收藏
楼主:
现在的社交软件上常有的语音对讲和视频,DeLphi有什么方法可以实现?
----------------------------------------------
-
作者:
2023/3/21 15:15:37
1楼:
ffmpeg
----------------------------------------------
-
作者:
cxg417 (cxg417)
★☆☆☆☆
-
盒子活跃会员
2023/3/21 16:27:11
2楼:
同问
----------------------------------------------
-
作者:
2023/3/21 18:17:35
3楼:
语音对讲这个功能有意思,我想做不过没时间去搞。 1. 语音采集;打开话筒,获得语音数据; 2. 语音数据上网传输到对方; 3. 语音播放:网上收到语音数据,从喇叭播放出来。 在 Windows 上面,以前我的 D7 上搞过。现在的安卓或者 iOS,可能比较麻烦了,各种权限问题就要折腾死人。
----------------------------------------------
-
作者:
2023/3/22 9:39:07
4楼:
VC Components,里面有例子
----------------------------------------------
-
作者:
2023/3/22 10:18:55
5楼:
不懂就问,VC Components是啥东西?是控件?还是啥?
----------------------------------------------
-
作者:
2023/3/22 12:51:08
6楼:
qq和wx可以即时语音通话,质量比手机还好。 信息在电脑中只有两种存在方式,一个是静止的,就是文件,一个是运动的,流或数据包。 我们大部分编程都是在处理静止的信息:文件、数据库字段,图片、视频等。 我们很少处理运动信息:现场即时语音、即时视频、现场采集的数据流,这是实时响应程序。delphi提供的实时组件很少。但其实也就量对声卡、显卡的功能调用而已。
----------------------------------------------
-
作者:
2023/3/22 20:36:36
7楼:
我在网上找到一些ACM控件的例子,在delphi下面是可以做到语音对讲的,他们和UDP控件一起使用,只是这个控件好像没人升级了,只能到delphi7为止。
----------------------------------------------
-
作者:
2023/3/22 20:54:36
8楼:
ACM 是基于 WINDOWS 提供的一个啥东西的,不知道现在的 WINDOWS 还支持不。我以前在 D7 底下就用它,做的视频会议的音频部分就用它。 如果现在的 WINDOWS 还支持 ACM,那那个控件稍微改改应该就能用。但现在的程序,可能更多的要跑在手机上。手机上如何采集音频,安卓和 iOS,就不知道该怎么搞了。
----------------------------------------------
-
作者:
2023/3/22 22:46:26
9楼:
https://github.com/terrylao/voice_communication 會用的就用吧。
----------------------------------------------
-
作者:
cxg417 (cxg417)
★☆☆☆☆
-
盒子活跃会员
2023/3/22 23:09:57
10楼:
有支持Delphi+安卓的吗
----------------------------------------------
-
作者:
2023/3/23 7:37:25
11楼:
可以从其它语言C C++那转过来,如今不同以往,有了chatGPT,成本要低很多。 特别是delphi转freepascal,应该比较容易,感兴趣有条件的造福下大家;最好能分享下转的经验和技巧。 现在,对于delphi的老手,跨语言的障碍已经很小了,剩下的就是爱好和平台的态度。
----------------------------------------------
软件是什么,相信很多人都说不清。
作者:
2023/3/23 13:13:35
12楼:
9楼这个可以在delphi下使用,在局域网里面,是个好东西
----------------------------------------------
-
作者:
2023/3/23 13:14:08
13楼:
我用delphi7编译后可以直接使用
----------------------------------------------
-
作者:
2023/3/23 14:05:20
14楼:
是点对点语音吗?好像在delphi11.3里无法安装 这一句: RT_RCDATAW = pWideChar(#10); [dcc32 Error] unaTypes.pas(443): E2026 Constant expression expected 哪位可以改下为11.3?
----------------------------------------------
-
作者:
2023/3/23 14:16:28
15楼:
我测试是点对点的,类似UDP聊天软件一样,一个服务器,一个客户端,输入对方IP就可以了
----------------------------------------------
-
作者:
2023/3/23 20:23:53
17楼:
有點差, 我推的不用DLL之類的外部LIBRARY
----------------------------------------------
-
作者:
2023/3/23 20:53:45
18楼:
楼上,你推荐的在delphi11.3编译时有下面这个错误: constructor createRes(const name: wString; resType: pwChar = RT_RCDATAW; instance: hModule = 0); [dcc32 Warning] unaClasses.pas(7052): W1073 Combining signed type and unsigned 64-bit type - treated as an unsigned type
----------------------------------------------
-
作者:
2023/3/23 20:59:58
19楼:
Warning <> Error!!
----------------------------------------------
-
作者:
2023/3/23 21:09:26
20楼:
[dcc32警告]unaClasses.pas(7052):W1073组合有符号类型和无符号64位类型-视为无符号类型 问题是编译通不过,把初始值去掉可以通过编译: constructor createRes(const name: wString; resType: pwChar = RT_RCDATAW; instance: hModule = 0); 改为: constructor createRes(const name: wString; resType: pwChar; instance: hModule = 0); 但是没初始值肯定会有问题。 报错意思是: 问题出在delphi11的编译器对函数的常量初始值声明格式有改变,
----------------------------------------------
-
作者:
2023/3/23 21:53:12
21楼:
@powerpcer (小强)装上了,找遍所有示例都没有语音拨号通话功能?
----------------------------------------------
-
作者:
2023/3/23 22:03:28
22楼:
VOICE OVER IP, voice_communication/samples/confRTP/ 不是"语音拨号通话",這是兩件事!! 你要拨号通话要跟電信商對接的。 走的就不會是一般的RTP 了。
----------------------------------------------
-
作者:
2023/3/23 22:28:20
23楼:
当然不是拨通电话。 用上了,有两个问题: 1、只能单向语音,好像对讲机一样; 2、语音质量差,断断续结。 我以为可以像qq、微信一样的话音通话功能。
----------------------------------------------
-
作者:
2023/3/23 22:43:38
24楼:
要做雙向,改一下不就有了, 還要做好給你? 语音质量差,断断续结。<--這我就不知囉。 除非你的環境的網路差。不就RTP 而已。 要像QQ 哪樣,QQ 不就很差? 微信還有兩秒以上的DELAY。
----------------------------------------------
-
作者:
2023/3/23 22:47:47
25楼:
另一個問題, 你可以選 VOICE CODEC,這跟壓縮率及品質相關, G系列, 免費的都有了,最新的在M$ 底下。你會寫也沒用。 另外有 https://github.com/terrylao/iLbc 這個是當年SKYPE 用的CODEC。
----------------------------------------------
-
作者:
2023/3/24 0:07:54
26楼:
skype 当年用的 codec,让当时的行业里面的人都很惊讶。于是企鹅果断地也用了它,于是 QQ 的音质也就上来了。
----------------------------------------------
-
作者:
2023/3/24 9:21:34
27楼:
一、已经解决几个主要问题了 1、现在在delphi11.3上搞定安装了。 2、现在可以双向通话了。 3、现在可以实现较高质量语音了,即使信号稍差也不会断断续续。 4、一个程序既可以是服务端也可以是客户端,可以主叫也可被叫。 这个基本跟QQ或wx一样了。 现在的问题是,怎么拨号? vc2.5是服务端必须开启服务,也就是通话双方都要开启服务端提供呼叫服务,然后其中主叫端启动客户端,通过输入对方端口和ip就可以连接,一连接就可以通话,这个过程与打电话一样。 但现实的场景是需要有一个呼叫的过程,呼叫时双方响呤,然后再接通,接通后再通话。也就是要有一个请求连接的过程,期间要播放一段音频。而现在是vc2.5似乎并没有等待连接的功能,只要一开户服务,客户端就可以连接通话,有求必应。也许应该有一个允许连接的功能,可能我还没找到罢了。
----------------------------------------------
-
作者:
cxg417 (cxg417)
★☆☆☆☆
-
盒子活跃会员
2023/3/24 9:54:23
28楼:
楼上,你这个是在Win平台还是安卓平台实现了?
----------------------------------------------
-
作者:
2023/3/24 10:06:34
29楼:
24 楼 说的太对了。 有些人 就 觉得 欠他似的。
----------------------------------------------
(C)(P)Flying Wang
作者:
2023/3/24 10:19:50
30楼:
@28楼:cxg417 (cxg417) 这个应该不支持android,如果支持,移动和电信就只能吃干饭了。 从这个也可以看出,这个底层是win32 api和com技术:
此帖子包含附件: 大小: 5.7K
----------------------------------------------
-
作者:
2023/3/24 11:24:52
31楼:
Application 當然是WINDOWS BASED。不然你認為錄音的東西, 是有一套API 跨平台? 離開了這個東西外,其它的COMPOMENT 都沒有平台問題。 你要是會寫MAC的, 會寫ANDROID 的, 會寫LINUX 的, 就改掉哪個APP 的COMPONENT 即可以。
----------------------------------------------
-
作者:
2023/3/24 12:57:50
32楼:
RVMedia组件,收费的,下载试验过,局域网通话,噪音太大,不知道是何原因。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
2023/3/24 16:26:23
33楼:
排除法: NOISE 在四個地方 1. RECORD 2. COMPRESS 3. TRANSFER 4. REPLAY 1 和 4 你可以自己錄一段成WAV 再PLAY 出來,看一下是不是機器/DRIVER/WHAT EVER 和APP 本身無關的,有關。 如果WAV RECORDING 和REPLAY 都沒NOISE 就剩下 COMPRESS 和 TRANSFER 的事 TRANSFER 的問題,可以看兩端的LOG, BEFORE TRANSFER 和AFTER RECEIVE 的DUMP , BINARY 一不一致,若一致。就是COMPRESSOR 的問題。
----------------------------------------------
-
作者:
2023/3/24 17:01:36
34楼:
32楼: 在 WINDOWS 上,你直接用 ACM,音质没问题的,没用噪声问题。当然现在 WIN10 还能不能支持 ACM 就不知道了。 其实噪声可能是你的话筒有问题,而不是软件的问题。声音采集变成数字以后,如果不专门搞事,它就不会再变了。这个就是数字信号和模拟信号的区别。模拟信号在传输过程中通过的各种电路,还可能带入各种噪声或者信号变形。数字信号没这个问题。 比如 GSM 电话用的声音编码器,它的规范里面,还专门要加入一点点背景噪声,你不注意是听不出来的。这个是为了没语音的时候,你不会觉得电话断线了。 如果用 ACM 采集纯的 PCM 编码的声音数据,不做任何其它压缩编码处理,那对方没说话时,真的是一点声音没有,真的感觉是不是对方断线了。
----------------------------------------------
-
作者:
2023/3/24 18:03:40
35楼:
刚才把我20年前做的一个视频会议软件里面的 ACM 代码找出来测试了一下。 Windows 11,Delphi 10.4 底下,运行正常。可以采集语音,播放语音。 居然之前的代码,只有一个地方需要改,就是有个地方的 PChar 改成 PAnsiChar。 那个 ACM 控件当年也是在网上找来的。
----------------------------------------------
-
作者:
2023/3/24 18:18:05
36楼:
如果单纯 WINDOWS 底下,采用这个 ACM 和 Indy 的 TCP/UDP 控件,做一个语音对讲,如果不考虑软件未来的复杂而做一个复杂一点的代码框架,单纯实现简单对讲功能的话,就非常容易了。 但是,如果要考虑很多业务逻辑,比如,账号,登录,如何知道对方的 IP 地址,如何穿墙,用 UDP 点对点传还是用一个 TCP 服务器中转,以及是否支持多人,如果用服务器,是否支持同时开多个会议(开房间的概念),等等。要考虑这些, 代码的复杂度就上去了,几天功夫就做不完了。但是,技术上用 Delphi 是肯定可以做得出来的。 现在其实缺的是 Android 和 iOS 上采集/播放声音的 Delphi 代码。如果有了,手机版也就可以做了。
----------------------------------------------
-
作者:
2023/3/24 18:25:33
37楼:
fpc 上都有對應的, https://github.com/fredvs/uos/ DELPHI 你就去學一下對應的API 了。
----------------------------------------------
-
作者:
2023/3/24 20:04:31
38楼:
35楼,能不能把你用的ACM控件放出来一下?可以在10.4下使用?
----------------------------------------------
-
作者:
2023/3/24 22:41:14
39楼:
38楼: https://download.csdn.net/download/pcplayer/87611442
----------------------------------------------
-
作者:
2023/3/24 22:44:14
40楼:
38 楼,你要做一个什么样的东西? 语音视频通话的软件我做过。之前我也一直想重新做一个拿来开源,但确实时间不够用。你如果要做,是否可以一起来搞,做一个开源项目?
----------------------------------------------
-
作者:
2023/3/24 22:51:35
41楼:
@34楼,用的笔记本的话筒。要说话筒有问题,那么微信,QQ,啥的都清晰的很,这个讲不通。那套组件功能做的到是挺多,就是不知道为什么语音有那种刺耳的燥声。就像功放根前放了一个话筒一样那种感觉。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
2023/3/24 23:12:55
42楼:
要對標QQ, WECHAT?? 集中式的問題在CDN 和ROUTING,VOICE CHAT 真的是超簡單的 東西。 如果還不想吃太多自己的BANDWIDTH,還要想一下類SKYPE 的P2P PROTOCOL 出來. 這SKYPE 沒OPEN SOURCE 哦。你要怎麼想,憑本事了。 如何ROUTING, 哪些人可以當SUPERNODE 等。
----------------------------------------------
-
作者:
2023/3/25 2:22:13
43楼:
41楼: 你不是自己的电脑的麦克收音然后自己的电脑的喇叭播放吧?这样的话,就等于话筒放在功放前嘛。 当然,刚才我测试 ACM 的时候也是这样做的。做测试可以,叫做回环,loop.
----------------------------------------------
-
作者:
2023/3/25 8:40:56
44楼:
用vc2.5好,源代码不dll。把两台电脑搬到不同地方,信号2格,通话质量良好。
----------------------------------------------
-
作者:
2023/3/25 11:43:40
45楼:
@43楼,不是,用两台电脑,并且放到不同的房间,互相无干扰。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
2023/3/25 12:37:59
46楼:
玩玩罢了,也没什么用
----------------------------------------------
-