[Live-devel] Multiple mplayers always decoding last stream when using sdp file

Ron Ytsma ripcurl01 at gmail.com
Fri Jan 27 06:16:38 PST 2012


Hi,

I am dealing with a weird issue in the either mplayer or live555 library,
and I hope you can help me on this one. Perhaps it is a known bug.

The Failure:
 * When I invoke 1st mplayer with stream1.sdp
and
 * wait till 1st mplayer starts decoding 1st videostream
then
 * add 2nd mplayer with stream2.sdp
 => the 1st and 2nd mplayer start decoding the second video.
When I stop the 2nd mplayer, the 1st mplayer will either exit or start
decoding the first video again.
This effect continues while adding more videos (3rd 4th etc. They all start
decoding the lastly added video.

Monitoring the network shows that both streams are still streaming,
PARSE_PMT msg shows that the stream decoding has switched when the 2nd
mplayer allocates + initiates the 2nd stream.
Visible through the PID numbers. It is also visible in the index numbers:
The 1st mplayer shows (also visible below in the output snippet):
 * streamindex 0 is the 1st stream video channel
 * streamindex 1 is the 2nd stream video channel
 * streamindex 2 is the 2nd stream audio channel
Groupsock shows "4" for both mplayer instances, with different multicast
addresses.

The behavior and setup:
 * I am hosting 2 separate video's through VLC on multicast RTP
239.192.140.1 and 239.192.140.2 on port 5004 (same port for both!) on a
windows laptop
 * I am streaming from a linux laptop with mplayer-vaapi client
 * stream1 is video only
 * stream2 is video and audio stream.
 * When I invoke mplayer with stream1.sdp, the 1st stream starts correctly.
 * When I invoke mplayer and start stream2.sdp the 2nd stream starts
correctly.
 => Ok so my video's are hosted correctly (i think)

The problem does not occur when I use e.g. port 5006 on the 2nd video and
5004 on the first video.
The problem does not occur when I use rtp://239.192.140.1:5004 and rtp://
239.192.140.2:5004 (but that is not using LIVE555)

The problem occurs only when using multiple instances of mplayer with local
SDP file definitions, which have video streams defined on the same port
(5004).

It looks to me that a stream is overwritten or incorrectly selected from a
different instance of mplayer into liveMedia library.

I have tried more or less all live555 library versions since 2009-06-02 up
to 2012-01-13 and most mplayer versions from svn revision 32xxx to 34xxxx.
They all react the same.

I also googled a bit and found some more or less related issues that
occurred in the past:
 * http://lists.live555.com/pipermail/live-devel/2010-August/012455.html(resulting
in changelog
 * http://web.archiveorange.com/archive/v/rmoqPnRacu5kiQlVWtKM

My questions:
 Can someone reproduce this behavior?
 Am I overlooking something or is this a real bug?
 Is decoding multiple videos on 1 port a known limitation of either live555
(or mplayer)?
 Oh mightly mailinglist, can you help me? ;)
 I am capable to compile/code/stream/test suggestions.


--------------------
sdp file details:
 * stream1.sdp (videostream definition 1)
cat stream1.sdp
v=0
o=- 15184584643367601205 15184584643367601205 IN IP4 gebakkie
s=Unnamed1
i=N/A
c=IN IP4 239.192.140.1
m=video 5004 RTP/AVP 33
 * stream2.sdp (videostream definition 2)
cat 1.sdp
v=0
o=- 15184584643367601207 15184584643367601207 IN IP4 gebakkie
s=Unnamed2
i=N/A
c=IN IP4 239.192.140.2
m=video 5004 RTP/AVP 33
--------------------
my mplayer invocation fluff:
 * mplayer -vo vaapi -x 512 -y 300 -geometry +0+0 sdp://stream1.sdp
 * mplayer -vo vaapi -x 512 -y 300 -geometry+512+0 sdp://stream2.sdp
