long run gstreamer stops working without message
Thomas DEBESSE
thomas.debesse at rcf.fr
Fri Jul 6 07:04:52 PDT 2012
Hello, I have a strange problem : I use gstreamer to stream sound
between two computer, it's work nicely but after a few hours, I get
silence without information in the logs. I use also gstreamer to
connect two audio interfaces (one play the sound recorded by the
other). It's work nicely but after a few hours, I get noise (the sound
is completely distorted).
## First case
On a computer (sender)
export GST_DEBUG="3"
gst-launch-0.10 -v alsasrc device=intel_in \
! audioconvert \
! audioresample \
! queue max-size-buffers=100 leaky=downstream \
! "audio/x-raw-int,rate=44100,width=16,channels=2" \
! celtenc cbr=true bitrate=64 framesize=128 \
! rtpceltpay \
! udpsink host=prjevalski port=4951
I have also tested with "queue max-size-buffers=100 leaky=downstream"
after "audioresample" element.
on another computer (receiver)
export GST_DEBUG="3"
caps="application/x-rtp, media=(string)audio, clock-rate=(int)44100,
encoding-name=(string)CELT, encoding-params=(string)2,
frame-size=(string)480, payload=(int)96"
gst-launch-0.10 -v udpsrc uri="udp://prjevalski:4951" caps="$caps" \
! gstrtpjitterbuffer latency=60 drop-on-latency=true \
! rtpceltdepay \
! celtdec \
! audioconvert \
! audioresample \
! "audio/x-raw-int,rate=44100,width=16,channels=2" \
! alsasink device=nvidia_front sync=false
I've also tested with "queue max-size-buffers=100 leaky=downstream"
before "audioconvert" element.
The sound is transmitted for several hours before I get silence.
For example, at 5 PM yesterday I launched these commands, the last
gstreamer's output on sender and receiver are form 5 am, but this
morning but no sound came out.
In tcpdump, I still see a rtp stream
I built the same pipeline using python.
When silence occur, a simple (stopping and replaying the receiver
gstreamer pipeline)
receiver.set_state(gst.STATE_NULL)
receiver.set_state(gst.STATE_PLAYING)
gives me the sound.
Both computers are on a local network, (I first had this problem using
internet but using a local network the bug also occurs)
I configure my alsa interface in this way (using both plug and
dmix/dsnoop module) :
pcm.intel_front {
type plug
slave.pcm {
type dmix
ipc_key 1024
slave {
pcm "front:0,0"
}
}
}
pcm.intel_in {
type plug
slave.pcm {
type dsnoop
ipc_key 1024
slave {
pcm "hw:0,0"
}
}
}
I tested these alsa interfaces :
lspci :
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
05:04.0 Multimedia audio controller: Creative Labs CA0106 Soundblaster
# Audigy SE
00:10.1 Audio device: nVidia Corporation MCP51 High Definition Audio (rev a2)
lsusb :
Bus 003 Device 003: ID 06f8:c001 Guillemot Corp. # Muse Pocket LT3
I get the bug with all of them.
## Second case
Also, I use another pipeline :
export GST_DEBUG="3"
gst-launch-0.10 -v alsasrc device=intel_in \
! audioconvert \
! audioresample \
! "audio/x-raw-int,rate=44100,width=16,channels=2" \
! alsasink device=audigy_front sync=false \
I have also tested with a "queue" after "audioresample" element.
The purpose of this pipeline is simply to play on a alsa interface
which is recorded from another alsa interface.
The sound is okay for several hours until it becomes suddenly a very
ugly mixture.
I've launched this pipeline yesterday at about 5 PM, the sound was
ugly this morning, and in a recording the sound is good and then the
sound deteriorates suddenly.
The logs report nothing since 5 PM :
0:00:00.446042222 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'alsasink0'
changed state to 4(PLAYING) successfully
0:00:00.446067645 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<capsfilter0> completed
state change to PLAYING
0:00:00.446083010 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child
'capsfilter0' changed state to 4(PLAYING) successfully
0:00:00.446100890 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<queue0> completed state
change to PLAYING
0:00:00.446114859 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'queue0'
changed state to 4(PLAYING) successfully
0:00:00.446132459 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<audioresample0>
completed state change to PLAYING
0:00:00.446146428 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child
'audioresample0' changed state to 4(PLAYING) successfully
0:00:00.446163749 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<audioconvert0> completed
state change to PLAYING
0:00:00.446177159 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child
'audioconvert0' changed state to 4(PLAYING) successfully
0:00:00.446193642 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<alsasrc0> completed
state change to PLAYING
0:00:00.446207331 27052 0x98e6640 INFO GST_STATES
gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'alsasrc0'
changed state to 4(PLAYING) successfully
0:00:00.446226608 27052 0x98e6640 INFO GST_STATES
gstelement.c:2236:gst_element_continue_state:<pipeline0> completed
state change to PLAYING
0:00:00.446240297 27052 0x98e6640 INFO GST_STATES
gstelement.c:2249:gst_element_continue_state:<pipeline0> posting
state-changed PAUSED to PLAYING
[then nothing]
## Some system information
I'm using Debian Squeeze with Gstreamer 0.10
some "apt-cache show" output :
libgstreamer0.10-0
Version: 0.10.30-1
libcelt0-0
Version: 0.7.1-1
libasound2
Version: 1.0.23-2.1
some "gst-inspect-0.10" output :
alsasrc
Long name: Audio source (ALSA)
Filename: /usr/lib/gstreamer-0.10/libgstalsa.so
Version: 0.10.30
Source module: gst-plugins-base
alsasink
Long name: Audio sink (ALSA)
Filename: /usr/lib/gstreamer-0.10/libgstalsa.so
Version: 0.10.30
Source module: gst-plugins-base
audioconvert
Long name: Audio converter
Filename: /usr/lib/gstreamer-0.10/libgstaudioconvert.so
Version: 0.10.30
Source module: gst-plugins-base
audioresample
Long name: Audio resampler
Filename: /usr/lib/gstreamer-0.10/libgstaudioresample.so
Version: 0.10.30
Source module: gst-plugins-base
queue
Long name: Queue
Filename: /usr/lib/gstreamer-0.10/libgstcoreelements.so
Version: 0.10.30
Source module: gstreamer
celtenc
Long name: Celt audio encoder
Filename: /usr/lib/gstreamer-0.10/libgstcelt.so
Version: 0.10.19
Source module: gst-plugins-bad
celtdec
Long name: Celt audio decoder
Filename: /usr/lib/gstreamer-0.10/libgstcelt.so
Version: 0.10.19
Source module: gst-plugins-bad
rtpceltpay
Long name: RTP CELT payloader
Filename: /usr/lib/gstreamer-0.10/libgstrtp.so
Version: 0.10.24
Source module: gst-plugins-good
rtpceltdepay
Long name: RTP CELT depayloader
Filename: /usr/lib/gstreamer-0.10/libgstrtp.so
Version: 0.10.24
Source module: gst-plugins-good
gstrtpjitterbuffer
Long name: RTP packet jitter-buffer
Filename: /usr/lib/gstreamer-0.10/libgstrtpmanager.so
Version: 0.10.24
Source module: gst-plugins-good
udpsrc
Long name: UDP packet receiver
Filename: /usr/lib/gstreamer-0.10/libgstudp.so
Version: 0.10.24
Source module: gst-plugins-good
udpsink
Long name: UDP packet sender
Filename: /usr/lib/gstreamer-0.10/libgstudp.so
Version: 0.10.24
Source module: gst-plugins-good
Do you think I forgot a few items or settings, or have I found a bug?
Thanks!
--
Thomas DEBESSE
RCF Méditerrannée
More information about the gstreamer-devel
mailing list