互联网协议语音(VoIP)是用于通过诸如因特网的因特网协议(IP)网络传送语音通信和多媒体会话的互联网技术,通信协议和传输技术家族之一。 VoIP协议可以进一步细分为信令和媒体协议。信令协议用于建立VoIP会话,而媒体协议承载实际的语音流量。
我需要一个应用程序或任何东西,可以让我收到的电话通过互联网自动转发到另一部手机。问题是我在国外时无法接听电话...
VoIP 新手,所以如果我遗漏了一个明显的答案,请原谅我:我可以在同一个 VoIP 用户 ID 上拥有多个端点吗,就像固定电话有多个分机一样?如果有的话有...
我想使用 Sipp 工具测试 oracle acme 数据包 SBC 上的负载。 Sipp 已安装在 ubuntu 16.04 服务器上。需要用于负载测试的示例脚本。我们需要编辑任何 .xml 文件吗? 需要发给我...
我有 G.723.1 录音的二进制数据(24 字节帧,6.3kbit),没有任何容器(例如 wav、ogg 等),只有数据。 我将其保存到 .dat 文件并尝试使用 ffmpeg 进行转换: ffmpeg.exe -i
我想创建一个用于生产的 VoIP 证书,但它似乎不起作用。 这就是我所做的: 在developer.apple.com上为VoIP创建了一个新的生产证书,并带有相应的...
如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <receiver android:name=".MediaButtonReceiver" android:exported="true" android:priority="10000" > <intent-filter > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> public class MediaButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { android.util.Log.d("TAG", "Bluetooth onPlay: "+intent.getAction()); if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event != null && event.getAction() == KeyEvent.ACTION_DOWN) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { // Handle play/pause event } } } } } 并像这样注册到调用活动 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); 并且还在应用程序中的广播接收器下面实现了 public class BluetoothHeadsetReceiver extends BroadcastReceiver implements BluetoothProfile.ServiceListener { private static final String TAG = "BluetoothHeadsetReceiver"; private BluetoothHeadset bluetoothHeadset; @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; Log.d(TAG, "Bluetooth Headset connected"); } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; Log.d(TAG, "Bluetooth Headset disconnected"); } } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "Bluetooth Headset onReceive : "+action); if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_DISCONNECTED); if (state == BluetoothHeadset.STATE_CONNECTED) { Log.d(TAG, "Bluetooth Headset connected"); } else if (state == BluetoothHeadset.STATE_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset disconnected"); } } else if (BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_AUDIO_DISCONNECTED); if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) { Log.d(TAG, "Bluetooth Headset audio connected"); // Handle button click events or other actions here } else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset audio disconnected"); } }else{ Log.d(TAG, "Bluetooth Headset onReceive else : "); } } public void register(Context context) { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { bluetoothAdapter.getProfileProxy(context, this, BluetoothProfile.HEADSET); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); filter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); context.registerReceiver(this, filter); } else { Log.e(TAG, "Bluetooth is not supported on this device"); } } public void unregister(Context context) { context.unregisterReceiver(this); if (bluetoothHeadset != null) { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset); } } } 在调用 Activity OnCreate() 方法中注册以下代码。 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); if(gc.hasBTPermission(this, ConstantStrings.BLUETOOTH_PERMISSION)) { if (BluetoothManager.getInstance().isBluetoothHeadsetAvailable()) { headsetReceiver = new BluetoothHeadsetReceiver(); headsetReceiver.register(this); BluetoothManager.getInstance().initBluetooth(); } } 但不接收蓝牙耳机播放,暂停点击事件仅接收应用程序中的蓝牙连接和断开事件。 我想基于蓝牙点击事件呼叫接受和挂断呼叫,但不在应用程序中接收事件。 蓝牙 HID 配置文件/服务始终由设备的底层操作系统处理。只需订阅操作系统的关键事件即可。在 Android 中,应用程序可以通过覆盖 MediaSession.Callback.onMediaButtonEvent(Intent) 来覆盖默认行为。在这种情况下,应用程序可以/需要自行处理所有 API 细节。
我正在使用 callkit 进行 voip 应用程序,在每次全新安装时,CallKit startCallAction 请求都会失败并抛出“com.apple.CallKit.error.requesttransaction error 7”。 请找到负责的方法...
是否可以在 VOIP 软交换机(例如 Magnus billing 或 Asterisks 或任何其他开源 VOIP 服务器)上创建虚拟号码,并能够接收该号码上的短信? 我试过了...
如何通过 SIP 将我的 Node.js 应用程序连接到外部 VOIP 提供商?
我有一个node.js应用程序,它使用Twilio双向媒体流来监听用户(通过STT)并发回音频。它在美国运行良好,但其他地区不支持 Twilio 可编程语音
我正在使用 Freeswitch 1.8。 我使用 ESL 与 freeswitch 核心交互。 我想通过 uuid 将音频播放到会话中。 我通过使用 uuid_broadcast 尝试了很多方法: uuid_广播 0e570851-2871...
我正在开发一个项目,构建在 Windows 平台上运行的 VoIP 软件。我们使用 C# 作为我们的主要编程语言。 我目前正在寻找一个开源库来帮助我
如何在 Android 中使用 Baresip 进行即时通讯应用
我可以在 Android kotlin 中使用 Baresip 构建即时消息应用程序吗?我已经看过这里的示例文档,但我仍然不明白。 请帮我。谢谢:)
Kamailio 替换 INVITE 请求中的 From 和 To 标头
我使用调度程序将我的邀请发送给 asterisk,但我发现问题需要替换 from 和 to 标头,因为 asterisk 知道 uacreg 内的其他用户。我像这样更改标题...
我想使用 pjsua2 创建软件电话应用程序。 当我使用 makeCall 函数时,我遇到这个问题: System.ApplicationException: 'C++ pj::错误: 标题: pjsua_call_make_call(acc.getId(...
我正在尝试连接到属于供应商的 asterisk,供应商说我的邀请被拒绝,因为编解码器不是 PCMA/PCMU。 我还需要将 RTC 端口设置为 10K-40K 才能听到语音,w...
使用 JSSIP / WebRTC 发起 SIP 呼叫延迟 40 秒
我正在开发一个基于JavaScript的Web SIP客户端与Asterisk SIP服务器通信。 SIP 客户端使用 JSSIP 3.4.2,我正在 Chrome 版本 80 上进行测试。 SIP 客户端和 SIP 服务器都是
如何使用 Linphone 核心 API 在两个 IP 地址之间建立 VOIP 呼叫
我在协议方面没有任何经验(如 SIP/SDP/TCP/RTP),但我需要帮助才能在 Linux 计算机中使用 Linphone Lib 或 Linphone 核心 API 进行 VOIP 呼叫。 我的要求:我想要...
如何在qt Creator中编译并运行pjsua2演示应用程序?
我正在尝试在 Qt Creator 中构建 voip 应用程序。我在 C++ 方面没有太多经验。我安装了 Qt 并构建并安装了 pjproject 库。我使用 pkgconfig 添加了 pjproject 库,如下添加
我实现了一个简单的调用者和侦听器脚本,其工作方式如下: 监听者等待来电 呼叫者发起呼叫 呼叫者播放 wav 文件(从 pj.AudioMediaPlayer 传输
如何配置 Kamailio 将消息记录到特定的日志文件中,并首先使其日志记录工作
我制作了一个kamailio服务器,它一半通过路由器工作,但不能在本地工作(是的,我知道,这很奇怪),主要问题是我什至不知道到底发生了什么以及问题是什么。 .