-1

I'm a newbie to pjsip and want to build an RTP stream receiver using pjsip.

Setup:

I want to use specific L16/16000/1 codec and have also enabled it in "config_site.h" during compiling the pjsip project and checked that its available

Receiver:

  • BeagleBone
  • CrossCompiled Pjsip and Installed all req. libs and sample apps

Sender:

  • Another Windows PC in the same Network using FFmpeg to transmit Audio Stream via Multicast

I got to know about streamutil.c(pjsip sample-apps) which does similar things to send and receive both. Now for the sake of easyness, I'm using the same Cross-Compiled binary streamutil.

SENDER:

..\ffmpeg -re -stream_loop -1 -i test.mp3 -ar 16000 -acodec pcm_s16be -b:a 128k -ac 1 -payload_type 123 -f rtp udp://239.255.255.211:5500?pkt_size=652

......
Output #0, rtp, to 'udp://239.255.255.211:5500?pkt_size=652':
  Metadata:
    title           : -----
    artist          : --------
    album           : -------
    date            : 2019
    track           : 1
    encoder         : Lavf58.20.100
    Stream #0:0: Audio: pcm_s16be, 16000 Hz, mono, s16, 256 kb/s
    Metadata:
      encoder         : Lavc58.35.100 pcm_s16be
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=GREATEST HITS (2) [1 HOUR 20 MINUTES LONG]
c=IN IP4 239.255.255.211/5
t=0 0
a=tool:libavformat 58.26.101
m=audio 5500 RTP/AVP 123
b=AS:256
a=rtpmap:97 L16/16000/1
a=rtpmap:123 L16/16000/1
a=control:streamid=

size=     833kB time=00:00:25.91 bitrate= 263.4kbits/s speed=   1x

RECIEVER LOG:

./streamutil --mcast-addr=239.255.255.211 --recv-only --codec=L16/16000/1
...
...
17:05:05.178     strm0x55dee1537f48  Jitter buffer starts returning normal frames (after 1 empty/lost)
17:05:05.246     strm0x55dee1537f48  Jitter buffer empty (prefetch=0), plc invoked
17:05:05.266     strm0x55dee1537f48  Jitter buffer starts returning normal frames (after 1 empty/lost)
17:05:05.325     strm0x55dee1537f48  Jitter buffer empty (prefetch=0), plc invoked
17:05:05.344     strm0x55dee1537f48  Jitter buffer starts returning normal frames (after 1 empty/lost)
17:05:05.422     strm0x55dee1537f48  Jitter buffer empty (prefetch=0), plc invoked

Tried So far:

  • set different payload_type
  • set specific codec in streamutil as parameter
  • all other parameters in FFmpeg ex. bitrate, clockrate, channels

Check working stream

I am facing no issue, if I use a *.sdp file to receive RTP stream in VLC.

SDP file:

v=0
o=- 0 0 IN IP4 127.0.0.1
s=GREATEST HITS (2) [1 HOUR 20 MINUTES LONG]
c=IN IP4 239.255.255.211/5
t=0 0
a=tool:libavformat 58.26.101
m=audio 5500 RTP/AVP 123
b=AS:256
a=rtpmap:97 PCMU/8000/1
a=rtpmap:123 PCMU/8000/1
a=control:streamid=

I have googled a lot but stuck now at this problem. So finally my question is that, How can I get the same Output via Pjsip without this Jitter Buffer logging and dropped sound?

Any help would be greatly appreciated.!

Community
  • 1
  • 1

1 Answers1

0

Please check audio bitrate, clock frequency that is set on the ffmpeg side. Make sure the timestamp of each packets are updated according to the clock frequency.( check the wireshark logs)

You are trying to do a VOD ( from mp3 file) and not live data transmission, may cause problem. please check the timestamp of the rtp packets.

mail2subhajit
  • 1,106
  • 5
  • 16
  • ya. I have already noticed that it happens only when I play a Sound File via FFMPEG. It works normally when I use it for Live voice streaming. Can you explain a little bit in details why is this happening? – Mayur Patel Aug 02 '19 at 13:03
  • The timestamp of the rtp packet for prerecorded files may not be the same as live voice streaming. check the timestamp difference of consecutive packets and compare with ptime set as per sdp. – mail2subhajit Aug 03 '19 at 22:57