SIP Video Call Support

Configuration Asterisk 18+ -- Last reviewed 2026-03-29 video codecs pjsip h264 vp8 webrtc configuration Found this useful? Upvote it. ×

SIP Video Call Support

Asterisk can relay video streams between endpoints. Video support requires enabling the right codecs on each endpoint and ensuring both sides negotiate a common video codec. Asterisk acts as a media relay (pass-through) for video, it does not transcode video.

PJSIP Endpoint Template (pjsip.conf)

; Base template for video-capable endpoints
[endpoint-video](!)
type = endpoint
transport = transport-udp
allow = !all,ulaw,alaw,opus,h264,vp8
max_video_streams = 1

Video Endpoint Examples (pjsip.conf)

; Hardware SIP phone with H.264 support
[1001](endpoint-internal,endpoint-video)
auth = 1001-auth
aors = 1001
callerid = Alice <1001>

; Softphone with multiple video codecs
[1002](endpoint-internal,endpoint-video)
auth = 1002-auth
aors = 1002
callerid = Bob <1002>
allow = !all,ulaw,opus,vp9,vp8,h264

WebRTC Video Endpoint (pjsip.conf)

[2001](endpoint-internal)
transport = transport-wss
auth = 2001-auth
aors = 2001
allow = !all,opus,vp9,vp8,h264
dtls_auto_generate_cert = yes
webrtc = yes
max_video_streams = 1

Video Codec Comparison

Codec Typical Use Notes
H.264 Hardware SIP phones, most softphones Most widely supported; requires codec_h264 module (pass-through only)
VP8 WebRTC browsers Open/royalty-free; supported by all modern browsers
VP9 WebRTC browsers Better compression than VP8; not all endpoints support it
H.263 / H.263+ Legacy video phones Older codec; low resolution; avoid if possible

Dialplan for Video Calls

[internal]
; Video calls work with standard Dial() -- no special dialplan needed.
; Both endpoints must share at least one video codec.
exten => _1XXX,1,Dial(PJSIP/${EXTEN},30)
 same => n,Hangup()

Verify Video Codec Support

*CLI> core show codecs video
  Codec   Frames/Pkt  Bytes/Frame  Codec
  h261    (20)         -            H.261 video
  h263    (20)         -            H.263 video
  h263p   (20)         -            H.263+ video
  h264    (20)         -            H.264 video
  vp8     (20)         -            VP8 video
  vp9     (20)         -            VP9 video

*CLI> pjsip show endpoint 1001
  ...
  allow: (ulaw|alaw|opus|h264|vp8)
  ...

How it works

  1. Pass-through only: Asterisk does not transcode video. It relays video packets between endpoints as-is. Both sides must negotiate a common video codec during the SDP offer/answer exchange, or the video stream will not be established (audio still works).
  2. allow codec list: Video codecs are added to the same allow line as audio codecs. Asterisk uses the order to set codec preference during negotiation. List preferred codecs first.
  3. max_video_streams: Controls how many simultaneous video streams an endpoint can have. Set to 1 for standard point-to-point video calls. Set higher for multiparty video conferencing via ConfBridge.
  4. WebRTC video: The webrtc = yes shorthand enables DTLS-SRTP, ICE, AVPF, and RTCP multiplexing. VP8 and VP9 are the standard video codecs for browser-based WebRTC clients. H.264 is also supported by most browsers.
  5. Codec negotiation: If endpoint A offers h264,vp8 and endpoint B supports only vp8, the call will use VP8 for video. If there is no overlap, the video portion of the call is dropped but audio proceeds normally.

Tips

User Notes

No notes yet. Be the first to contribute a tip or example.

Contribute a note

Share a tip, gotcha, or practical example. Keep it under 2000 characters. No questions (use the Asterisk community forums for support). Wrap code in backticks.

Moderated before publishing. Email never shown.

Related Snippets