我们有一个使用WebRTC的原生Android应用,我们需要找出主机设备支持哪些视频编解码器。 (始终支持VP8,但H.264受具有兼容芯片组的设备的限制。)
我们的想法是创建一个商品并从SDP获得支持的视频编解码器。我们可以在Web应用程序中执行以下操作:
const pc = new RTCPeerConnection();
if (pc.addTransceiver) {
pc.addTransceiver('video');
pc.addTransceiver('audio');
}
pc.createOffer(...);
有没有办法在Android上做类似的事情?非常重要的是,我们不需要请求相机访问权来创建优惠。
答案 0 :(得分:2)
创建一个VideoEncoderFactory对象,然后调用getSupportedCodecs()。这将返回可以使用的编解码器列表。确保首先创建PeerConnectionFactory。
PeerConnectionFactory.InitializationOptions initializationOptions =
PeerConnectionFactory.InitializationOptions.builder(this)
.setEnableVideoHwAcceleration(true)
.createInitializationOptions();
PeerConnectionFactory.initialize(initializationOptions);
VideoEncoderFactory videoEncoderFactory =
new DefaultVideoEncoderFactory(eglBase.getEglBaseContext()
, true, true);
for (int i = 0; i < videoEncoderFactory.getSupportedCodecs().length; i++) {
Log.d("Codecs", "Supported codecs: " + videoEncoderFactory.getSupportedCodecs()[i].name);
}
答案 1 :(得分:0)
我认为这就是你要找的东西:
private static void codecs() {
MediaCodecInfo[] codecInfos = new MediaCodecList(MediaCodecList.ALL_CODECS).getCodecInfos();
for(MediaCodecInfo codecInfo : codecInfos) {
Log.i("Codec", codecInfo.getName());
for(String supportedType : codecInfo.getSupportedTypes()){
Log.i("Codec", supportedType);
}
}
}
您可以查看https://developer.android.com/reference/android/media/MediaCodecInfo.html
上的示例