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.
First Problem
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!