如何在 Android 中实用地将 videoCodec 设置为 LinphoneCore?
How to pragmatically set a videoCodec to LinphoneCore in Android?
我目前正在开发 VoIP Android 应用程序,为了支持 VoIP,我正在使用开源库 Linphone.
目前正在进行语音通话,但没有进行视频通话。分析了一段时间,发现默认情况下,应用加载时,LinphoneCore库使用的是H264视频编解码器。
但是VOIP Asterik 服务器配置了VP8 视频编解码器。我无法更改在服务器中配置的视频编解码器。因此,由于编解码器不匹配,视频数据无法传输。
那么,如何在加载应用程序后将视频编解码器从我的应用程序手动设置为 VP8 到 LinphoneCore?
要将videoCodec设置为LinphoneCore
,您可以做的是,一旦您的LinphoneCore准备就绪,您只需检索它支持的VideoCodec Payload,然后设置一个特定的负载并禁用其他负载,如下面的代码所示。
private void enableVp8Codec () {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) {
PayloadType[] lPayLoadArr = lc.getVideoCodecs();
for (final PayloadType pt : lPayLoadArr) {
try {
if (pt.getMime().equals("VP8")) {
lc.enablePayloadType(pt, true);
} else {
lc.enablePayloadType(pt, false);
}
} catch (LinphoneCoreException e) {
Log.e("tag",e.getMessage());
}
}
}
}
您可以在 Activity
的 onResume 中调用此方法
我目前正在开发 VoIP Android 应用程序,为了支持 VoIP,我正在使用开源库 Linphone.
目前正在进行语音通话,但没有进行视频通话。分析了一段时间,发现默认情况下,应用加载时,LinphoneCore库使用的是H264视频编解码器。
但是VOIP Asterik 服务器配置了VP8 视频编解码器。我无法更改在服务器中配置的视频编解码器。因此,由于编解码器不匹配,视频数据无法传输。
那么,如何在加载应用程序后将视频编解码器从我的应用程序手动设置为 VP8 到 LinphoneCore?
要将videoCodec设置为LinphoneCore
,您可以做的是,一旦您的LinphoneCore准备就绪,您只需检索它支持的VideoCodec Payload,然后设置一个特定的负载并禁用其他负载,如下面的代码所示。
private void enableVp8Codec () {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
if (lc != null) {
PayloadType[] lPayLoadArr = lc.getVideoCodecs();
for (final PayloadType pt : lPayLoadArr) {
try {
if (pt.getMime().equals("VP8")) {
lc.enablePayloadType(pt, true);
} else {
lc.enablePayloadType(pt, false);
}
} catch (LinphoneCoreException e) {
Log.e("tag",e.getMessage());
}
}
}
}
您可以在 Activity
的 onResume 中调用此方法