victorious-quill-72146
03/09/2026, 4:16 PMtall-airline-16756
03/09/2026, 4:16 PMtall-airline-16756
03/09/2026, 4:16 PMm=video media line and a video codec (e.g., H.264 or VP8). If the intercom never offers video, LiveKit can’t create a video track.
1. Verify allowed codecs on the SIP trunk / intercom
◦ Ensure the intercom and any SIP trunk settings include a common video codec (H.264 or VP8). If codecs don’t match, the video m-line may be rejected.
1. Capture SIP/SDP and LiveKit logs
◦ Check logs or a packet capture between the intercom and your livekit-sip gateway to confirm:
▪︎ The intercom’s SDP includes video.
▪︎ LiveKit receives that SDP and creates a video track.
▪︎ The web client receives and subscribes to the video track.
◦ If you see m=video in the INVITE but no track in LiveKit logs, note the log messages and we can interpret them.
1. Room/track permissions and negotiation on the LiveKit side
◦ Ensure the room creation and participant permissions allow video tracks. LiveKit may prioritize audio-only if the session parameters or client constraints restrict video.
◦ Check whether any bandwidth/simulcast settings or server limits might be downgrading media.
1. Test with another SIP endpoint
◦ If possible, try a known video-capable SIP endpoint (softphone or SIP test tool) to confirm the ingress path accepts and forwards video. This helps isolate whether the intercom or SIP path is the problem.
If you want, share one of these and I’ll help interpret it:
• The SDP snippet from the intercom’s SIP INVITE (the m=video section and codec lines).
• A short excerpt from livekit-sip or livekit-server logs around the call setup.
• Which video codecs your intercom supports and your inbound trunk settings.
I’ll walk you through the next diagnostic step once you share one of the above.
Sources: livekit/livekit_composite | DeepWiki | examples/bank-ivr | livekit/livekit_composite | DeepWiki | sip | livekit/livekit_composite | DeepWikivictorious-quill-72146
03/09/2026, 4:20 PMtall-airline-16756
03/09/2026, 4:22 PMname, numbers, krispEnabled) does not include an explicit place to list or “enable” SIP video codecs. Video support is negotiated through the SIP/SDP exchange from the intercom endpoint rather than a per-trunk codec toggle.
What this means and what to check next
• LiveKit-SIP supports video when the SIP/SDP exchange includes a video media line (m=video) and a compatible video codec (for WebRTC clients LiveKit commonly uses VP8/VP9/H.264).
• The SIP trunk JSON you showed does not include codec settings — codec negotiation happens at call setup via the intercom’s SDP offer and LiveKit’s SDP answer.
• If the intercom never offers m=video or lists only codecs the LiveKit side won’t accept, the call will fall back to audio only.
Practical steps you can take now
1. Capture the intercom’s SIP INVITE/SDP
◦ Look for an m=video section and codec lines (RTP map entries) such as H264, VP8.
◦ Share the m=video SDP snippet if you want help interpreting it.
1. Verify codec compatibility
◦ Confirm which video codecs the intercom advertises.
◦ Confirm the web client/LiveKit supports at least one of those codecs (VP8 or H.264 are common matches).
1. Check livekit-sip and livekit-server logs during call setup
◦ Confirm LiveKit received the video m-line and whether a video track was created or rejected. Share relevant log lines if you want assistance reading them.
1. Test with a known video-capable SIP endpoint
◦ If a softphone or SIP test tool can send video successfully to the same trunk, the intercom is likely the source of the issue.
If you’d like, paste either:
• the intercom’s m=video SDP lines from the INVITE, or
• a short excerpt of livekit-sip logs around the call setup
— and I’ll help interpret them and point to the next config change to get video working.
Sources: sip | livekit/livekit_composite | DeepWiki | Creating SIP Inbound Trunks and Dispatch Rules with Python SDK | WebRTC Codecs Guide | LiveKit | Agents telephony integration | LiveKit Documentationvictorious-quill-72146
03/10/2026, 12:20 PMoffice-panel
SIP Configuration
docker-compose service for SIP:
sip_port: 5060
rtp_port: 10000-20000
external_ip: 123.456.789.000 #vps ip
Trunk configuration:
{
"trunk": {
"name": "Intercom Trunk",
"numbers": [
"1001",
"1002",
"1003",
"1004",
"1005"
],
"krispEnabled": true
}
}
Dispatch rule:
{
"dispatch_rule": {
"rule": {
"dispatchRuleDirect": {
"roomName": "office-panel"
}
},
"name": "Intercom Dispatch",
"trunkIds": [
"ST_H7JtqVVkAdSm"
]
}
}
Test 1 – MicroSIP
Test device: MicroSIP
INVITE SDP contains:
m=video 4012 RTP/AVP 99
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42e01e; packetization-mode=1
Result:
• Call connects successfully
• Audio works
• Video codec is offered (H264 packetization-mode=1)
However, LiveKit SIP response SDP only contains:
m=audio
No:
m=video
LiveKit log shows only:
published track
source: MICROPHONE
No video track is published.
Test 2 – Fanvil i68 Intercom
Test device: Fanvil i68
INVITE SDP contains:
m=video RTP/AVP 117 96
a=rtpmap:117 H264/90000
a=fmtp:117 profile-level-id=42801f; packetization-mode=0
a=sendonly
Result observed in sngrep:
Call flow:
INVITE
100 Trying
180 Ringing
CANCEL
487 Request Terminated
ACK
Video codecs offered:
H264
PS
Important difference:
packetization-mode=0
compared to MicroSIP:
packetization-mode=1
both micro sip and fanvill i68 offers video but the livekit-sip accepts only audiotall-airline-16756
03/10/2026, 12:21 PMm=audio, and the Fanvil i68 (H264 with packetization-mode=0) also fails with the call terminating.
Summary of what’s happening
• LiveKit‑SIP does support video, but it only creates video tracks when the incoming SIP/SDP offer includes a video m-line that LiveKit can accept and negotiate.
• Your MicroSIP INVITE includes m=video with H264 and packetization-mode=1, but LiveKit answers with only m=audio and logs only a MICROPHONE track — meaning LiveKit chose not to accept/answer the video m-line.
• Fanvil’s INVITE includes H264 with packetization-mode=0 and a=sendonly, and the call flow ends early (487) — which suggests the SIP session wasn’t successfully negotiated/accepted for media (likely because the video m-line wasn’t compatible or negotiation failed).
Most likely causes
• Codec parameter mismatch: LiveKit’s WebRTC side expects H264 encoded for WebRTC interoperability. The RTP payload type or specific H264 parameters (profile-level-id, packetization-mode) must be acceptable. Many WebRTC implementations expect packetization-mode=1. If the offered packetization-mode or profile isn’t acceptable, LiveKit will not accept the video m-line.
• SDP offer/answer incompatibility: If the intercom marks a=sendonly or uses unsupported fmtp parameters LiveKit might decline the video m-line.
• Transcoding / passthrough gaps: LiveKit‑SIP does not perform arbitrary transcoding between SIP H264 variants — it will only accept and passthrough video that can be negotiated into the WebRTC session. If the intercom’s H264 parameters can’t map to the WebRTC side, the video will be ignored.
What to try next (actionable steps)
1) Verify the exact incoming SDP for both devices
• Paste the full m=video lines and a=fmtp entries from the INVITE (you already showed key parts; full snippet helps).
• Check whether the intercom uses static RTP payload numbers or dynamic mapping, and ensure the RTPmap lines are present and correct.
2) Test with an SDP that uses packetization-mode=1
• MicroSIP used packetization-mode=1 and still failed to get a video m-line accepted — but confirm MicroSIP’s full fmtp and profile-level-id match typical WebRTC H264 (e.g., baseline/profile-level-id starting with 42e01e is common).
• If possible, configure the Fanvil to use packetization-mode=1 (or change profile-level-id to a baseline profile) and retry. Many SIP devices can be configured to change H264 packetization-mode/profile; check Fanvil i68 codec configuration.
3) Try a known video-capable SIP softphone as a control
• Use a known WebRTC-friendly SIP client (or another softphone that explicitly offers H264 with packetization-mode=1) to confirm the SIP->LiveKit path accepts video. If that works, the issue is the Fanvil codec parameters.
4) Confirm LiveKit logs around SDP handling
• Look at livekit-sip / livekit-server logs during INVITE processing. If LiveKit logs show it parsed the incoming SDP and deliberately omitted video, paste those lines here — I can help interpret them.
5) If device config is limited, consider a SIP media proxy that can rewrite SDP
• If the Fanvil cannot change packetization-mode or profile, an SDP/codec transcoding or rewrite gateway could alter the fmtp line to a compatible mode before LiveKit-SIP receives it. (This is an architectural option when endpoint configuration is not possible.)
What I can help with next
• If you paste the full `m=video`/`a=fmtp` block from the Fanvil INVITE and the livekit-sip log lines around the call setup, I’ll read them and point to the exact mismatch.
• If you can test changing Fanvil’s H264 settings (packetization-mode to 1, or profile to baseline), tell me the results and I’ll advise next steps.
You’re on the right track — the key is aligning H264 parameters (packetization-mode and profile-level-id) so LiveKit can accept and forward the video m-line into the WebRTC room. Paste the SDP or logs you want me to look at and I’ll help interpret them.victorious-quill-72146
03/10/2026, 1:52 PMtall-airline-16756
03/10/2026, 1:53 PMm=video line, LiveKit‑SIP will not accept/answer it, so LiveKit will only negotiate audio and publish an audio track into the room.
• That explains why you only see the m=audio answer and a published MICROPHONE track in the logs, and why Fanvil calls that offer video fail to complete as video sessions.
Why this is the case
• The telephony/SIP feature set in LiveKit is focused on PSTN/SIP audio integration (dialing, DTMF, noise cancellation, etc.). Video from SIP endpoints is not handled by the SIP bridge and therefore is not forwarded into WebRTC rooms.
Recommended alternatives
• Use a WebRTC‑capable intercom or camera that connects directly to LiveKit rooms (full video + audio support).
• If you must keep the Fanvil/SIP device, create a hybrid bridge:
◦ Keep the SIP call for audio via livekit-sip.
◦ Add a WebRTC participant to the same room for video (e.g., a browser or a small agent that publishes camera video). That participant can display video while SIP provides the audio.
• If you need a single-device solution and the Fanvil supports WebRTC natively, configure it to use WebRTC instead of SIP (if available).
If you’d like, I can help with:
• Guidance on adding a WebRTC agent to the room and routing the SIP audio to it.
• Options for WebRTC-capable intercoms or gateways that can bridge SIP video into WebRTC (note: bridging will typically require a media gateway that can transcode/rewrite SDP).
Tell me which alternative you prefer (bridge audio to a WebRTC video participant, move to WebRTC-native devices, or explore a media gateway), and I’ll provide step‑by‑step guidance.
Sources: sip | livekit/livekit_composite | DeepWiki | livekit/livekit_composite | DeepWiki | Vision | LiveKit Documentation | Agents telephony integration | LiveKit Documentationvictorious-quill-72146
03/10/2026, 3:37 PMtall-airline-16756
03/10/2026, 3:38 PMm=audio) because it does not negotiate or create video tracks from SIP offers. That’s why only the microphone track appears in logs and why the Fanvil call flow failed where video negotiation was expected.
Practical alternatives to get video in your room
• Use WebRTC‑capable devices: Have the intercom or a camera connect directly to the LiveKit room via WebRTC (full audio + video).
• Hybrid bridge: Keep the Fanvil on SIP for audio, and add a WebRTC participant (a small web agent or soft client) to the same room that publishes camera video. The room will then have audio from the SIP bridge and video from the WebRTC participant.
• Media gateway/transcoder: If you need the Fanvil to remain the single device and it cannot use WebRTC, use an intermediary media gateway that can transcode/rewrite SIP H.264 to a WebRTC-compatible stream, then publish that into LiveKit. (This is more complex and requires additional components.)
If you want, I can:
• Walk through adding a WebRTC video agent to your existing room and routing audio from livekit-sip to it.
• Suggest WebRTC-capable intercoms or inexpensive gateway options if you prefer a single-device solution.
• Help interpret any SIP/SDP logs you have for further validation (purely to document the SIP behavior — it won’t enable SIP video on LiveKit).
Which option would you like help with next?