--------------------
mplayer details:
MPlayer SVN-r34365-4.3.4 (C) 2000-2011 MPlayer Team
configure
--prefix=/usr --confdir=/etc/mplayer --disable-mencoder --disable-gui
--disable-langinfo --disable-lirc --disable-joystick --disable-apple-remote
--disable-apple-ir --disable-xf86keysym  --disable-radio
--disable-radio-capture --disable-radio-v4l2 --disable-radio-bsdbt848
--disable-tv --disable-tv-v4l1 --disable-tv-v4l2 --disable-tv-bsdbt848
--disable-pvr --disable-smb --disable-librtmp --disable-vcd
--disable-bluray --disable-dvdnav --disable-dvdread --disable-cdparanoia
--disable-cddb --disable-sortsub --disable-maemo --disable-macosx-finder
--disable-macosx-bundle --disable-inet6 --disable-ftp --disable-vstream
--disable-w32threads --disable-ass-internal --disable-ass --disable-arts
--disable-esd --disable-pulse --disable-jack --disable-nas
--disable-sgiaudio --disable-sunaudio --disable-kai --disable-dart
--disable-win32waveout --disable-vidix --disable-dga2 --disable-dga1
--disable-vesa --disable-svga --disable-sdl --disable-kva --disable-aa
--disable-caca --disable-ggi --disable-ggiwmh --disable-direct3d
--disable-directx --disable-dxr2 --disable-dxr3 --disable-ivtv
--disable-v4l2 --disable-dvb --disable-mga --disable-xmga --disable-vdpau
--disable-3dfx --disable-tdfxfb --disable-wii --disable-directfb
--disable-zr --disable-bl --disable-tga --disable-pnm --disable-md5sum
--disable-quartz --disable-xanim --disable-fbdev --disable-matrixview
--disable-ffmpeg_so
-----------
ffmpeg configure
--disable-doc --enable-network --enable-vaapi --disable-vdpau --disable-vda
--disable-vda --disable-dxva2 --disable-encoders --disable-bsfs
--disable-indevs --disable-nonfree --enable-gpl
------------
1st Mplayer output on switchover moment:

COLLECT_SECTION, start: 64, size: 17, collected: 17

SKIP: 0+1, TID: 0, TLEN: 13, COLLECTED: 17

PARSE_PAT: section_len: 13, section 0/0

PROG: 1 (1-th of 1), PMT: 66

COLLECT_SECTION, start: 64, size: 22, collected: 22

SKIP: 0+1, TID: 2, TLEN: 18, COLLECTED: 22

FILL_PMT(prog=1), PMT_len: 22, IS_START: 64, TS_PID: 66, SIZE=22, M=0,
ES_CNT=1, IDX=0, PMT_PTR=0xa28ea20

PARSE_PMT(1 INDEX 0), STREAM: 0, FOUND pid=0x55 (85), type=0x10000005,
ES_DESCR_LENGTH: 0, bytes left: 0

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

V:13572.0 164/164  2%  1%  0.0% 0 0 0% ^[[J^M07:12:27 Groupsock(4:
239.192.140.1, 5004, 255): read 1328 bytes from 172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3



COLLECT_SECTION, start: 64, size: 17, collected: 17

SKIP: 0+1, TID: 0, TLEN: 13, COLLECTED: 17

PARSE_PAT: section_len: 13, section 0/0

PROG: 1 (1-th of 1), PMT: 66

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

07:12:27 Groupsock(4: 239.192.140.1, 5004, 255): read 1328 bytes from
172.16.24.3

COLLECT_SECTION, start: 64, size: 48, collected: 22

SKIP: 0+1, TID: 2, TLEN: 44, COLLECTED: 48

FILL_PMT(prog=1), PMT_len: 48, IS_START: 64, TS_PID: 66, SIZE=48, M=0,
ES_CNT=1, IDX=0, PMT_PTR=0xa28ea20

PROG DESCR, TAG=1d, LEN=13(d)

PARSE_MP4_DESCRIPTORS, len=11

TAG=2 (0x2), DESCR_len=7, len=11, j=3

PARSE_MP4_IOD: len=7, IOD_ID=1

...descr id: 0xa, len=4

Language Descriptor: eng

PARSE_PMT(1 INDEX 1), STREAM: 0, FOUND pid=0x90 (144), type=0x4134504d,
ES_DESCR_LENGTH: 6, bytes left: 5

PARSE_PMT(1 INDEX 2), STREAM: 1, FOUND pid=0x91 (145), type=0x10000005,
ES_DESCR_LENGTH: 0, bytes left: 0

-----------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20120127/2f1c8a79/attachment-0001.html>


More information about the live-devel mailing list