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