I've been wrestling with this problem for the last few days.
I'm trying to write a proof of concept to show that a 3rd party hardware device with "Videophone" capabilities can call a web application on the same LAN. At the recommendation of the manufacturer of the device, I'm using linphone.
Firstly, Linphone for Windows works perfectly (After enabling H263 under video codecs) So to clarify, the 3rd party device makes use of the H263 video codec.
Linphone for the browser using my proof of concept, shows video when called from linphone for windows but NOT when called from the 3rd part device.
After some digging through https://www.linphone.org/docs/linphone-web/external-LinphoneCore.html and looking at the results of "core.videoCodecs" I noticed that the only video codec returned was VP8.
After more digging, the x-linphone-web plugin does not include all codecs by default. So I recompiled the plugin with support for "H263" enabled. "core.videoCodecs" now returned with "H263" as one of the codecs. At this point, there is still no video when I call from the 3rd party device to my proof of concept.
Other things I've tried:
- Manipulate linphone core parameters. (videoPort, videoPolicy, ...)
- Accept calls in different ways. Using acceptCall, acceptCallWithParams, acceptEarlyMedia followed by acceptCall.
I noticed that linphone for windows exports its configuration to a linphonerc file. Tried to initialise the linphone core using the same parameters an linphone for windows
3.1 Tried using core.init('URI to file using the format file:///C:/test.linphonerc'); This caused an invalid URI error.
3.2 Tried using core.init('URI to file using the format 'local:///test.linphonerc'); This didn't cause an error but created new file C:\Users***\AppData\Local\Temp\linphone-web\8d89-653a-c164-9d79\test.linphonerc
3.3 Tried creating the file in code using newLpConfig('local:///test.linphonerc') then initialising using core.init('local:///test.linphonerc'). newLpConfig writes to a new folder in C:\Users***\AppData\Local\Temp\linphone-web\ and init tries to read from yet another new folder in C:\Users***\AppData\Local\Temp\linphone-web\
Looking at wireshark logs to see the difference between calling linphone for windows and calling proof of concept with linphone browser from 3rd party device.
4.1 Linphone(Windows) replies to the SIP Invite with a "101 Dialog Establishment" while Linphone(Browser) replies with a "100 Trying"
4.2 When the "answer call" button is pressed, Linphone(Windows) replies with "200 OK" that includes a SDP media description "Media Description, name and address (m): video 9078 RTP/AVP 34" while Linphone(Browser) replies with "200 OK" with a media description "Media Description, name and address (m): video 0 RTP/AVP 0"
4.3 On answer, Linphone(Windows) replies with "200 OK" that includes a SDP media attribute"Media Attribute (a): rtpmap:34 H263/90000" while Linphone(Browser) replies with "200 OK" without a video media attribute.
Any idea why the video is displaying when calling Linphone for windows but not when calling my proof of concept that makes use of Linphone for browser?
Please let me know if someone needs to see the code I'm using.
I've also posted this question to stackoverflow with the tags #linphone, #sip and #voip, but found this mailing list later which I thought might have a better chance of answering my question. Thanks for any help!