互联网协议语音(VoIP)是用于通过诸如因特网的因特网协议(IP)网络传送语音通信和多媒体会话的互联网技术,通信协议和传输技术家族之一。 VoIP协议可以进一步细分为信令和媒体协议。信令协议用于建立VoIP会话,而媒体协议承载实际的语音流量。
如何在我的 flutter 应用程序中添加 Voip 通话功能?
我想在我的 Flutter 应用程序中添加 VoIP 呼叫,例如 Swiggy/uber,他们可以从应用程序呼叫电话号码,请帮助我。谢谢你! 还没有找到任何可靠的文档。
是否可以通过单独分析RTP流来检测RTP流中使用的编解码器?我知道 RTP 标头中的有效负载类型 (PT) 字段 - 可用于识别需要的编解码器...
我正在使用pjsua2进行C++项目,我有一个配置了N多个DID的中继,代码成功调用,问题是我想调用但每个调用必须使用dif...
我们正在制作一个类似于whatsapp 的应用程序。 我们的服务器应该能够向其他(内部验证的)手机发送呼叫(机器人呼叫)和短信(SMS)。 这怎么可能(voip?sip?)并且
我目前正在尝试通过 SipSorcery 在我的 Windows 电脑上使用小型 WPF 应用程序进行呼叫。我正在使用 .net 6 和最新版本的 SipSorcery 包。在注册用户代理期间我...
有没有办法将sip/ip电话直接与goip GSM网关连接。 我正在使用GOIP16 固件版本:GST-1.01-68
我需要一个应用程序或任何东西,可以让我收到的电话通过互联网自动转发到另一部手机。问题是我在国外时无法接听电话...
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(...