BTW Is there any reliable player for RTP/Speex? Maybe my problem is a player that doesn't support the protocol and codec (I tested with VLC and mplayer)

I'm not sure about this. You will need to ask about this on a VLC and a MPlayer mailing list.


I'm trying to implement streaming Speex encoded audio data (RTP Speex payload) from a microphone. I've read FAQ and checked mailing list so I had point of start but now I can not go further.
I've decided to start first with streaming WAV file transcoded to Speex.
I created SpeexAudioFileServerMediaSubsession which was based on WAVAudioFileServerMediaSubsession but when playing the stream VLC I get only messages (with no audio):
....
live555 debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
main error: ES_OUT_RESET_PCR called
main debug: Buffering 0%
main debug: Buffering 17%
main debug: Buffering 34%
main debug: Buffering 51%
main debug: Buffering 68%
main debug: Buffering 85%
main debug: Stream buffering done (1238 ms in 1238 ms)
main debug: Decoder buffering done in 0 ms
main debug: End of audio preroll
main warning: PTS is out of range (15713989), dropping buffer
main warning: PTS is out of range (15900246), dropping buffer
main warning: PTS is out of range (16089345), dropping buffer
main warning: PTS is out of range (16271773), dropping buffer
main warning: PTS is out of range (16458644), dropping buffer
main warning: PTS is out of range (16646190), dropping buffer
main warning: PTS is out of range (16832643), dropping buffer
main warning: PTS is out of range (17018080), dropping buffer

I wonder if I have to change fPresentationTime? Original time comes from WAVAudioFileSource but after encoding frames with Speex should I do any changes to it?

From what I can tell, the "fPresentationTime" values from "WAVAudioFileSource" are being passed correctly through your new "SpeexTranscoder" class (which I presume is a "FramedFilter"). One way you can check this, though, is by instrumenting the "MultiFramedRTPSink::afterGettingFrame1()" function ("liveMedia/MultiFramedRTPSink.cpp", line 233) to check whether the parameter values (frameSize, numTruncatedBytes, presentationTime, durationInMicroseconds) look reasonable.

If this looks OK, then your next step should be to work with the VLC (and/or MPlayer) developers to figure out why they are not playing the incoming Speex audio stream properly. (They use our library for RTP input, and we handle incoming Speex/RTP streams, but I don't know whether they are decoding/playing it OK.)
--

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to