webrtclibjingle

Minimal WebRTC for native application without audio and video


I am interested in designing a WebRTC/libjingle that uses DataChannels but does not use the audio and video capability. The audio and video capability adds a lot of dependencies that are large and difficult to cross compile. Is there a minimal subset of the WebRTC build that will separate out just the code necessary for initializing DTLS DataChannels with all the sdp/stun/turn etc while remaining compatible with the browser implementations?


Solution

  • AFAIK there is not such minimal, scaled-down, data-channel only version of libjingle (or OpenWebRTC for that matter). IMHO such a version looks just too project-specific and not general enough for the libjingle developers to be interested in it and maintain it.

    The audio/video capabilites do add quite a lot of dependencies. However cross-compiling them for android or iOS is relatively easy. After all one just needs to compile them. There is no need for them to actually work. If one just uses the data channel then the audio/video capabilities will never even be initialized.

    Although the audio/video capabilities cannot be completely compiled-out, they can be "curbed". If you look at the the webrtc-source-code/build/common.gypi you will find a variable called build_vp9 that is 1 by default. If you set it to 0 then some video related dependencies will be remove. In the .gyp and .gypi files there are a lot of flags and I am sure that if you tweak them then you'll be able to remove even more unnecessary dependencies.

    If you're interested in building webrtc for Raspberry PI or other embedded platforms not based on Android or iOS I would suggest you use OpenWebRTC because it has much better support for these environments and is somewhat easier to cross-compile (you wouldn't have to deal with gyp and ninja).