Hi Muge, Yes i think you're right. When i run pjsua i do load ALL the plugins for VLC from the plugins directory. Maybe i should remove what i don't need from there. Regarding your question about getting SDP information i do it in the callback on_call_state(pjsua_call_id call_id, pjsip_event *e). When SDP negotiation is finished and everyone is happy in terms of sdp parameters, and when the callback's event is CONFIRMED, i acquire the call using the call_id as in acquire_call("Something Something", call_id, &call, &dlg). I then grab the local and remote SDP's using: pjmedia_sdp_neg_get_active_local(call->inv->neg, &local_sdp); pjmedia_sdp_neg_get_active_remote(call->inv->neg, &remote_sdp); Once i get the two SDP's above, all i do is check for the video parameters. I think it's in remote_sdp->conn->addr and remote_sdp->media[i]->desc.port and remote_sdp->media[i]->desc.fmt[0] and so on and so forth. Just grab the things you think you might need from the remote SDP (and local SDP) for whichever player you are using. I'm using VLC so IP address, port and codec are the main things for me. I also do a LOT of checks but that's the above concept is mainly how i do it. Then you can write the video.sdp file. which you already how it looks like. Then you can proceed on how you want to implement your video handling from here. If you are using VLC there are a few ways to do that, you just need to pick the one you feel more comfortable with. I personally use the --extraintf and --vlm-conf method but that's just me. Hubert On Thu, Oct 16, 2008 at 2:18 AM, P.Muge Ersoy <muge.ersoy at gmail.com> wrote: > Hi Hubert; > > I tried your way of vlc video call.. I guess the problem at your cpu is > because of loading to many dll ( vlc and plugins) during the call.. > My computer was forced also.. > I am using VStudio so i am using libvlc.dll... actually i ve tried to make > .def filen and convert libvlc.lib but lib didnt work.. I guess it was > because new api of vlc.. > > Did you code to get SDP information from pjsua_app.c or is there any Pjsua > api to get active sdp information ? > > muge > > > > On Wed, Oct 15, 2008 at 2:07 AM, Hubert Langevin <hubertlangevin at gmail.com> > wrote: >> >> Hi Muge, >> >> Yeah that's why i didn't follow that guide. It's got some good tips on >> which functions you use but the whole thing is a bit too confusing for >> me and just didn't work for me. I am using the old version of VLC, i'm >> not sure how to call it. It's at this link below. Again the old >> version is simple for what i want to accomplish. >> >> >> http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc__old.html >> >> I was reading what you mentioned earlier, about the fact that you want >> video calls between pjsua to other software clients and soft phones/ >> VoIP Phones. Can't you do that already using VLC both ways? I mean for >> video calls all you need is modify your outgoing SDP so it contains >> video media at a certain port that you specify at startup so the >> remote video phones can read it and you read their corresponding SDP >> and start one instance of VLC that reads and decodes at the same time. >> I do that using VLC_AddIntf() for multiple video streams incoming and >> outgoing. The audio is still handled by pjsip during that same sdp >> exchange and the video by vlc. For any re-invites, for example change >> of remote video port or remote video codec, just destroy the vlc >> instance in on_call_media() callback and re-create it using the new >> values from the re-invites. I mean it is still a video call that i >> make to other video phones. I did a test from my pjsua to an eyebeam >> (x-lite) video phone and everything was fine. Audio was fine and video >> was showing as well. Actually video was very pixelated, even though I >> did specify H264 from Eyebeam and pjsua. Maybe eyebeam and videolan >> have different implementations of H264 i'm not sure. But video calls >> between pjsua <===> pjsua works perfectly. >> >> And VLC does support SRTP from what i've seen. I'm using pjsua too. >> Are you using libvlc.lib and libvlc.dll? >> >> Hubert >> >> On Wed, Oct 15, 2008 at 9:36 AM, P.Muge Ersoy <muge.ersoy at gmail.com> >> wrote: >> > yeah i am not getting anything also.. >> > may i ask which version of vlc you are using? >> > >> > I tried it but there are some errors like below >> > main interface error: no interface module matched "hotkeys,none" >> > >> > On Wed, Oct 15, 2008 at 1:04 AM, Hubert Langevin >> > <hubertlangevin at gmail.com> >> > wrote: >> >> >> >> Hi Muge, >> >> >> >> Oh that tutorial. Yeah i started off that tutorial. My implementation >> >> of video is very very similar. I use the commands buffer, >> >> VLC_Create(), VLC_Init(), VLC_ADDINTF(), etc. But i found the guide a >> >> bit too complicated/confusing and overloaded for what i wanted to do. >> >> Especially his definitions in the vlc.h file. Don't need all that. >> >> What i do is just get the remote IP, port, codec from remote_sdp and >> >> use a couple of VLC functions to stream and decode. Done. That >> >> tutorial i found was too much for what i simply wanted to do. Plus, i >> >> was never good at spanish. ;) >> >> >> >> Hubert >> >> >> >> >> >> On Wed, Oct 15, 2008 at 5:27 AM, P.Muge Ersoy <muge.ersoy at gmail.com> >> >> wrote: >> >> > Hi Hubert; >> >> > >> >> > I have a question for you .. >> >> > >> >> > Did you use the below tutorial for vlc display inside pjsip? >> >> > http://wiki.videolan.org/LibVLC_Visual_C >> >> > >> >> > >> >> > Muge >> >> > >> >> > >> >> > >> >> > On Tue, Oct 14, 2008 at 12:51 AM, Hubert Langevin >> >> > <hubertlangevin at gmail.com> >> >> > wrote: >> >> >> >> >> >> Hello Muge, >> >> >> >> >> >> Yes my implementation sounds different. I guess i took the easiest >> >> >> and >> >> >> quickest way to get video working. I do write the file.sdp file just >> >> >> like you and get VLC to read and decode the sdp file, but i also use >> >> >> VLC to stream. >> >> >> >> >> >> To answer your question yes i did install Microsoft Platform SDK... >> >> >> Hmmm... i can't remember which version though. >> >> >> >> >> >> Quick question. Since you are already using VLC to decode, why not >> >> >> use >> >> >> it to stream as well? You won't have to take care of streams, ports, >> >> >> transports, etc... It might be easier for you. I mean you are >> >> >> already >> >> >> using VLC to decode, might as well use it to encode. Makes your life >> >> >> easier. Maybe i'm missing something that you want to accomplish. >> >> >> >> >> >> What do you think? >> >> >> >> >> >> Hubert >> >> >> >> >> >> On Tue, Oct 14, 2008 at 12:06 AM, P.Muge Ersoy >> >> >> <muge.ersoy at gmail.com> >> >> >> wrote: >> >> >> > Hi Hubert; >> >> >> > >> >> >> > Actually my implementation is quite different from yours. I want >> >> >> > pjsip >> >> >> > to >> >> >> > stream h264 from one side to other.. You choose VLC to do it.. >> >> >> > I changed pjmedia_session_create and pjmedia_stream_create >> >> >> > functions >> >> >> > as >> >> >> > well >> >> >> > as SDP negotiation. >> >> >> > >> >> >> > I want vlc to decode this h264 stream with file.sdp which includes >> >> >> > remote ip >> >> >> > and port information with codec. >> >> >> > >> >> >> > Did you install Microsoft Platform SDK for direct show headers ? >> >> >> > >> >> >> > Muge >> >> >> > >> >> >> > On Sat, Oct 11, 2008 at 8:53 AM, Hubert Langevin >> >> >> > <hubertlangevin at gmail.com> >> >> >> > wrote: >> >> >> >> >> >> >> >> Hi Mugo, >> >> >> >> >> >> >> >> No i don't create another stream for video. I just make sure the >> >> >> >> port >> >> >> >> ranges for audio and video don't overlap. For example for audio i >> >> >> >> do >> >> >> >> the usual pjsip thing, start the port range at 4000 and with a >> >> >> >> maximum >> >> >> >> of 32 calls it'll go up to 4063. For the video i've got a config >> >> >> >> file >> >> >> >> that pjsua_app.c reads at startup. In there i specify what port >> >> >> >> video >> >> >> >> should start at. And i usually put it at 6000. When the >> >> >> >> application >> >> >> >> runs it checks if those ports are free or not and starts using >> >> >> >> them. >> >> >> >> This way my audio and video ports don't overlap. >> >> >> >> >> >> >> >> When i create my SDP, and before i send the offer, the initial >> >> >> >> port >> >> >> >> for video is the one that i specified in the video config file. >> >> >> >> After >> >> >> >> having sent the offer and read the incoming remote_sdp, what i >> >> >> >> pass >> >> >> >> to >> >> >> >> VLC is just the port number to transmit to, IP address to >> >> >> >> transmit >> >> >> >> to, >> >> >> >> transcoding codec, video bit rate and the mux type. I pass it to >> >> >> >> the >> >> >> >> commands buffer of VLC and use the functions VLC_Create(), >> >> >> >> VLC_Init(int, int, char **s), VLC_Play(int),VLC_FullScreen(int), >> >> >> >> etc... So to answer your question no i don't let PJSIP handle the >> >> >> >> video streams. I use PJSIP only for SDP negotiation that's it. I >> >> >> >> leave >> >> >> >> PJSIP to take care of all the audio streams and ports. And i keep >> >> >> >> the >> >> >> >> video part to VLC, including its transport and everything else. >> >> >> >> PJSIP >> >> >> >> doesn't touch that part. >> >> >> >> >> >> >> >> I can see you're using H264. I am too. Did you ever have two >> >> >> >> incoming >> >> >> >> H264 streams on your PC? How was your CPU usage?. When i have >> >> >> >> more >> >> >> >> than one on my PC my CPU usage doesn't look too good.. >> >> >> >> >> >> >> >> Hubert >> >> >> >> >> >> >> >> On Fri, Oct 10, 2008 at 7:26 PM, P.Muge Ersoy >> >> >> >> <muge.ersoy at gmail.com> >> >> >> >> wrote: >> >> >> >> > Hi Hubert; >> >> >> >> > >> >> >> >> > Haven't you created another stream for video ? >> >> >> >> > >> >> >> >> > As far as i understand after SDP negotiation you get if there >> >> >> >> > is >> >> >> >> > video >> >> >> >> > stream or not... >> >> >> >> > >> >> >> >> > This is my OK answer form pjsip to another sip client >> >> >> >> > >> >> >> >> > m=audio 4000 RTP/AVP 3 >> >> >> >> > a=rtpmap:3 GSM/8000 >> >> >> >> > m=video 4002 RTP/AVP 98 >> >> >> >> > a=rtpmap:98 H264/90000 >> >> >> >> > a=recvonly >> >> >> >> > >> >> >> >> > Everything seems pretty. But after streams are created Pjsip >> >> >> >> > mixes >> >> >> >> > the >> >> >> >> > ports >> >> >> >> > with audio and video and it all crashes ... >> >> >> >> > How is your point of view to audio and video streams in your >> >> >> >> > application. >> >> >> >> > >> >> >> >> > Regards >> >> >> >> > Muge >> >> >> >> > >> >> >> >> > >> >> >> >> > On Fri, Oct 10, 2008 at 1:02 AM, Hubert Langevin >> >> >> >> > <hubertlangevin at gmail.com> >> >> >> >> > wrote: >> >> >> >> >> >> >> >> >> >> Hello everyone, >> >> >> >> >> >> >> >> >> >> I'm using VLC for video streaming in pjsip. I haven't >> >> >> >> >> completely >> >> >> >> >> finished it yet but i can now make some video calls between >> >> >> >> >> PCs. >> >> >> >> >> In >> >> >> >> >> the callback on_call_state() in pjsua_app.c when i get an >> >> >> >> >> incoming >> >> >> >> >> call i check if it has video media. I do this by grabbing the >> >> >> >> >> local_sdp and remote_sdp using call_id, acquire_call, >> >> >> >> >> pjmedia_sdp_neg_get_active_local(), >> >> >> >> >> pjmedia_sdp_neg_get_active_remote(), etc. I also had to change >> >> >> >> >> a >> >> >> >> >> few >> >> >> >> >> things in negotiating SDP's. If i have video media i just grab >> >> >> >> >> the >> >> >> >> >> remote IP and port number out of the remote_sdp, put these >> >> >> >> >> values >> >> >> >> >> in >> >> >> >> >> the commands buffer for VLC and start playing from remote >> >> >> >> >> stream >> >> >> >> >> and >> >> >> >> >> streaming off my webcam using the VLC functions: VLC_Create(), >> >> >> >> >> VLC_Init(int, int, char **s), VLC_Play(int), VLC_AddIntf(int, >> >> >> >> >> char >> >> >> >> >> *s, >> >> >> >> >> int, int), VLC_Die(), VLC_CleanUp(), VLC_Destroy(), >> >> >> >> >> VLC_Pause(int), >> >> >> >> >> VLC_Stop(int), VLC_FullScreen(int). It works fine but as soon >> >> >> >> >> as >> >> >> >> >> I >> >> >> >> >> get >> >> >> >> >> two video calls up on my PC my CPU usage jumps really high and >> >> >> >> >> stays >> >> >> >> >> there for the duration of the two calls. Is it because I'm >> >> >> >> >> using >> >> >> >> >> the >> >> >> >> >> wrong type of video codec? I'm currently using H264. >> >> >> >> >> >> >> >> >> >> Any ideas would be greatly appreciated. >> >> >> >> >> >> >> >> >> >> Hubert >> >> >> >> >> >> >> >> >> >> On Fri, Oct 10, 2008 at 4:39 AM, Tiago R?s >> >> >> >> >> <tiagores at gmail.com> >> >> >> >> >> wrote: >> >> >> >> >> > Hello all, >> >> >> >> >> > Thanks for your responses. >> >> >> >> >> > >> >> >> >> >> > My Idea is to make some kind of videoconference. It should >> >> >> >> >> > be >> >> >> >> >> > signaled >> >> >> >> >> > with >> >> >> >> >> > SIP, and stream via RTP. >> >> >> >> >> > I'm able to capture video using directshow libraries, and it >> >> >> >> >> > would >> >> >> >> >> > be >> >> >> >> >> > great >> >> >> >> >> > to use transport functions of PJSIP to do the rest. >> >> >> >> >> > What do you think? >> >> >> >> >> > >> >> >> >> >> > Thanks, >> >> >> >> >> > Tiago >> >> >> >> >> > >> >> >> >> >> > 2008/10/9 P.Muge Ersoy <muge.ersoy at gmail.com> >> >> >> >> >> >> >> >> >> >> >> >> Hi; >> >> >> >> >> >> >> >> >> >> >> >> Did you able to start two way stream with 264 . I have some >> >> >> >> >> >> port >> >> >> >> >> >> issues >> >> >> >> >> >> .. >> >> >> >> >> >> video stream is using audio streams port.. i will be >> >> >> >> >> >> handling >> >> >> >> >> >> it >> >> >> >> >> >> soon i >> >> >> >> >> >> guess.. >> >> >> >> >> >> >> >> >> >> >> >> and what are you using for displaying stream , ? VLC or >> >> >> >> >> >> ffmpeg >> >> >> >> >> >> .? >> >> >> >> >> >> >> >> >> >> >> >> muge >> >> >> >> >> >> >> >> >> >> >> >> On Thu, Oct 9, 2008 at 4:27 PM, Perry Ismangil >> >> >> >> >> >> <perry at pjsip.org> >> >> >> >> >> >> wrote: >> >> >> >> >> >>> >> >> >> >> >> >>> emanuele bottegoni wrote: >> >> >> >> >> >>>> >> >> >> >> >> >>>> Hi Tiago, >> >> >> >> >> >>>> >> >> >> >> >> >>>> I've added negotation to receive H264 streams,is it >> >> >> >> >> >>>> interesting >> >> >> >> >> >>>> for >> >> >> >> >> >>>> you? >> >> >> >> >> >>>> Tell me your problem and if it's possible I can help you. >> >> >> >> >> >>>> >> >> >> >> >> >>>> Emanuele Bottegoni >> >> >> >> >> >>>> >> >> >> >> >> >>>> >> >> >> >> >> >>> >> >> >> >> >> >>> Hi Emanuele, >> >> >> >> >> >>> >> >> >> >> >> >>> Certainly, adding video support is always interesting. >> >> >> >> >> >>> Contact >> >> >> >> >> >>> me >> >> >> >> >> >>> if >> >> >> >> >> >>> you >> >> >> >> >> >>> are willing to write a wiki page or a blog post about it. >> >> >> >> >> >>> >> >> >> >> >> >>> Thank you for your support, >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> -- >> >> >> >> >> >>> Perry Ismangil >> >> >> >> >> >>> http://www.pjsip.org >> >> >> >> >> >>> >> >> >> >> >> >>> _______________________________________________ >> >> >> >> >> >>> Visit our blog: http://blog.pjsip.org >> >> >> >> >> >>> >> >> >> >> >> >>> pjsip mailing list >> >> >> >> >> >>> pjsip at lists.pjsip.org >> >> >> >> >> >>> >> >> >> >> >> >>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> >> >> Visit our blog: http://blog.pjsip.org >> >> >> >> >> >> >> >> >> >> >> >> pjsip mailing list >> >> >> >> >> >> pjsip at lists.pjsip.org >> >> >> >> >> >> >> >> >> >> >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> >> >> >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> > _______________________________________________ >> >> >> >> >> > Visit our blog: http://blog.pjsip.org >> >> >> >> >> > >> >> >> >> >> > pjsip mailing list >> >> >> >> >> > pjsip at lists.pjsip.org >> >> >> >> >> > >> >> >> >> >> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> >> Visit our blog: http://blog.pjsip.org >> >> >> >> >> >> >> >> >> >> pjsip mailing list >> >> >> >> >> pjsip at lists.pjsip.org >> >> >> >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> > >> >> >> >> > >> >> >> >> > _______________________________________________ >> >> >> >> > Visit our blog: http://blog.pjsip.org >> >> >> >> > >> >> >> >> > pjsip mailing list >> >> >> >> > pjsip at lists.pjsip.org >> >> >> >> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> > >> >> >> >> > >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> Visit our blog: http://blog.pjsip.org >> >> >> >> >> >> >> >> pjsip mailing list >> >> >> >> pjsip at lists.pjsip.org >> >> >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> > >> >> >> > >> >> >> > _______________________________________________ >> >> >> > Visit our blog: http://blog.pjsip.org >> >> >> > >> >> >> > pjsip mailing list >> >> >> > pjsip at lists.pjsip.org >> >> >> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> > >> >> >> > >> >> >> >> >> >> _______________________________________________ >> >> >> Visit our blog: http://blog.pjsip.org >> >> >> >> >> >> pjsip mailing list >> >> >> pjsip at lists.pjsip.org >> >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> > >> >> > >> >> > _______________________________________________ >> >> > Visit our blog: http://blog.pjsip.org >> >> > >> >> > pjsip mailing list >> >> > pjsip at lists.pjsip.org >> >> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> > >> >> > >> >> >> >> _______________________________________________ >> >> Visit our blog: http://blog.pjsip.org >> >> >> >> pjsip mailing list >> >> pjsip at lists.pjsip.org >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> > >> > >> > _______________________________________________ >> > Visit our blog: http://blog.pjsip.org >> > >> > pjsip mailing list >> > pjsip at lists.pjsip.org >> > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> > >> > >> >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip at lists.pjsip.org >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > >