Производительность видео через freeswitch

1,669 views
Skip to first unread message

Denis Jakovlev

unread,
Jul 10, 2015, 2:45:20 AM7/10/15
to freesw...@googlegroups.com
Приветствую камарады.
Вопрос в следующем. Использую для видео несколько разных библиотек (sip.js, jssip). Проблем особых нет ни с коммуникацией ни с записью видео. Кроме одной неприятности. Довольно часто возникают какие-то не понятные фризы при коммуникации. Будь в начале при коннекте одна из сторон может повиснуть на секунд 10-20. Или во время разговора бывает, что зависнет изображение, но звук при этом бегает. При этом в логах ничего подозрительного. Ну разве что фреймрейт снижает-повышает в зависимости от необходимостей. Что можно сделать для улучшения качества? Есть какие-то советы от опытных пользователей? Статьи по улучшению перфоманса читал, особо не помогает. Что-то еще можно сделать? Все это у меня крутится на Debian8. 1.7.0 версия FreeSwitch.

Диалплан простенький
<extension name="test4">
 
<condition field="destination_number" expression="^(6083)$">
   
<action application="export" data="nolocal:absolute_codec_string=OPUS,VP8"/>
   
<action application="set" data="hangup_after_bridge=true"/>
   
<action application="export" data="record_concat_video=true"/>
   
<!-- Shouldn't bind the same file name to both legs,
         if both press *2 it clobbers the file -->

   
<!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] -->
   
<action application="bind_meta_app" data="2 a i record_session::/usr/local/freeswitch/recordings/${strftime(%Y%m%d_%H%M%S)}_${destination_number}_a.mp4"/>
   
<action application="bind_meta_app" data="2 b i record_session::/usr/local/freeswitch/recordings/${strftime(%Y%m%d_%H%M%S)}_${destination_number}_b.mp4"/>
   
<action application="bridge" data="user/1003${sip_profile}"/>
 
</condition>
</extension>

vars.xml тоже почти без правок

<include>
 
<!-- Preprocessor Variables
       These are introduced when configuration strings must be consistent across modules.
       NOTICE: YOU CAN NOT COMMENT OUT AN X-PRE-PROCESS line, Remove the line instead.
       
       WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
       
       YOU SHOULD CHANGE THIS default_password value if you don't want to be subject to any
       toll fraud in the future.  It's your responsibility to secure your own system.
       
       This default config is used to demonstrate the feature set of FreeSWITCH.
       
       WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
  -->

 
<X-PRE-PROCESS cmd="set" data="default_password=*******"/>
   
<X-PRE-PROCESS cmd="set" data="timezone=Europe/Prague"/>


 
<!-- Did you change it yet? -->
 
<!--
      The following variables are set dynamically - calculated if possible by freeswitch - and
      are available to the config as $${variable}.  You can see their calculated value via fs_cli
      by entering eval $${variable}
     
      hostname
      local_ip_v4
      local_mask_v4
      local_ip_v6
      switch_serial
      base_dir
      recordings_dir
      sound_prefix
      sounds_dir
      conf_dir
      log_dir
      run_dir
      db_dir
      mod_dir
      htdocs_dir
      script_dir
      temp_dir
      grammar_dir
      certs_dir
      storage_dir
      cache_dir
      core_uuid
      zrtp_enabled
      nat_public_addr
      nat_private_addr
      nat_type
     
  -->





 
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/>


 
<!--
      This setting is what sets the default domain FreeSWITCH will use if all else fails.
     
      FreeSWICH will default to $${local_ip_v4} unless changed.  Changing this setting does
      affect the sip authentication.  Please review conf/directory/default.xml for more
      information on this topic.
  -->

 
<!-- <X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
  <X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>-->

 
<X-PRE-PROCESS cmd="set" data="domain=sip1.applicloud.com"/>
 
<X-PRE-PROCESS cmd="set" data="domain_name=sip1.applicloud.com"/>
 
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
 
<X-PRE-PROCESS cmd="set" data="use_profile=external"/>
 
<X-PRE-PROCESS cmd="set" data="rtp_sdes_suites=AEAD_AES_256_GCM_8|AEAD_AES_128_GCM_8|AES_CM_256_HMAC_SHA1_80|AES_CM_192_HMAC_SHA1_80|AES_CM_128_HMAC_SHA1_80|AES_CM_256_HMAC_SHA1_32|AES_CM_192_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_32|AES_CM_128_NULL_AUTH"/>
 
<!--
      Enable ZRTP globally you can override this on a per channel basis
     
      http://wiki.freeswitch.org/wiki/ZRTP (on how to enable zrtp)
  -->

 
<X-PRE-PROCESS cmd="set" data="zrtp_secure_media=true"/>
 
<!--
      NOTICE: When using SRTP it's critical that you do not offer or accept
      variable bit rate codecs, doing so would leak information and possibly
      compromise your SRTP stream. (FS-6404)


      Supported SRTP Crypto Suites:


      AEAD_AES_256_GCM_8
      ____________________________________________________________________________
      This algorithm is identical to AEAD_AES_256_GCM (see Section 5.2 of
      [RFC5116]), except that the tag length, t, is 8, and an
      authentication tag with a length of 8 octets (64 bits) is used.
      An AEAD_AES_256_GCM_8 ciphertext is exactly 8 octets longer than its
      corresponding plaintext.




      AEAD_AES_128_GCM_8
      ____________________________________________________________________________
      This algorithm is identical to AEAD_AES_128_GCM (see Section 5.1 of
      [RFC5116]), except that the tag length, t, is 8, and an
      authentication tag with a length of 8 octets (64 bits) is used.
      An AEAD_AES_128_GCM_8 ciphertext is exactly 8 octets longer than its
      corresponding plaintext.




      AES_CM_256_HMAC_SHA1_80 | AES_CM_192_HMAC_SHA1_80 | AES_CM_128_HMAC_SHA1_80
      ____________________________________________________________________________
      AES_CM_128_HMAC_SHA1_80 is the SRTP default AES Counter Mode cipher
      and HMAC-SHA1 message authentication with an 80-bit authentication
      tag. The master-key length is 128 bits and has a default lifetime of
      a maximum of 2^48 SRTP packets or 2^31 SRTCP packets, whichever comes
      first.




      AES_CM_256_HMAC_SHA1_32 | AES_CM_192_HMAC_SHA1_32 | AES_CM_128_HMAC_SHA1_32
      ____________________________________________________________________________
      This crypto-suite is identical to AES_CM_128_HMAC_SHA1_80 except that
      the authentication tag is 32 bits. The length of the base64-decoded key and
      salt value for this crypto-suite MUST be 30 octets i.e., 240 bits; otherwise,
      the crypto attribute is considered invalid.




      AES_CM_128_NULL_AUTH
      ____________________________________________________________________________
      The SRTP default cipher (AES-128 Counter Mode), but to use no authentication
      method.  This policy is NOT RECOMMENDED unless it is unavoidable; see
      Section 7.5 of [RFC3711].




      SRTP variables that modify behaviors based on direction/leg:


      rtp_secure_media
      ____________________________________________________________________________
      possible values:
          mandatory - Accept/Offer SAVP negotiation ONLY
          optional  - Accept/Offer SAVP/AVP with SAVP preferred
          forbidden - More useful for inbound to deny SAVP negotiation
          false     - implies forbidden
          true      - implies mandatory


      default if not set is accept SAVP inbound if offered.




      rtp_secure_media_inbound | rtp_secure_media_outbound
      ____________________________________________________________________________
      This is the same as rtp_secure_media, but would apply to either inbound
      or outbound offers specifically.




      How to specify crypto suites:
      ____________________________________________________________________________
      By default without specifying any crypto suites FreeSWITCH will offer
      crypto suites from strongest to weakest accepting the strongest each
      endpoint has in common.  If you wish to force specific crypto suites you
      can do so by appending the suites in a comma separated list in the order
      that you wish to offer them in.


      Examples:


          rtp_secure_media=mandatory:AES_CM_256_HMAC_SHA1_80,AES_CM_256_HMAC_SHA1_32
          rtp_secure_media=true:AES_CM_256_HMAC_SHA1_80,AES_CM_256_HMAC_SHA1_32
          rtp_secure_media=optional:AES_CM_256_HMAC_SHA1_80
          rtp_secure_media=true:AES_CM_256_HMAC_SHA1_80


      Additionally you can narrow this down on either inbound or outbound by
      specifying as so:


          rtp_secure_media_inbound=true:AEAD_AES_256_GCM_8
          rtp_secure_media_inbound=mandatory:AEAD_AES_256_GCM_8
          rtp_secure_media_outbound=true:AEAD_AES_128_GCM_8
          rtp_secure_media_outbound=optional:AEAD_AES_128_GCM_8




      rtp_secure_media_suites
      ____________________________________________________________________________
      Optionaly you can use rtp_secure_media_suites to dictate the suite list
      and only use rtp_secure_media=[optional|mandatory|false|true] without having
      to dictate the suite list with the rtp_secure_media* variables.
  -->

 
<!--
       Examples of codec options: (module must be compiled and loaded)
       
       codecname[@8000h|16000h|32000h[@XXi]]
       
       XX is the frame size must be multples allowed for the codec
       FreeSWITCH can support 10-120ms on some codecs.
       We do not support exceeding the MTU of the RTP packet.




       iLBC@30i         - iLBC using mode=30 which will win in all cases.
       DVI4@8000h@20i   - IMA ADPCM 8kHz using 20ms ptime. (multiples of 10)
       DVI4@16000h@40i  - IMA ADPCM 16kHz using 40ms ptime. (multiples of 10)
       speex@8000h@20i  - Speex 8kHz using 20ms ptime.
       speex@16000h@20i - Speex 16kHz using 20ms ptime.
       speex@32000h@20i - Speex 32kHz using 20ms ptime.
       BV16             - BroadVoice 16kb/s narrowband, 8kHz
       BV32             - BroadVoice 32kb/s wideband, 16kHz
       G7221@16000h     - G722.1 16kHz (aka Siren 7)
       G7221@32000h     - G722.1C 32kHz (aka Siren 14)
       CELT@32000h      - CELT 32kHz, only 10ms supported
       CELT@48000h      - CELT 48kHz, only 10ms supported
       GSM@40i          - GSM 8kHz using 40ms ptime. (GSM is done in multiples of 20, Default is 20ms)
       G722             - G722 16kHz using default 20ms ptime. (multiples of 10)
       PCMU             - G711 8kHz ulaw using default 20ms ptime. (multiples of 10)
       PCMA             - G711 8kHz alaw using default 20ms ptime. (multiples of 10)
       G726-16          - G726 16kbit adpcm using default 20ms ptime. (multiples of 10)
       G726-24          - G726 24kbit adpcm using default 20ms ptime. (multiples of 10)
       G726-32          - G726 32kbit adpcm using default 20ms ptime. (multiples of 10)
       G726-40          - G726 40kbit adpcm using default 20ms ptime. (multiples of 10)
       AAL2-G726-16     - Same as G726-16 but using AAL2 packing. (multiples of 10)
       AAL2-G726-24     - Same as G726-24 but using AAL2 packing. (multiples of 10)
       AAL2-G726-32     - Same as G726-32 but using AAL2 packing. (multiples of 10)
       AAL2-G726-40     - Same as G726-40 but using AAL2 packing. (multiples of 10)
       LPC              - LPC10 using 90ms ptime (only supports 90ms at this time in FreeSWITCH)
       L16              - L16 isn't recommended for VoIP but you can do it. L16 can exceed the MTU rather quickly.
       
       These are the passthru audio codecs:
       
       G729             - G729 in passthru mode. (mod_g729)
       G723             - G723.1 in passthru mode. (mod_g723_1)
       AMR              - AMR in passthru mode. (mod_amr)
       
       These are the passthru video codecs: (mod_h26x)
       
       H261             - H.261 Video
       H263             - H.263 Video
       H263-1998        - H.263-1998 Video
       H263-2000        - H.263-2000 Video
       H264             - H.264 Video
       
       RTP Dynamic Payload Numbers currently used in FreeSWITCH and what for.


       96  - AMR
       97  - iLBC (30)
       98  - iLBC (20)
       99  - Speex 8kHz, 16kHz, 32kHz
       100 -
       101 - telephone-event
       102 -
       103 -
       104 -
       105 -
       106 - BV16
       107 - G722.1 (16kHz)
       108 -
       109 -
       110 -
       111 -
       112 -
       113 -
       114 - CELT 32kHz, 48kHz
       115 - G722.1C (32kHz)
       116 -
       117 - SILK 8kHz
       118 - SILK 12kHz
       119 - SILK 16kHz
       120 - SILK 24kHz
       121 - AAL2-G726-40 && G726-40
       122 - AAL2-G726-32 && G726-32
       123 - AAL2-G726-24 && G726-24
       124 - AAL2-G726-16 && G726-16
       125 -
       126 -
       127 - BV32


  -->

 
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8"/>
 
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G722,PCMU,PCMA,GSM,VP8"/>


 
<!--
      xmpp_client_profile and xmpp_server_profile
      xmpp_client_profile can be any string.
      xmpp_server_profile is appended to "dingaling_" to form the database name
      containing the "subscriptions" table.
      used by: dingaling.conf.xml enum.conf.xml
  -->



 
<X-PRE-PROCESS cmd="set" data="xmpp_client_profile=xmppc"/>
 
<X-PRE-PROCESS cmd="set" data="xmpp_server_profile=xmpps"/>
 
<!--
       THIS IS ONLY USED FOR DINGALING


       bind_server_ip


       Can be an ip address, a dns name, or "auto".
       This determines an ip address available on this host to bind.
       If you are separating RTP and SIP traffic, you will want to have
       use different addresses where this variable appears.
       Used by: dingaling.conf.xml
  -->

 
<X-PRE-PROCESS cmd="set" data="bind_server_ip=auto"/>


 
<!-- NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
       
       If you're going to load test FreeSWITCH please input real IP addresses
       for external_rtp_ip and external_sip_ip
  -->



 
<!-- external_rtp_ip
       Can be an one of:
           ip address: "12.34.56.78"
           a stun server lookup: "stun:stun.server.com"
           a DNS name: "host:host.server.com"
       where fs.mydomain.com is a DNS A record-useful when fs is on
       a dynamic IP address, and uses a dynamic DNS updater.
       If unspecified, the bind_server_ip value is used.
       Used by: sofia.conf.xml dingaling.conf.xml
  -->

   
<!--<X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.freeswitch.org"/>-->
   
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:sip1.applicloud.com"/>
 
<!-- external_sip_ip
      Used as the public IP address for SDP.
       Can be an one of:
           ip address: "12.34.56.78"
           a stun server lookup: "stun:stun.server.com"
           a DNS name: "host:host.server.com"
       where fs.mydomain.com is a DNS A record-useful when fs is on
       a dynamic IP address, and uses a dynamic DNS updater.
       If unspecified, the bind_server_ip value is used.
       Used by: sofia.conf.xml dingaling.conf.xml
  -->

   
<!--<X-PRE-PROCESS cmd="set" data="external_sip_ip=62.168.61.75"/>-->


 
<!-- unroll-loops
       Used to turn on sip loopback unrolling.
  -->

 
<X-PRE-PROCESS cmd="set" data="unroll_loops=true"/>


 
<!-- outbound_caller_id and outbound_caller_name
       The caller ID telephone number we should use when calling out.
       Used by: conference.conf.xml and user directory for default
       outbound callerid name and number.
  -->

 
<X-PRE-PROCESS cmd="set" data="outbound_caller_name=FreeSWITCH"/>
 
<X-PRE-PROCESS cmd="set" data="outbound_caller_id=0000000000"/>


 
<!-- various debug and defaults -->
 
<X-PRE-PROCESS cmd="set" data="call_debug=false"/>
 
<X-PRE-PROCESS cmd="set" data="console_loglevel=info"/>
 
<X-PRE-PROCESS cmd="set" data="default_areacode=918"/>
 
<X-PRE-PROCESS cmd="set" data="default_country=US"/>


 
<!-- if false or undefined, the destination number is included in presence NOTIFY dm:note.
       if true, the destination number is not included -->

 
<X-PRE-PROCESS cmd="set" data="presence_privacy=false"/>


 
<X-PRE-PROCESS cmd="set" data="au-ring=%(400,200,383,417);%(400,2000,383,417)"/>
 
<X-PRE-PROCESS cmd="set" data="be-ring=%(1000,3000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="ca-ring=%(2000,4000,440,480)"/>
 
<X-PRE-PROCESS cmd="set" data="cn-ring=%(1000,4000,450)"/>
 
<X-PRE-PROCESS cmd="set" data="cy-ring=%(1500,3000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="cz-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="de-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="dk-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="dz-ring=%(1500,3500,425)"/>
 
<X-PRE-PROCESS cmd="set" data="eg-ring=%(2000,1000,475,375)"/>
 
<X-PRE-PROCESS cmd="set" data="es-ring=%(1500,3000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="fi-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="fr-ring=%(1500,3500,440)"/>
 
<X-PRE-PROCESS cmd="set" data="hk-ring=%(400,200,440,480);%(400,3000,440,480)"/>
 
<X-PRE-PROCESS cmd="set" data="hu-ring=%(1250,3750,425)"/>
 
<X-PRE-PROCESS cmd="set" data="il-ring=%(1000,3000,400)"/>
 
<X-PRE-PROCESS cmd="set" data="in-ring=%(400,200,425,375);%(400,2000,425,375)"/>
 
<X-PRE-PROCESS cmd="set" data="jp-ring=%(1000,2000,420,380)"/>
 
<X-PRE-PROCESS cmd="set" data="ko-ring=%(1000,2000,440,480)"/>
 
<X-PRE-PROCESS cmd="set" data="pk-ring=%(1000,2000,400)"/>
 
<X-PRE-PROCESS cmd="set" data="pl-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="ro-ring=%(1850,4150,475,425)"/>
 
<X-PRE-PROCESS cmd="set" data="rs-ring=%(1000,4000,425)"/>
 
<X-PRE-PROCESS cmd="set" data="ru-ring=%(800,3200,425)"/>
 
<X-PRE-PROCESS cmd="set" data="sa-ring=%(1200,4600,425)"/>
 
<X-PRE-PROCESS cmd="set" data="tr-ring=%(2000,4000,450)"/>
 
