Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Baresip using gst_video #36

Closed
bislinux opened this issue Feb 27, 2015 · 4 comments
Closed

Baresip using gst_video #36

bislinux opened this issue Feb 27, 2015 · 4 comments

Comments

@bislinux
Copy link

Hello Alfredh,
First of all, I want to say that you have done an amazing job with baresip. With the right pitch baresip could become very popular among new developers like myself.

So far I have managed to connect to another SIP client locally as well as through the stunserver. I have managed to establish both audio and video connection between the two remote UA. The config file for the above purpose is pasted below for others who need any reference. Now, what I am trying to do is create an appication wherein I receive video feed from the remote UA who have more than two webcam and display it on one display panel as merged.I have tried to use the gstreamer module (gst_video)to do the merge of the multiple video but I am not really able to get round it. I have the gst_video.so build successfully.(after adding lot of library dependencies )

I have a sample gstreamer code which does merging of video feed(as an example).
[code]
gst-launch -e videomixer name=mix ! ffmpegcolorspace ! xvimagesink
v4l2src device=/dev/video0 ! 'video/x-raw-yuv, framerate=24/1, width=320, height=240' !
videobox border-alpha=0 top=0 left=0 ! mix.
v4l2src device=/dev/video1 ! 'video/x-raw-yuv,width=320,height=240,framerate=30/1' !
videobox border-alpha=0 top=0 left=-320 ! mix.
[/code]

I want to use the above code in gst_video module to receive more than one cam feed from remote UA and display it on one output panel as merged(similar to ones used by security camera viewers). What I was trying to do so far was to edit the encode file (gst_video) and fit the gst-launch code(from above) into the gst_encoder_init function by replacing the appsrc part.On the config file I am using gst_video.so instead of avcodec.so Anyways, without much success with this approach I am looking for alternate solutions. I was wondering to change the rem-0.4.6/src/vidmix/vidmix.c file in some way to achieve my objective.I hope I was able to narrate my issue.

The config for establishing audio and video link

[code]

baresip configuration

------------------------------------------------------------------------------

Core

poll_method poll # poll, select

SIP

sip_trans_bsize 128
sip_listen 192.168..**:5060#Put your IP address;with the default port(5060)
sip_certificate cert.pem

Audio

audio_player alsa,default
audio_source alsa,default
audio_alert alsa,default
audio_srate 8000-48000
audio_channels 1-2

ausrc_srate 48000

auplay_srate 48000

ausrc_channels 0

auplay_channels 0

Video

video_source v4l2,/dev/video0

video_source fakevideo

video_display x11,nil
video_size 352x288
video_bitrate 500000
video_fps 25

AVT - Audio/Video Transport

rtp_tos 184

rtp_ports 10000-20000

rtp_bandwidth 512-1024 # [kbit/s]

rtcp_enable yes
rtcp_mux no
jitter_buffer_delay 5-10 # frames
rtp_stats no

Network

dns_server 10.0.0.1:53

net_interface eth0

BFCP

bfcp_proto udp

------------------------------------------------------------------------------

Modules

module_path .

UI Modules

module stdio.so

module cons.so

module evdev.so

module httpd.so

Audio codec Modules (in order)

module opus.so

module silk.so

module amr.so

module g7221.so

module g722.so

module g726.so

module g711.so

module gsm.so

module l16.so

module speex.so

module bv32.so

Audio filter Modules (in encoding order)

module vumeter.so

module sndfile.so

module speex_aec.so

module speex_pp.so

module plc.so

Audio driver Modules

module alsa.so

module portaudio.so

Video codec Modules (in order)

module gst_video.so

module avcodec.so

module vpx.so

Video filter Modules (in encoding order)

module selfview.so

Video source modules

module v4l.so

module v4l2.so

module avformat.so

module fakevideo.so

module x11grab.so

module cairo.so

Video display modules

module x11.so

module sdl2.so

Audio/Video source modules

module rst.so

module gst.so

Media NAT modules

module stun.so
module turn.so
module ice.so

module natpmp.so

Media encryption modules

module srtp.so

module dtls_srtp.so

------------------------------------------------------------------------------

Temporary Modules (loaded then unloaded)

module_tmp uuid.so
module_tmp account.so

------------------------------------------------------------------------------

Application Modules

module_app auloop.so
module_app contact.so
module_app menu.so

module_app mwi.so

module_app natbd.so

module_app presence.so

module_app syslog.so

module_app vidloop.so

------------------------------------------------------------------------------

Module parameters

cons_listen 0.0.0.0:5555

http_listen 0.0.0.0:8000

evdev_device /dev/input/event0

Speex codec parameters

speex_quality 7 # 0-10
speex_complexity 7 # 0-10
speex_enhancement 0 # 0-1
speex_vbr 0 # Variable Bit Rate 0-1
speex_vad 0 # Voice Activity Detection 0-1
speex_agc_level 8000

NAT Behavior Discovery

natbd_server creytiv.com
natbd_interval 600 # in seconds

Selfview

video_selfview window # {window,pip}
selfview_size 64x64

ICE

ice_turn no
ice_debug no
ice_nomination regular # {regular,aggressive}
ice_mode full # {full,lite}

[/code]

@bislinux
Copy link
Author

bislinux commented Mar 4, 2015

Hello Alfredh,
I found a solution to my above problem.However,my present goal is to write some information on my video frame. So far i have managed to use your draw.c file to draw rectangle on the remote frame.However, I was wondering if you had any source code to write letters and numbers onto the frame. The format of the frame that was processed initaially was in YUV422 which was not recognised by my system so I had to convert it to YUV420 first and then convert it into RGB. The reason for choosing RGB format is that it would allow me to copy memory locations . This in turn would allow me to create more than more video frame, which is my goal as stated in the problem above. So, if you have any code to write letters and number onto the frame buffer or any suggestions how to achive this , it would be great..Thanks..

@lmangani
Copy link
Contributor

Could you share some detail on your previous resolution and/or changes to gstvideo for others who might be interested before just extending this Issue with a new question?

@alfredh
Copy link
Collaborator

alfredh commented Jun 14, 2015

the cairo module is using libcairo to draw letters, please have a look ..

aside from that, I think we should implement a very simple text-drawing function
in librem for monospace fonts.

close this ticket for now.

@alfredh alfredh closed this as completed Jun 14, 2015
@michaelkrog
Copy link

@bislinux Just as @lmangani I am also interested in how you got it working?

Please explain. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants