crossle / janus-gateway-android

Implements Janus gateway video room on Android
MIT License
63 stars 30 forks source link

support h264 encode/decode? #22

Open fukemy opened 4 years ago

fukemy commented 4 years ago

hello, i saw your codec support is vp8, vp9, h264. But these lines of code do nothings?

preferredVideoCodec = VIDEO_CODEC_VP8;
        if (peerConnectionParameters.videoCodec != null) {
            if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) {
                preferredVideoCodec = VIDEO_CODEC_VP9;
            } else if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) {
                preferredVideoCodec = VIDEO_CODEC_H264;
            }
        } -> no more method to force video codec

So can you provide way to force the codec, such as ios:

        let encoderFactory = RTCVideoEncoderFactoryH264()
        let decoderFactory = RTCVideoDecoderFactoryH264()
        factory = RTCPeerConnectionFactory(encoderFactory: encoderFactory, decoderFactory: decoderFactory)

Thanks

fukemy commented 4 years ago

i tried to force codec in sdp, but not working :(


override fun onPublisherRemoteJsep(handleId: BigInteger?, jsep: JSONObject) {
        val type = SessionDescription.Type.fromCanonicalForm(jsep.optString("type"))
        val sdp = jsep.optString("sdp").replace("42001f", "42e01f").replace("recvonly", "sendrecv")
        val sessionDescription = SessionDescription(type, sdp)
        peerConnectionClient?.setRemoteDescription(handleId, sessionDescription)
    }

    // interface PeerConnectionClient.PeerConnectionEvents
    override fun onLocalDescription(sdp: SessionDescription, handleId: BigInteger?) {
        val type = sdp.type
        val sdpStr = sdp.description.replace("42001f", "42e01f").replace("recvonly", "sendrecv")
        Log.e(TAG, "publisher sdp: $sdpStr")
        mWebSocketChannel?.publisherCreateOffer(handleId, SessionDescription(type, sdpStr))
    }
///