<X-PRE-PROCESS cmd="set" data="uk-ring=%(400,200,400,450);%(400,2000,400,450)"/>
 
<X-PRE-PROCESS cmd="set" data="us-ring=%(2000,4000,440,480)"/>
 
<X-PRE-PROCESS cmd="set" data="bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)"/>
 
<X-PRE-PROCESS cmd="set" data="beep=%(1000,0,640)"/>
 
<X-PRE-PROCESS cmd="set" data="sit=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)"/>


 
<!--
       Digits Dialed filter: (FS-6940)
       
       The digits stream may contain valid credit card numbers or social security numbers, These digit
       filters will allow you to make a valant effort to stamp out sensitive information for
       PCI/HIPPA compliance. (see xml_cdr dialed_digits)
       
       df_us_ssn   = US Social Security Number pattern
       df_us_luhn  = Visa, MasterCard, American Express, Diners Club, Discover and JCB
  -->

 
<X-PRE-PROCESS cmd="set" data="df_us_ssn=(?!219099999|078051120)(?!666|000|9\d{2})\d{3}(?!00)\d{2}(?!0{4})\d{4}"/>
 
<X-PRE-PROCESS cmd="set" data="df_luhn=?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11}"/>
 
<!-- change XX to X below to enable -->
 
<XX-PRE-PROCESS cmd="set" data="digits_dialed_filter=(($${df_luhn})|($${df_us_ssn}))"/>


 
<!--
      Setting up your default sip provider is easy.
      Below are some values that should work in most cases.
     
      These are for conf/directory/default/example.com.xml
  -->

 
<X-PRE-PROCESS cmd="set" data="default_provider=example.com"/>
 
<X-PRE-PROCESS cmd="set" data="default_provider_username=joeuser"/>
 
<X-PRE-PROCESS cmd="set" data="default_provider_password=password"/>
 
<X-PRE-PROCESS cmd="set" data="default_provider_from_domain=example.com"/>
 
<!-- true or false -->
 
<X-PRE-PROCESS cmd="set" data="default_provider_register=false"/>
 
<X-PRE-PROCESS cmd="set" data="default_provider_contact=5000"/>


 
<!--
     SIP and TLS settings. http://wiki.freeswitch.org/wiki/Tls
     
     valid options: sslv2,sslv3,sslv23,tlsv1,tlsv1.1,tlsv1.2


     default: tlsv1,tlsv1.1,tlsv1.2
  -->

 
<X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1,tlsv1.1,tlsv1.2"/>


 
<!--
     TLS cipher suite: default ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH


     The actual ciphers supported will change per platform.


     openssl ciphers -v 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH'


     Will show you what is available in your verion of openssl.
  -->

 
<X-PRE-PROCESS cmd="set" data="sip_tls_ciphers=ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"/>
 
 
<!-- Internal SIP Profile -->
 
<X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/>
 
<X-PRE-PROCESS cmd="set" data="internal_sip_port=5060"/>
 
<X-PRE-PROCESS cmd="set" data="internal_tls_port=5061"/>
 
<X-PRE-PROCESS cmd="set" data="internal_ssl_enable=false"/>


 
<!-- External SIP Profile -->
 
<X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/>
 
<X-PRE-PROCESS cmd="set" data="external_sip_port=5080"/>
 
<X-PRE-PROCESS cmd="set" data="external_tls_port=5081"/>
 
<X-PRE-PROCESS cmd="set" data="external_ssl_enable=false"/>


 
<!-- Video Settings -->
 
<!-- Setting the max bandwdith -->
 
<X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_in=1mb"/>
 
<X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_out=1mb"/>


 
<!-- WebRTC Video -->
 
<!-- Suppress CNG for WebRTC Audio -->
 
<X-PRE-PROCESS cmd="set" data="suppress_cng=true"/>
 
<!-- Enable liberal DTMF for those that can't get it right -->
 
<X-PRE-PROCESS cmd="set" data="rtp_liberal_dtmf=true"/>
 
<!-- Helps with WebRTC Audio -->
 
<X-PRE-PROCESS cmd="set" data="answer_delay=4000"/>


 
<!-- Stock Video Avatars -->
 
<X-PRE-PROCESS cmd="set" data="video_mute_png=$${images_dir}/default-mute.png"/>
 
<X-PRE-PROCESS cmd="set" data="video_no_avatar_png=$${images_dir}/default-avatar.png"/>


</include>

internal.xml тоже особо без изысков, все стандартное.

<profile name="internal">
 
<!--
      This is a sofia sip profile/user agent.  This will service exactly one ip and port.
      In FreeSWITCH you can run multiple sip user agents on their own ip and port.


      When you hear someone say "sofia profile" this is what they are talking about.
  -->



 
<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
 
<!--aliases are other names that will work as a valid profile name for this profile-->
 
<aliases>
   
<!--
        <alias name="default"/>
    -->

 
</aliases>
 
<!-- Outbound Registrations -->
 
<gateways>
 
</gateways>


 
<domains>
   
<!-- indicator to parse the directory for domains with parse="true" to get gateways-->
   
<!--<domain name="$${domain}" parse="true"/>-->
   
<!-- indicator to parse the directory for domains with parse="true" to get gateways and alias every domain to this profile -->
   
<!--<domain name="all" alias="true" parse="true"/>-->
   
<domain name="all" alias="true" parse="false"/>
 
