I am trying to capture a live stream (which is MPEG2TS) via openRTSP and
instead of recording it in 'video-MP2T-1', index the received video
on-live.

FramedSource* video1 = sources[0]; //I caught it from MediaSubsession
MediaSink* outputIndexerSink = FileSink::createNew(*env, "out.tsx");
FramedSource* indexer = MPEG2IFrameIndexFromTransportS
tream::createNew(*env, video1);

outputIndexerSink->startPlaying(*indexer, subsessionAfterPlaying, NULL);

when I run it, I get these errors:
MultiFramedRTPSource::doGetNextFrame1(): The total received frame size exceeds the client's buffer size (188). 940 bytes of trailing data will be dropped!

what seems to be the problem?

In principle, what you are doing is exactly right. In practice, though, the problem is that the "MPEG2IFrameIndexFromTransportStream" object reads just one 188-byte MPEG Transport 'packet' at a time, into a 188-byte buffer. However, the upstream object "SimpleRTPSource" (a subclass of "MultiFramedRTPSource") delivers a whole network packet's worth of data, which is usually much larger.

To overcome this, you will need to write a new filter object and insert it between "video1" and "indexer" in your code. This filter object will be of a subclass of "FramedFilter" that you'll need to write yourself. It will read network packet data into a large buffer, and deliver - from this buffer - 188-byte MPEG Transport 'packets', one-at-a-time, to its downstream reader ("indexer").
--

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

Reply via email to