Video in Asterisk
The video features in Asterisk 1.4 include:
- pass-through calling
- playback (expect some delay)
- record
- IVR
- voicemail (recording and playback, with difficulties for greeting messages)
Some channels have support for video calls in Asterisk:
The H.323 channels (chan_h323, chan_oh323, chan_ooh323) do not allow video calls at this moment; however, the ChangeLog of ooh323 notes for release 0.6: “Added H.263 video codec negotiation handling”?!
Supported video codecs:
- H.261
- H.263
- H.263p (Asterisk 1.4)
- H.264 (Asterisk 1.4)
- MPEG4 (Asterisk 10)
- H.263-Sorenson (used by chan_rtmp, H263 frame with a ‘RTMP’ header).
It appears, however, that at least Asterisk 1.4.24 does not know about the file format h263p, which means playback and recording of calls with that codec is not supported.
Note that video support in Asterisk 1.4 is still in infancy (see general discussion below). To summarize:
- Asterisk 1.4 has an issue regarding video codec negotiation
- Advanced video attributes such as profile/level (H.263+, MPEG4, H.264), bandwidth, standard annexes, framerate and image size are not exchanged and negotiated by Asterisk.
- Asterisk has no capability to playback classical video formats such as .mov, MP4 or 3gp files.
- Asterisk does not provide any video transcoding capabilities
In order to enable video in Asterisk, modify sip.conf to add:
[general]
videosupport=yes
Then for each SIP user/peer, you have to add the supported codecs (see example in this page). if you want to avoid video codec negotiation in Asterisk 1.4.x unpatched, make sure that you enable a single video codec in sip.conf. The more adventurous may try the patch mentioned in this page. Of course, codecs need to be supported by the SIP phone connected to Asterisk. Asterisk will work in Passthrough mode for video.
Video IVR for Asterisk
- Voximal VoiceXML browser Video IVR / media server for Asterisk. It manages video interaction from the VoiceXML 2.1 (Play and record video files, TextToSpeech, TextToVideo).
Video converter for Asterisk
- FFasterisk converter It generates video contents for Asterisk (extension .h263; h263p or h264). It enables the conversion of video files to a pair of .H.263 video and .wav files compatible with Asterisk standard video rendering (using playback applications).
Video Conferencing Software for Asterisk
- Voximal / Vonference : Video conference, based on video switching (old Konference application, with video support). It could be use for split or join the video/audio streams for example.
- app_conference has some limited video support, see app_videoswitch
- Confiance solution (deprecated, for Asterisk 1.4.3 only)
- Mediamixer of Sergio Murillo
- VMukti Open Source VVoIP solution by VMukti.
General discussion on video support for Asterisk
In asterisk 1.4, video codec negotiation is faulty. A patch has been proposed by IVèS but not accepted. Also, another independent work called Asterisk videocaps was carried out to enable proper SDP negotiation of fmtp attributes related to video. This was to be merged in the trunk to be included in Asterisk 1.6.
In asterisk 1.6, a general overhaul of video support for channels was planned but no precise technical direction was set. Some would like to simply merge videocaps and build on it. Some may have more ambitious plans. Refer the Asterisk video mailing list
Another issue is also the need for a file format to store video prompts. Currently, Asterisk dumps the content of RTP packets including some timing information in .h263, ph263p, .h264 files. Sergio Murillo MP4 asterisk apps that are capable of playing or recording 3GP/MP4 hinted files. Some patent-related issue probably prevents Digium from integrating those into Asterisk software.
Video transcoding is also not available and will probably not be integrated into Asterisk. Using ffmpeg libraries for this would again bring licensing and patent issues. Transcoding inside Asterisk would also bring performance issues to be dealt with. Again, Sergio proposes a limited transcoding app build on ffmpeg called app_transcoder. Limited in the current version but would be easy to extend for those who are skilled with ffmpeg programming.
The last topic of interest is the ability to process H324M ISDN / 3G video calls with Asterisk using again some Sergio’s dev. A dedicated page in this wiki details the topic.
Clients known to support video calls with Asterisk:
- AuPix SIP and H.323 video phone
- Call Image Videotel SIP hardphone
- Ekiga SIP H323 Video- H261. MPEG4/H263 in SVN –
- GXV-3000 Grandstream h264 and h263 Sip Video Phone (Hardware phone)
- Huawei ViewPoint 8220
- iFon: for PocketPC PDAs
- IVeS: Live video plugin (webphone including h263, h263p and h264)
- IVRPowers Webclient
- Jitsi: SIP/Jingle Client (Java)
- Kapanga Sip Video Phone (h263, h263p and h264, full configuration)
- Linphone for Linux PC’s – supports vp8(WebM), H.263p, Theora, Snow and MPEG4V. H.263p works well with Asterisk
- Microsoft Windows Messenger for Windows PC’s
- Milliphone Open source multi-platform softphone
- Wooksung WVP-2000 SIP (hardware phone)
- Xten eyeBeam for Windows and OSX
- Zoiper Communicator Multi-platform SIP/IAX phone with video and messaging support
Also see: SIP Video Phones
There is also some information how to make an 3G-H.324M (UMTS Video) – SIP gateway with asterisk: Asterisk H324M
Video Voicemail issue
When you record a message to a voicemail, Asterisk records video too… the only problem cames that first seconds are degraded to Intra-frame (first frame) loss while greeting message…
Call Image Videotel has special feature to get a perfect recording without any modifications on asterisk (Note: this link is dead. Seems that videotel has changed its name or is out of business).
Also: if you record a message using a given codec (let’s say H.264) and retrieve the message while negotiating another codec, the video part of the message will not be rendered as no transcoding function is available.
Windows Messenger and Asterisk
example sip.conf:
[general]
videosupport=yes
[video2]
type=friend
username=video2
secret=hidden
host=dynamic
context=from-camera
callerid=Video 2 <1222>
canreinvite=no
disallow=all ; Windows Messenger will choose wrong codecs if you allow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
For detailed configuration notes:
Flash/RTMP
Flash/RTMP is an add-on channel driver for any VXI*/Asterisk-based PBX systems to manage any bi-directional voice or video calls from a Web browser with a Flash player. The Real-Time Messaging Protocol (RTMP) is a proprietary protocol developed by Adobe Systems for streaming audio, video and data over the Internet, between a Flash® player and a server. Adobe Flash® is the industry-leading web application environment, present in web browsers on 99% of the world’s computers. Flash can access the webcam and microphone on a PC and works through any firewall.
See also
- TMC net: Mobile video standards (Sep 2008)
- Asterisk | FAQ | Introduction | Tips & Tricks