</domains>


 
<settings>




   
<!-- inject delay between dtmf digits on send to help some slow interpreters (also per channel with rtp_digit_delay var -->
   
<!--<param name="rtp-digit-delay" value="40"/>-->


   
<!--
        When calls are in no media this will bring them back to media
        when you press the hold button.
    -->

   
<!--<param name="media-option" value="resume-media-on-hold"/> -->


   
<!--
        This will allow a call after an attended transfer go back to
        bypass media after an attended transfer.
    -->

   
<!--<param name="media-option" value="bypass-media-after-att-xfer"/>-->


   
<!-- Can be set to "_undef_" to remove the User-Agent header -->
   
<!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> -->


   
<param name="debug" value="0"/>
   
<!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
   
<!-- <param name="shutdown-on-fail" value="true"/> -->
   
<param name="sip-trace" value="no"/>
   
<param name="sip-capture" value="no"/>


   
<!-- Use presence_map.conf.xml to convert extension regex to presence protos for routing -->
   
<!-- <param name="presence-proto-lookup" value="true"/> -->




   
<!-- Don't be picky about negotiated DTMF just always offer 2833 and accept both 2833 and INFO -->
   
<param name="liberal-dtmf" value="true"/>




   
<!--
        Sometimes, in extremely rare edge cases, the Sofia SIP stack may stop
        responding. These options allow you to enable and control a watchdog
        on the Sofia SIP stack so that if it stops responding for the
        specified number of milliseconds, it will cause FreeSWITCH to crash
        immediately. This is useful if you run in an HA environment and
        need to ensure automated recovery from such a condition. Note that if
        your server is idle a lot, the watchdog may fire due to not receiving
        any SIP messages. Thus, if you expect your system to be idle, you
        should leave the watchdog disabled. It can be toggled on and off
        through the FreeSWITCH CLI either on an individual profile basis or
        globally for all profiles. So, if you run in an HA environment with a
        master and slave, you should use the CLI to make sure the watchdog is
        only enabled on the master.
        If such crash occurs, FreeSWITCH will dump core if allowed. The
        stacktrace will include function watchdog_triggered_abort().
    -->

   
<param name="watchdog-enabled" value="no"/>
   
<param name="watchdog-step-timeout" value="30000"/>
   
<param name="watchdog-event-timeout" value="30000"/>


   
<param name="log-auth-failures" value="false"/>
   
<param name="forward-unsolicited-mwi-notify" value="false"/>


   
<param name="context" value="default"/>
   
<param name="rfc2833-pt" value="101"/>
   
<!-- port to bind to for sip traffic -->
   
<param name="sip-port" value="$${internal_sip_port}"/>
   
<param name="dialplan" value="XML"/>
   
<param name="dtmf-duration" value="2000"/>
   
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
   
<param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
   
<param name="rtp-timer-name" value="soft"/>
   
<!-- ip address to use for rtp, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
   
<param name="rtp-ip" value="$${local_ip_v4}"/>
   
   
<!-- <param name="rtp-ip" value="auto"/> -->
   
<!-- ip address to bind to, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
   
<param name="sip-ip" value="$${local_ip_v4}"/>
   
   
<param name="hold-music" value="$${hold_music}"/>
   
<param name="apply-nat-acl" value="nat.auto"/>




   
<!-- (default true) set to false if you do not wish to have called party info in 1XX responses -->
   
<!-- <param name="cid-in-1xx" value="false"/> -->


   
<!-- extended info parsing -->
   
<!-- <param name="extended-info-parsing" value="true"/> -->


   
<param name="aggressive-nat-detection" value="true"/>
   
<!--
        There are known issues (asserts and segfaults) when 100rel is enabled.
        It is not recommended to enable 100rel at this time.
    -->

   
<!--<param name="enable-100rel" value="true"/>-->


   
<!-- uncomment if you don't wish to try a next SRV destination on 503 response -->
   
<!-- RFC3263 Section 4.3 -->
   
<!--<param name="disable-srv503" value="true"/>-->


   
<!-- Enable Compact SIP headers. -->
   
<!--<param name="enable-compact-headers" value="true"/>-->
   
<!--
        enable/disable session timers
    -->

   
<param name="enable-timer" value="false"/>
   
<!--<param name="minimum-session-expires" value="120"/>-->
   
<param name="apply-inbound-acl" value="domains"/>
   
<!--
        This defines your local network, by default we detect your local network
        and create this localnet.auto ACL for this.
    -->

   
<param name="local-network-acl" value="localnet.auto"/>
   
<!--<param name="apply-register-acl" value="domains"/>-->
   
<!--<param name="dtmf-type" value="info"/>-->




   
<!-- 'true' means every time 'first-only' means on the first register -->
   
<!--<param name="send-message-query-on-register" value="true"/>-->


   
<!-- 'true' means every time 'first-only' means on the first register -->
   
<!--<param name="send-presence-on-register" value="first-only"/> -->




   
<!-- Caller-ID type (choose one, can be overridden by inbound call type and/or sip_cid_type channel variable -->
   
<!-- Remote-Party-ID header -->
   
<!--<param name="caller-id-type" value="rpid"/>-->


   
<!-- P-*-Identity family of headers -->
   
<!--<param name="caller-id-type" value="pid"/>-->


   
<!-- neither one -->
   
<!--<param name="caller-id-type" value="none"/>-->






   
<param name="record-path" value="$${recordings_dir}"/>
   
<param name="record-template" value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
   
<!--enable to use presence -->
   
<param name="manage-presence" value="true"/>
   
<!-- send a presence probe on each register to query devices to send presence instead of sending presence with less info -->
   
<!--<param name="presence-probe-on-register" value="true"/>-->
   
<!--<param name="manage-shared-appearance" value="true"/>-->
   
<!-- used to share presence info across sofia profiles -->
   
<!-- Name of the db to use for this profile -->
   
<!--<param name="dbname" value="share_presence"/>-->
   
<param name="presence-hosts" value="$${domain},$${local_ip_v4}"/>
   
<param name="presence-privacy" value="$${presence_privacy}"/>
   
<!-- ************************************************* -->


   
<!-- This setting is for AAL2 bitpacking on G726 -->
   
<!-- <param name="bitpacking" value="aal2"/> -->
   
<!--max number of open dialogs in proceeding -->
   
<!--<param name="max-proceeding" value="1000"/>-->
   
<!--session timers for all call to expire after the specified seconds -->
   
<!--<param name="session-timeout" value="1800"/>-->
   
<!-- Can be 'true' or 'contact' -->
   
<!--<param name="multiple-registrations" value="true"/>-->
   
<!--set to 'greedy' if you want your codec list to take precedence -->
   
<param name="inbound-codec-negotiation" value="greedy"/>
   
<!-- <param name="inbound-late-negotiation" value="true"/>-->
<!--     <param name="renegotiate-codec-on-reinvite" value="true"/>
-->

   
<!-- if you want to send any special bind params of your own -->
   
<!--<param name="bind-params" value="transport=udp"/>-->
   
<!--<param name="unregister-on-options-fail" value="true"/>-->
   
<!-- Send an OPTIONS packet to all registered endpoints -->
   
<!--<param name="all-reg-options-ping" value="true"/>-->
   
<!-- Send an OPTIONS packet to NATed registered endpoints. Can be 'true' or 'udp-only'. -->
   
<!--<param name="nat-options-ping" value="true"/>-->
   
<!--<param name="sip-options-respond-503-on-busy" value="true"/>-->
   
<!--<param name="sip-messages-respond-200-ok" value="true"/>-->
   
<!--<param name="sip-subscribe-respond-200-ok" value="true"/>-->


   
<!-- TLS: disabled by default, set to "true" to enable -->
   
<param name="tls" value="$${internal_ssl_enable}"/>
   
<!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
   
<param name="tls-only" value="false"/>
   
<!-- additional bind parameters for TLS -->
   
<param name="tls-bind-params" value="transport=tls"/>
   
<!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
   
<param name="tls-sip-port" value="$${internal_tls_port}"/>
   
<!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
   
<!--<param name="tls-cert-dir" value=""/>-->
   
<!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
   
<param name="tls-passphrase" value=""/>
   
<!-- Verify the date on TLS certificates -->
   
<param name="tls-verify-date" value="true"/>
   
<!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
   
<!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
   
<param name="tls-verify-policy" value="all"/>
   
<!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
   
<param name="tls-verify-depth" value="2"/>
   
<!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
   
<param name="tls-verify-in-subjects" value=""/>
   
<!-- TLS version default: tlsv1,tlsv1.1,tlsv1.2 -->
   
<param name="tls-version" value="$${sip_tls_version}"/>


   
<!-- TLS ciphers default: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH  -->
   
<param name="tls-ciphers" value="$${sip_tls_ciphers}"/>


   
<!-- turn on auto-flush during bridge (skip timer sleep when the socket already has data)
         (reduces delay on latent connections default true, must be disabled explicitly)-->

   
<!--<param name="rtp-autoflush-during-bridge" value="false"/>-->


   
<!--If you don't want to pass through timestamps from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
   
<!--<param name="rtp-rewrite-timestamps" value="true"/>
    <param name="pass-rfc2833" value="true"/>-->

   
<!--If you have ODBC support and a working dsn you can use it instead of SQLite-->
   
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->


   
<!-- Or, if you have PGSQL support, you can use that -->
   
<!--<param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />-->


   
<!--Uncomment to set all inbound calls to no media mode-->
   
<!--<param name="inbound-bypass-media" value="false"/>-->


   
<!--Uncomment to set all inbound calls to proxy media mode-->
   
<!--<param name="inbound-proxy-media" value="true"/>-->


   
<!-- Let calls hit the dialplan before selecting codec for the a-leg -->
   
<!--<param name="inbound-late-negotiation" value="true"/>-->


   
<!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
   
<!--<param name="inbound-zrtp-passthru" value="true"/>-->


   
<!-- this lets anything register -->
   
<!--  comment the next line and uncomment one or both of the other 2 lines for call authentication -->
   
<!-- <param name="accept-blind-reg" value="true"/> -->


   
<!-- accept any authentication without actually checking (not a good feature for most people) -->
   
<!-- <param name="accept-blind-auth" value="true"/> -->


   
<!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
   
<!-- <param name="suppress-cng" value="true"/> -->


   
<!--TTL for nonce in sip auth-->
   
<param name="nonce-ttl" value="60"/>
   
<!--Uncomment if you want to force the outbound leg of a bridge to only offer the codec
        that the originator is using-->

   
<!--<param name="disable-transcoding" value="true"/>-->
   
<!-- Handle 302 Redirect in the dialplan -->
   
<!--<param name="manual-redirect" value="true"/> -->
   
<!-- Disable Transfer -->
   
<!--<param name="disable-transfer" value="true"/> -->
   
<!-- Disable Register -->
   
<!--<param name="disable-register" value="true"/> -->
   
<!-- Used for when phones respond to a challenged ACK with method INVITE in the hash -->
   
<!--<param name="NDLB-broken-auth-hash" value="true"/>-->
   
<!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
   
<!--<param name="NDLB-received-in-nat-reg-contact" value="true"/>-->
   
<param name="auth-calls" value="true"/>
   
<!-- Force the user and auth-user to match. -->
   
<param name="inbound-reg-force-matching-username" value="true"/>
   
<!-- on authed calls, authenticate *all* the packets not just invite -->
   
<param name="auth-all-packets" value="false"/>


   
<!-- external_sip_ip
         Used as the public IP address for SDP.
         Can be an one of:
         ip address            - "12.34.56.78"
         a stun server lookup  - "stun:stun.server.com"
         a DNS name            - "host:host.server.com"
         auto                  - Use guessed ip.
         auto-nat              - Use ip learned from NAT-PMP or UPNP
    -->

   
<!--<param name="ext-rtp-ip" value="stun:sip1.applicloud.com"/>-->
   
<!--<param name="ext-sip-ip" value="62.168.61.75"/>-->
   
<param name="ext-rtp-ip" value="auto-nat"/>
   
<param name="ext-sip-ip" value="auto-nat"/>


   
<!--<param name="NDLB-allow-bad-iananame" value="true"/>-->


   
   
<!-- rtp inactivity timeout -->
   
<param name="rtp-timeout-sec" value="300"/>
   
<param name="rtp-hold-timeout-sec" value="1800"/>
   
<!-- VAD choose one (out is a good choice); -->
   
<!-- <param name="vad" value="in"/> -->
   
<!-- <param name="vad" value="out"/> -->
   
<!-- <param name="vad" value="both"/> -->
   
<!--<param name="alias" value="sip:10.0.1.251:5555"/>-->
   
<!--
        These are enabled to make the default config work better out of the box.
        If you need more than ONE domain you'll need to not use these options.


    -->

   
<!--all inbound reg will look in this domain for the users -->
   
<param name="force-register-domain" value="$${domain}"/>
   
<!--force the domain in subscriptions to this value -->
   
<param name="force-subscription-domain" value="$${domain}"/>
   
<!--all inbound reg will stored in the db using this domain -->
   
<param name="force-register-db-domain" value="$${domain}"/>




   
<!-- uncomment for sip over websocket support -->
   
<param name="ws-binding"  value=":5066"/>


   
<!-- uncomment for sip over secure websocket support -->
   
<!-- You need wss.pem in $${certs_dir} for wss -->
   
<param name="wss-binding" value=":443"/>
   


   
<!--<param name="delete-subs-on-register" value="false"/>-->


   
<!-- launch a new thread to process each new inbound register when using heavier backends -->
   
<!-- <param name="inbound-reg-in-new-thread" value="true"/> -->


   
<!-- enable rtcp on every channel also can be done per leg basis with rtcp_audio_interval_msec variable set to passthru to pass it across a call-->
   
<!-- <param name="rtcp-audio-interval-msec" value="5000"/> -->
   
<!-- <param name="rtcp-video-interval-msec" value="5000"/> -->


   
<!--force suscription expires to a lower value than requested-->
   
<!--<param name="force-subscription-expires" value="60"/>-->


   
<!-- add a random deviation to the expires value of the 202 Accepted -->
   
<!--<param name="sip-subscription-max-deviation" value="120"/>-->


   
<!-- disable register and transfer which may be undesirable in a public switch -->
   
<!--<param name="disable-transfer" value="true"/>-->
   
<!--<param name="disable-register" value="true"/>-->


   
<!--
        enable-3pcc can be set to either 'true' or 'proxy', true accepts the call
        right away, proxy waits until the call has been answered then sends accepts
    -->

   
<!--<param name="enable-3pcc" value="true"/>-->


   
<!-- use at your own risk or if you know what this does.-->
   
<!--<param name="NDLB-force-rport" value="true"/>-->
   
<!--
        Choose the realm challenge key. Default is auto_to if not set.


        auto_from  - uses the from field as the value for the sip realm.
        auto_to    - uses the to field as the value for the sip realm.
        <anyvalue> - you can input any value to use for the sip realm.


        If you want URL dialing to work you'll want to set this to auto_from.


        If you use any other value besides auto_to or auto_from you'll
        loose the ability to do multiple domains.


        Note: comment out to restore the behavior before 2008-09-29
    -->

   
<param name="challenge-realm" value="auto_from"/>
   
<!--<param name="disable-rtp-auto-adjust" value="true"/>-->
   
<!-- on inbound calls make the uuid of the session equal to the sip call id of that call -->
   
<!--<param name="inbound-use-callid-as-uuid" value="true"/>-->
   
<!-- on outbound calls set the callid to match the uuid of the session -->
   
<!--<param name="outbound-use-uuid-as-callid" value="true"/>-->
   
<!-- set to false disable this feature -->
   
<!--<param name="rtp-autofix-timing" value="false"/>-->


   
<!-- set this param to false if your gateway for some reason hates X- headers that it is supposed to ignore-->
   
<!--<param name="pass-callee-id" value="false"/>-->


   
<!-- clear clears them all or supply the name to add or the name
         prefixed with ~ to remove valid values:


           clear
           CISCO_SKIP_MARK_BIT_2833
           SONUS_SEND_INVALID_TIMESTAMP_2833


    -->

   
<!--<param name="auto-rtp-bugs" data="clear"/>-->


   
<!-- the following can be used as workaround with bogus SRV/NAPTR records -->
   
<!--<param name="disable-srv" value="false" />-->
   
<!--<param name="disable-naptr" value="false" />-->


   
<!-- The following can be used to fine-tune timers within sofia's transport layer
         Those settings are for advanced users and can safely be left as-is -->



   
<!-- Initial retransmission interval (in milliseconds).
         Set the T1 retransmission interval used by the SIP transaction engine.
         The T1 is the initial duration used by request retransmission timers A and E (UDP) as well as response retransmission timer G.   -->

   
<!-- <param name="timer-T1" value="500" /> -->


   
<!--  Transaction timeout (defaults to T1 * 64).
         Set the T1x64 timeout value used by the SIP transaction engine.
         The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine.
         The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1. -->

   
<!-- <param name="timer-T1X64" value="32000" /> -->




   
<!-- Maximum retransmission interval (in milliseconds).
         Set the maximum retransmission interval used by the SIP transaction engine.
         The T2 is the maximum duration used for the timers E (UDP) and G by the SIP transaction engine.
         Note that the timer A is not capped by T2. Retransmission interval of INVITE requests grows exponentially
         until the timer B fires.  -->

   
<!-- <param name="timer-T2" value="4000" /> -->


   
<!--
        Transaction lifetime (in milliseconds).
        Set the lifetime for completed transactions used by the SIP transaction engine.
        A completed transaction is kept around for the duration of T4 in order to catch late responses.
        The T4 is the maximum duration for the messages to stay in the network and the duration of SIP timer K. -->

   
<!-- <param name="timer-T4" value="4000" /> -->


   
<!-- Turn on a jitterbuffer for every call -->
   
<!--<param name="auto-jitterbuffer-msec" value="120"/>-->




   
<!-- By default mod_sofia will ignore the codecs in the sdp for hold/unhold operations
         Set this to true if you want to actually parse the sdp and re-negotiate the codec during hold/unhold.
         It's probably not what you want so stick with the default unless you really need to change this.
    -->

   
<!--<param name="renegotiate-codec-on-hold" value="true"/>-->
   
<!--<param name="stun-enabled" value="true"/>-->
   
<!--<param name="inbound-proxy-media" value="true"/>-->
 
</settings>
</profile>



ros tel

unread,
Jul 10, 2015, 3:58:28 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
1.7.0 в активной разработке
с годик подождать до относительной стабилизации

пятница, 10 июля 2015 г., 11:45:20 UTC+5 пользователь Denis Jakovlev написал:

Denis Jakovlev

unread,
Jul 10, 2015, 4:02:49 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
Т.е. если я воткну 1.4.20, то это как-то изменит ситуацию?

пятница, 10 июля 2015 г., 9:58:28 UTC+2 пользователь ros tel написал:

ros tel

unread,
Jul 10, 2015, 4:13:18 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
скорей всего нет, в 1.7 больше коммитов именно с работой видео связанных

пятница, 10 июля 2015 г., 13:02:49 UTC+5 пользователь Denis Jakovlev написал:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 4:16:23 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
посмотрите в сторону mod_verto 
Я сейчас использую для видео-звонков на 1.7 именно этот модуль.

--
Вы получили это сообщение, поскольку подписаны на группу "freeswitch-ru".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес freeswitch-r...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес freesw...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/freeswitch-ru.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 4:17:51 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
Да я в курсе. По этому и использую 1.7. Гадская ситуация.
Я одного не понимаю, если использую в диалплане
<action application="set" data="bypass_media=true"/>
Видео фигачит совершенно без фризов и замечательно. Но! не пишет видео вообще. Файл с 0 размером. Убираю - пишет видео. Но часто лаги. По этому и любопытно... может чего настроить еще можно. Таймауты какие или типа того.


пятница, 10 июля 2015 г., 10:13:18 UTC+2 пользователь ros tel написал:

Denis Jakovlev

unread,
Jul 10, 2015, 4:23:37 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
А как-то без него можно видео-звонки разве делать?

пятница, 10 июля 2015 г., 10:16:23 UTC+2 пользователь samael написал:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 4:29:45 AM7/10/15
to freesw...@googlegroups.com
модуль спроектирован для работы именно с webrtc и на нем разработчики тестируют все это дело. Самому приходилось отлаживать работу видео, нашел пару багов - исправили. Сейчас видео работает хорошо. Пока лагов не замечал. Но бывало зависание если звонки между разными браузерами.

А с bypass_media нет записи - так ее и не должно быть :) Медиа то идем между двумя точками, а не через FS.
signature.asc

ros tel

unread,
Jul 10, 2015, 4:32:16 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
bypass_media - проключение всего RTP напрямую между конечными пользователями
естественно никаких лагов и записи, т.к. FS этот трафик вообще не видит

пятница, 10 июля 2015 г., 13:17:51 UTC+5 пользователь Denis Jakovlev написал:

Denis Jakovlev

unread,
Jul 10, 2015, 4:32:22 AM7/10/15
to freesw...@googlegroups.com
Ок. А как его использовать тогда? Он у меня загружен. Система его видит. Как мне понять, что звонит с помощью него? Есть какие-то примеры?

пятница, 10 июля 2015 г., 10:29:45 UTC+2 пользователь samael написал:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 4:33:55 AM7/10/15
to freesw...@googlegroups.com
Использовать клиентские библиотеки verto, а не jssip или sipjs:
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 4:37:27 AM7/10/15
to freesw...@googlegroups.com
Так момент. jssip и sipjs они тоже советуют. Причем последний больше всего. 
В FreeSwitch то ничего настраивать не надо разве? Диалпланы там или типа того?

пятница, 10 июля 2015 г., 10:33:55 UTC+2 пользователь samael написал:

ros tel

unread,
Jul 10, 2015, 4:43:27 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.6+Video

пятница, 10 июля 2015 г., 13:37:27 UTC+5 пользователь Denis Jakovlev написал:

Denis Jakovlev

unread,
Jul 10, 2015, 5:35:53 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
Это то я читал разумеется. Я о другом. Т.е. freeswitch кроме сертификатов, что у меня и так были, ничего от меня в плане настройки хотеть не будет? Надо будет просто выкинуть sipjs и jssip и пользовать то, что посылали парой сообщений выше?

пятница, 10 июля 2015 г., 10:43:27 UTC+2 пользователь ros tel написал: 

ros tel

unread,
Jul 10, 2015, 5:44:51 AM7/10/15
to freesw...@googlegroups.com, denja...@gmail.com
в целом да
только ещё небольшие правки в directory нужны
но скорей всего все это бестолковое занятие, т.е. mod_verto обеспечивает просто лигналку формируя что-то наподобие sip сообщений только оборачивая их в json пуляет в WS

пятница, 10 июля 2015 г., 14:35:53 UTC+5 пользователь Denis Jakovlev написал:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 5:47:09 AM7/10/15
to freesw...@googlegroups.com
там 2 модуля:

mod_verto - сигнальный
mod_rtc - медиа

signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 5:54:40 AM7/10/15
to freesw...@googlegroups.com
Ну с этим понятно. 
Если вернуться к моему вопросу... Может быть все-таки можно там чего-нибудь тюнить в freeswitch? Где-то месяц назад я спрашивал у чуваков из FreeSwitch, отчего у меня jssip не работал и они мне отвечали, что это плохая библиотека, пользуйте sip.js. Ок. Теперь и она оказалось плохо. Это уже как-бы не смешно. Мне каждый месяц библиотеку чтоли менять?

пятница, 10 июля 2015 г., 11:47:09 UTC+2 пользователь samael написал:

Denis Jakovlev

unread,
Jul 10, 2015, 7:15:47 AM7/10/15
to freesw...@googlegroups.com
А есть у кого примеры этого mod_verto работающие? Чет ни документации нифига к этой радости

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 7:16:34 AM7/10/15
to freesw...@googlegroups.com
On 10 лип. 2015, at 14:15, Denis Jakovlev <denja...@gmail.com> wrote:

А есть у кого примеры этого mod_verto работающие? Чет ни документации нифига к этой радости

signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 7:22:54 AM7/10/15
to freesw...@googlegroups.com
Этому коду уже больше года. К этому никакой документации? Там они имеют 600 строчек кода в js и всякие методы без описаний. Как этим пользоваться то вообще? Какие эвенты они посылают на конект-дисконект и т.д. ? Где настройки хотябы того же подключения к FreeSwitch? Оно умеет вообще хоть что-то кроме конференций? Типа тупо позвонить с 1000 на 1001 к примеру? 

пятница, 10 июля 2015 г., 13:16:34 UTC+2 пользователь samael написал:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 7:28:32 AM7/10/15
to freesw...@googlegroups.com
Больше года говорите:

В коде все параметры есть.
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 7:34:37 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Сори, чет не туда посмотрел. А есть какой-то пример работающий, чтоб понять как это использовать? Или какая-нибудь документация хотябы.  
Я даже на их
https://conference.freeswitch.org/verto/#page-main ничего работающего найти не могу.




.

--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "freeswitch-ru".
Чтобы отменить подписку на эту тему, перейдите по ссылке
https://groups.google.com/d/topic/freeswitch-ru/NRVYbtcmx6Q/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес
freeswitch-r...@googlegroups.com.

Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес

Чтобы зайти в группу, перейдите по ссылке

Чтобы настроить другие параметры, перейдите по ссылке
https://groups.google.com/d/optout.




--
S pozdravem,
Ing.Denis Jakovlev                          
mob.tel. 775-415-382

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 7:42:05 AM7/10/15
to freesw...@googlegroups.com
Пример точно рабочий!

Вот я без установки захожу на их дело сайт: https://webrtc.freeswitch.org/
Делаю выход из учетки и прописываю свои параметры тестового сервера:


Регистрация проходит успешно:


Делаю видеозвонок на другой номер:


Соединение - установлено. Видео и голос идет через мой тестовый сервер, сам сайт - их демо https://webrtc.freeswitch.org/verto/index.html


On 10 лип. 2015, at 14:34, Denis Jakovlev <denja...@gmail.com> wrote:

Dobrý den,

Сори, чет не туда посмотрел. А есть какой-то пример работающий, чтоб понять как это использовать? Или какая-нибудь документация хотябы.  
Я даже на их 
https://conference.freeswitch.org/verto/#page-main ничего работающего найти не могу.




Больше года говорите:
<int_1.jpg>
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 8:05:26 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Толи я тупой, толи что-то не так делаю

У меня ни как не хочет. Не понимаю



Cap.JPG
Cap2.JPG

Denis Jakovlev

unread,
Jul 10, 2015, 8:29:20 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Оно обязательно должно быть на 8082?

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 9:00:47 AM7/10/15
to freesw...@googlegroups.com
В конфиге mod_verto 2 порта есть 8081 и 8082 
8082 - это для WebSocket over SSL. Необходимо наличие валидного сертификата.

On 10 лип. 2015, at 15:29, Denis Jakovlev <denja...@gmail.com> wrote:

Dobrý den,

Оно обязательно должно быть на 8082?

Пример точно рабочий!

Вот я без установки захожу на их дело сайт: 
https://webrtc.freeswitch.org/
Делаю выход из учетки и прописываю свои параметры тестового сервера:

<int_1.jpg>

Регистрация проходит успешно:

<int_2.jpg>


Делаю видеозвонок на другой номер:

<int_3.jpg>
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 9:08:23 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

wss.pem у меня валидный. Странно. А оно только в хроме работает?

Я честно сказать не догоняю чуток. Скажем возьму я их демо. Зайду как 1000 (директори я поправил) Входит. Открываю файрфокс - вхожу под 1001 с теми же параметрами - не хочет. Коннекшн эррор. Ок. Открываю еще одно окно хрома - вхожу как 1001 в первом окне вылетает на настройки входа. Как вы это тестируйте вообще?

pátek 10. července 2015, 15:00:42, napsal jste:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 9:11:15 AM7/10/15
to freesw...@googlegroups.com
Chrome и FF работает

PS: тогда, лучше, используйте то, что сейчас работает на sipjs
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 9:16:01 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Так на sipjs оно лагает. А можете мне скинуть xml na verto, internal и из директорий? Я уже запутался что я делаю не так ей богу. Может это мне поможет




Chrome и FF работает
Мое рабочее демо:
https://plus.google.com/+VitalyKovalyshyn/posts/QTcerp7MUap

PS: тогда, лучше, используйте то, что сейчас работает на sipjs

On 10 лип. 2015, at 16:08, Denis Jakovlev <
denja...@gmail.com
> wrote:

Re: Производительность видео через freeswitch

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 9:23:45 AM7/10/15
to freesw...@googlegroups.com
Тестовая среда, но все работает.

Directory: 

<document type="freeswitch/xml">
<section name="directory">
<domain name="10.10.10.144">
<params>
<param name="default_languagevalue="en"/>
</params>
<variables>
<variable name="customer_idvalue="1764357843244"/>
<variable name="default_languagevalue="en"/>
</variables>
<groups>
<group name="default">
<users>
<user id="100">
<params>
<param name="a1-hashvalue="dbe77b19c3d79717d910900a2595bed7"/>
<param name="dial-stringvalue="{webitel_call_uuid=${create_uuid()},sip_invite_domain=10.10.10.144}${sofia_contact(*/1...@10.10.10.144)},${verto_contact(1...@10.10.10.144)}"/>
<param name="jsonrpc-allowed-event-channelsvalue="demo,conference,presence"/>
<param name="jsonrpc-allowed-methodsvalue="verto,fsapi"/>
<param name="jsonrpc-passwordvalue="100"/>
<param name="jsonrpc-allowed-fsapivalue="version"/>
<param name="cc-agentvalue="true"/>
<param name="cc-agent-typevalue="callback"/>
<param name="vm-enabledvalue="true"/>
<param name="vm-passwordvalue="1234"/>
<param name="cc-agent-contactvalue="{presence_id=1...@10.10.10.144}{webitel_call_uuid=${create_uuid()},sip_invite_domain=10.10.10.144}${sofia_contact(*/1...@10.10.10.144)},${verto_contact(1...@10.10.10.144)}"/>
<param name="cc-agent-max-no-answervalue="3"/>
<param name="webitel-extensionsvalue="100"/>
<param name="http-allowed-apivalue="voicemail"/>
</params>
<variables>
<variable name="w_domainvalue="10.10.10.144"/>
<variable name="user_schemevalue="account"/>
<variable name="user_contextvalue="default"/>
<variable name="effective_caller_id_namevalue="Igor"/>
<variable name="outbound_caller_id_namevalue="100"/>
<variable name="account_rolevalue="user"/>
<variable name="default_languagevalue="ru"/>
</variables>
<profile-variables>
<variable name="Caller-User-Statevalue="NONREG"/>
<variable name="Caller-Account-Statusvalue="NONE"/>
</profile-variables>
</user>
</users>
</group>
</groups>
</domain>
</section>
</document>

Verto

<configuration name="verto.confdescription="HTML5 Verto Endpoint">
<settings>
<param name="debugvalue="0"/>
</settings>
<profiles>
<profile name="default">
<param name="bind-localvalue="$${local_ip_v4}:8082secure="true"/>
<param name="bind-localvalue="[$${local_ip_v6}]:8082secure="true"/>
<param name="secure-combinedvalue="/certs/wss.pem"/>
<param name="secure-chainvalue="/certs/wss.pem"/>
<param name="userauthvalue="true"/>
<param name="blind-regvalue="false"/>
<param name="mcast-ipvalue="224.1.1.1"/>
<param name="mcast-portvalue="1337"/>
<param name="rtp-ipvalue="$${local_ip_v6}"/>
<param name="rtp-ipvalue="$${local_ip_v4}"/>
<param name="local-networkvalue="localnet.auto"/>
<param name="outbound-codec-stringvalue="opus,vp8"/>
<param name="inbound-codec-stringvalue="opus,vp8"/>
<param name="apply-candidate-aclvalue="localnet.auto"/>
<param name="apply-candidate-aclvalue="wan_v6.auto"/>
<param name="apply-candidate-aclvalue="wan_v4.auto"/>
<param name="apply-candidate-aclvalue="rfc1918.auto"/>
<param name="apply-candidate-aclvalue="any_v6.auto"/>
<param name="apply-candidate-aclvalue="any_v4.auto"/>
<param name="timer-namevalue="soft"/>
</profile>
</profiles>
</configuration>
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 9:33:37 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

О, вроде так понятней. Спасибо большое. А могу еще попросить internal.xml из сип профилей?


pátek 10. července 2015, 15:23:39, napsal jste:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 9:34:23 AM7/10/15
to freesw...@googlegroups.com
При звонка с verto он не используется.
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 9:35:11 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Я знаю, я просто хотел сравнить на сколько он отличается от того, что у меня используется для jssip-sipjs

pátek 10. července 2015, 15:34:18, napsal jste:

Vitaly Kovalyshyn

unread,
Jul 10, 2015, 9:36:56 AM7/10/15
to freesw...@googlegroups.com
<profile name="internal">

  <aliases>
    <!--
        <alias name="default"/>
    -->
  </aliases>

  <domains>
    <!-- indicator to parse the directory for domains with parse="true" to get gateways-->
    <!--<domain name="$${domain}" parse="true"/>-->
    <!-- indicator to parse the directory for domains with parse="true" to get gateways and alias every domain to this profile -->
    <!--<domain name="all" alias="true" parse="true"/>-->
    <domain name="all" parse="false"/>
  </domains>

  <settings>


    <!-- inject delay between dtmf digits on send to help some slow interpreters (also per channel with rtp_digit_delay var -->
    <!-- <param name="rtp-digit-delay" value="40"/>-->

    <!--
        When calls are in no media this will bring them back to media
        when you press the hold button.
    -->
  <!--<param name="media-option" value="resume-media-on-hold"/> -->
    <!--
        This will allow a call after an attended transfer go back to
        bypass media after an attended transfer.
    -->
    <!--<param name="media-option" value="bypass-media-after-att-xfer"/>-->
    <!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> -->
    <param name="debug" value="0"/>
    <!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
    <!-- <param name="shutdown-on-fail" value="true"/> -->
    <param name="sip-trace" value="no"/>
    <param name="sip-capture" value="no"/>

    <!-- Use presence_map.conf.xml to convert extension regex to presence protos for routing -->
    <!-- <param name="presence-proto-lookup" value="true"/> -->


    <!-- Don't be picky about negotiated DTMF just always offer 2833 and accept both 2833 and INFO -->
    <!--<param name="liberal-dtmf" value="true"/>-->


    <!--
        Sometimes, in extremely rare edge cases, the Sofia SIP stack may stop
        responding. These options allow you to enable and control a watchdog
        on the Sofia SIP stack so that if it stops responding for the
        specified number of milliseconds, it will cause FreeSWITCH to crash
        immediately. This is useful if you run in an HA environment and
        need to ensure automated recovery from such a condition. Note that if
        your server is idle a lot, the watchdog may fire due to not receiving
        any SIP messages. Thus, if you expect your system to be idle, you
        should leave the watchdog disabled. It can be toggled on and off
        through the FreeSWITCH CLI either on an individual profile basis or
        globally for all profiles. So, if you run in an HA environment with a
        master and slave, you should use the CLI to make sure the watchdog is
        only enabled on the master.
        If such crash occurs, FreeSWITCH will dump core if allowed. The
        stacktrace will include function watchdog_triggered_abort().
    -->
    <param name="watchdog-enabled" value="no"/>
    <param name="watchdog-step-timeout" value="30000"/>
    <param name="watchdog-event-timeout" value="30000"/>

    <param name="log-auth-failures" value="false"/>
    <param name="forward-unsolicited-mwi-notify" value="false"/>

    <param name="context" value="public"/>
    <param name="rfc2833-pt" value="101"/>
    <!-- port to bind to for sip traffic -->
    <param name="sip-port" value="5070"/>
    <param name="dialplan" value="XML"/>
    <param name="dtmf-duration" value="2000"/>
    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
    <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
    <param name="rtp-timer-name" value="soft"/>
    <!-- ip address to use for rtp, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
    <param name="rtp-ip" value="$${local_ip_v4}"/>
    <!-- ip address to bind to, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
    <param name="sip-ip" value="$${local_ip_v4}"/>
    <param name="hold-music" value="$${hold_music}"/>
    <param name="apply-nat-acl" value="nat.auto"/>

    <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
    <param name="ext-sip-ip" value="$${external_sip_ip}"/>

    <!-- (default true) set to false if you do not wish to have called party info in 1XX responses -->
    <!-- <param name="cid-in-1xx" value="false"/> -->

    <!-- extended info parsing -->
    <!-- <param name="extended-info-parsing" value="true"/> -->

    <!--<param name="aggressive-nat-detection" value="true"/>-->
    <!--
        There are known issues (asserts and segfaults) when 100rel is enabled.
        It is not recommended to enable 100rel at this time.
    -->
    <!--<param name="enable-100rel" value="true"/>-->

    <!-- uncomment if you don't wish to try a next SRV destination on 503 response -->
    <!-- RFC3263 Section 4.3 -->
    <!--<param name="disable-srv503" value="true"/>-->

    <!-- Enable Compact SIP headers. -->
    <!--<param name="enable-compact-headers" value="true"/>-->
    <!--
        enable/disable session timers
    -->
    <!--<param name="enable-timer" value="false"/>-->
    <!--<param name="minimum-session-expires" value="120"/>-->
    <param name="apply-inbound-acl" value="domains"/>
    <!--
        This defines your local network, by default we detect your local network
        and create this localnet.auto ACL for this.
    -->
    <param name="local-network-acl" value="localnet.auto"/>
    <!--<param name="apply-register-acl" value="domains"/>-->
    <!--<param name="dtmf-type" value="info"/>-->


    <!-- 'true' means every time 'first-only' means on the first register -->
    <!--<param name="send-message-query-on-register" value="true"/>-->

    <!-- 'true' means every time 'first-only' means on the first register -->
    <!--<param name="send-presence-on-register" value="first-only"/> -->


    <!-- Caller-ID type (choose one, can be overridden by inbound call type and/or sip_cid_type channel variable -->
    <!-- Remote-Party-ID header -->
    <!--<param name="caller-id-type" value="rpid"/>-->

    <!-- P-*-Identity family of headers -->
    <!--<param name="caller-id-type" value="pid"/>-->

    <!-- neither one -->
    <!--<param name="caller-id-type" value="none"/>-->

    <!--enable to use presence -->
    <param name="manage-presence" value="true"/>
    <!-- send a presence probe on each register to query devices to send presence instead of sending presence with less info -->
    <!--<param name="presence-probe-on-register" value="true"/>-->
    <!--<param name="manage-shared-appearance" value="true"/>-->
    <!-- used to share presence info across sofia profiles -->
    <!-- Name of the db to use for this profile -->
    <!--<param name="dbname" value="share_presence"/>-->
    <param name="presence-hosts" value="$${domain},$${local_ip_v4}"/>
    <param name="presence-privacy" value="$${presence_privacy}"/>
    <!-- ************************************************* -->

    <!-- This setting is for AAL2 bitpacking on G726 -->
    <!-- <param name="bitpacking" value="aal2"/> -->
    <!--max number of open dialogs in proceeding -->
    <!--<param name="max-proceeding" value="1000"/>-->
    <!--session timers for all call to expire after the specified seconds -->
    <!--<param name="session-timeout" value="1800"/>-->
    <!--set to 'greedy' if you want your codec list to take precedence -->
    <param name="inbound-codec-negotiation" value="generous"/>
    <!-- if you want to send any special bind params of your own -->
    <!--<param name="bind-params" value="transport=udp"/>-->
    <!--<param name="unregister-on-options-fail" value="true"/>-->
    <!-- Send an OPTIONS packet to all registered endpoints -->
    <!--<param name="all-reg-options-ping" value="true"/>-->
    <!-- Send an OPTIONS packet to NATed registered endpoints. Can be 'true' or 'udp-only'. -->
    <!--<param name="nat-options-ping" value="true"/>-->
    <!--<param name="sip-options-respond-503-on-busy" value="true"/>-->
    <!--<param name="sip-messages-respond-200-ok" value="true"/>-->
    <!--<param name="sip-subscribe-respond-200-ok" value="true"/>-->

    <!-- TLS: disabled by default, set to "true" to enable -->
    <param name="tls" value="$${internal_ssl_enable}"/>
    <!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
    <param name="tls-only" value="false"/>
    <!-- additional bind parameters for TLS -->
    <param name="tls-bind-params" value="transport=tls"/>
    <!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
    <param name="tls-sip-port" value="$${internal_tls_port}"/>
    <!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
    <!--<param name="tls-cert-dir" value=""/>-->
    <!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
    <param name="tls-passphrase" value=""/>
    <!-- Verify the date on TLS certificates -->
    <param name="tls-verify-date" value="true"/>
    <!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
    <!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
    <param name="tls-verify-policy" value="none"/>
    <!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
    <param name="tls-verify-depth" value="2"/>
    <!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
    <param name="tls-verify-in-subjects" value=""/>
    <!-- TLS version default: tlsv1,tlsv1.1,tlsv1.2 -->
    <param name="tls-version" value="$${sip_tls_version}"/>

    <!-- TLS ciphers default: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH  -->
    <param name="tls-ciphers" value="$${sip_tls_ciphers}"/>

    <!-- turn on auto-flush during bridge (skip timer sleep when the socket already has data)
         (reduces delay on latent connections default true, must be disabled explicitly)-->
    <!--<param name="rtp-autoflush-during-bridge" value="false"/>-->

    <!--If you don't want to pass through timestamps from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
    <!--<param name="rtp-rewrite-timestamps" value="true"/>-->
    <!--<param name="pass-rfc2833" value="true"/>-->
    <!--If you have ODBC support and a working dsn you can use it instead of SQLite-->

    <!--Uncomment to set all inbound calls to no media mode-->
    <!--<param name="inbound-bypass-media" value="true"/>-->

    <!--Uncomment to set all inbound calls to proxy media mode-->
    <!--<param name="inbound-proxy-media" value="true"/>-->

    <param name="inbound-codec-negotiation" value="generous"/>

    <!-- Let calls hit the dialplan before selecting codec for the a-leg -->
    <param name="inbound-late-negotiation" value="true"/>

    <!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
    <param name="inbound-zrtp-passthru" value="true"/>

    <!-- this lets anything register -->
    <!--  comment the next line and uncomment one or both of the other 2 lines for call authentication -->
    <!-- <param name="accept-blind-reg" value="true"/> -->

    <!-- accept any authentication without actually checking (not a good feature for most people) -->
    <!-- <param name="accept-blind-auth" value="true"/> -->

    <!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
    <!-- <param name="suppress-cng" value="true"/> -->

    <!--TTL for nonce in sip auth-->
    <param name="nonce-ttl" value="60"/>
    <!--Uncomment if you want to force the outbound leg of a bridge to only offer the codec
        that the originator is using-->
    <!--<param name="disable-transcoding" value="true"/>-->
    <!-- Handle 302 Redirect in the dialplan -->
    <!--<param name="manual-redirect" value="true"/> -->
    <!-- Disable Transfer -->
    <!--<param name="disable-transfer" value="true"/> -->
    <!-- Disable Register -->
    <!--<param name="disable-register" value="true"/> -->
    <!-- Used for when phones respond to a challenged ACK with method INVITE in the hash -->
    <!--<param name="NDLB-broken-auth-hash" value="true"/>-->
    <!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
    <!--<param name="NDLB-received-in-nat-reg-contact" value="true"/>-->
    <param name="auth-calls" value="$${internal_auth_calls}"/>
    <!-- Force the user and auth-user to match. -->
    <param name="inbound-reg-force-matching-username" value="true"/>
    <!-- on authed calls, authenticate *all* the packets not just invite -->
    <param name="auth-all-packets" value="false"/>

    <!-- Can be 'true' or 'contact' -->
    <param name="multiple-registrations" value="true"/>
    <param name="auth-calls" value="true"/>

    <!-- rtp inactivity timeout -->
    <param name="rtp-timeout-sec" value="300"/>
    <param name="rtp-hold-timeout-sec" value="1800"/>
    <!-- VAD choose one (out is a good choice); -->
    <!-- <param name="vad" value="in"/> -->
    <!-- <param name="vad" value="out"/> -->
    <!-- <param name="vad" value="both"/> -->
    <!--<param name="alias" value="sip:10.0.1.251:5555"/>-->

    <!--<param name="delete-subs-on-register" value="false"/>-->

    <!-- launch a new thread to process each new inbound register when using heavier backends -->
    <!-- <param name="inbound-reg-in-new-thread" value="true"/> -->

    <!-- enable rtcp on every channel also can be done per leg basis with rtcp_audio_interval_msec variable set to passthru to pass it across a call-->
    <!--<param name="rtcp-audio-interval-msec" value="5000"/>-->
    <!--<param name="rtcp-video-interval-msec" value="5000"/>-->

    <!--force suscription expires to a lower value than requested-->
    <!--<param name="force-subscription-expires" value="60"/>-->

    <!-- add a random deviation to the expires value of the 202 Accepted -->
    <!--<param name="sip-subscription-max-deviation" value="120"/>-->

    <!-- disable register and transfer which may be undesirable in a public switch -->
    <!--<param name="disable-transfer" value="true"/>-->
    <!--<param name="disable-register" value="true"/>-->

    <!--
        enable-3pcc can be set to either 'true' or 'proxy', true accepts the call
        right away, proxy waits until the call has been answered then sends accepts
    -->
    <!--<param name="enable-3pcc" value="true"/>-->

    <!-- use at your own risk or if you know what this does.-->
    <!--<param name="NDLB-force-rport" value="true"/>-->
    <!--
        Choose the realm challenge key. Default is auto_to if not set.

        auto_from  - uses the from field as the value for the sip realm.
        auto_to    - uses the to field as the value for the sip realm.
        <anyvalue> - you can input any value to use for the sip realm.

        If you want URL dialing to work you'll want to set this to auto_from.

        If you use any other value besides auto_to or auto_from you'll
        loose the ability to do multiple domains.

        Note: comment out to restore the behavior before 2008-09-29
    -->
    <param name="challenge-realm" value="auto_from"/>
    <!--<param name="disable-rtp-auto-adjust" value="true"/>-->
    <!-- on inbound calls make the uuid of the session equal to the sip call id of that call -->
    <!-- on outbound calls set the callid to match the uuid of the session -->
    <!-- set to false disable this feature -->
    <!--<param name="rtp-autofix-timing" value="false"/>-->

    <!-- set this param to false if your gateway for some reason hates X- headers that it is supposed to ignore-->
    <!--<param name="pass-callee-id" value="false"/>-->

    <!-- clear clears them all or supply the name to add or the name
         prefixed with ~ to remove valid values:

           clear
           CISCO_SKIP_MARK_BIT_2833
           SONUS_SEND_INVALID_TIMESTAMP_2833

    -->
    <!--<param name="auto-rtp-bugs" data="clear"/>-->

    <!-- the following can be used as workaround with bogus SRV/NAPTR records -->
    <!--<param name="disable-srv" value="false" />-->
    <!--<param name="disable-naptr" value="false" />-->

    <!-- The following can be used to fine-tune timers within sofia's transport layer
         Those settings are for advanced users and can safely be left as-is -->

    <!-- Initial retransmission interval (in milliseconds).
         Set the T1 retransmission interval used by the SIP transaction engine.
         The T1 is the initial duration used by request retransmission timers A and E (UDP) as well as response retransmission timer G.   -->
    <!-- <param name="timer-T1" value="500" /> -->

    <!--  Transaction timeout (defaults to T1 * 64).
         Set the T1x64 timeout value used by the SIP transaction engine.
         The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine.
         The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1. -->
    <!-- <param name="timer-T1X64" value="32000" /> -->


    <!-- Maximum retransmission interval (in milliseconds).
         Set the maximum retransmission interval used by the SIP transaction engine.
         The T2 is the maximum duration used for the timers E (UDP) and G by the SIP transaction engine.
         Note that the timer A is not capped by T2. Retransmission interval of INVITE requests grows exponentially
         until the timer B fires.  -->
    <!-- <param name="timer-T2" value="4000" /> -->

    <!--
        Transaction lifetime (in milliseconds).
        Set the lifetime for completed transactions used by the SIP transaction engine.
        A completed transaction is kept around for the duration of T4 in order to catch late responses.
        The T4 is the maximum duration for the messages to stay in the network and the duration of SIP timer K. -->
    <!-- <param name="timer-T4" value="4000" /> -->

    <!-- Turn on a jitterbuffer for every call -->
    <!-- <param name="auto-jitterbuffer-msec" value="60"/> -->


    <!-- By default mod_sofia will ignore the codecs in the sdp for hold/unhold operations
         Set this to true if you want to actually parse the sdp and re-negotiate the codec during hold/unhold.
         It's probably not what you want so stick with the default unless you really need to change this.
    -->

  </settings>
</profile>
signature.asc

Denis Jakovlev

unread,
Jul 10, 2015, 9:44:52 AM7/10/15
to Vitaly Kovalyshyn
Dobrý den,

Спасибо большое ! буду разбираться.

pátek 10. července 2015, 15:36:51, napsal jste:

Reply all
Reply to author
Forward
0 new messages