[Live-devel] Open RTSP and video file splitting...
julien@nomadsystems
julien at nomadsystems.com.au
Tue Aug 20 04:05:44 PDT 2013
> I need to split an RTSP feed into multiple files of 30 seconds. I have
> done
> what has been suggested in the thread by sub-classing "QuickTimeFileSink"
> and in the "QuickTimeFileSink::afterGettingFrame" ( after sync point )
> re-open a new file without stopping the RTSP session.
>
> I indeed get the data into multiple files of 30 seconds, BUT the stream
> doesn't seem to be in the right spot to re-start the new files. So in
> consequence only the first file is playable.
Snippet Regarding the un-playable file I feel a bit silly , but it was
just missing the
re-initialization of the "fHaveCompletedOutputFile = false" to write the
footer
and voila.
Having said that, I still have the problem of not starting the next
files at the
right spot I believe. When I play them I have a few seconds where nothing
moves before to pick up what I suppose is a key frame.
So in "QuickTimeFileSink::afterGettingFrame" this is what I do : Snippet
Snippet
void QuickTimeFileSink
::afterGettingFrame(void* clientData,unsigned packetDataSize,
unsigned /*numTruncatedBytes*/,
struct timeval presentationTime,
unsigned /*durationInMicroseconds*/) {
SubsessionIOState* ioState = (SubsessionIOState*)clientData;
if (!ioState->syncOK(presentationTime)) {
// Ignore this data:
ioState->fOurSink.continuePlaying();
return;
}
// [my-code]
Boolean keyFrame = (ioState->fBuffer &&
*(ioState->fBuffer->dataStart()) == H264_IDR_FRAME);
ioState->fOurSink.afterGettingFrame1(
packetDataSize, presentationTime, keyFrame);
// [/my-code]
ioState->afterGettingFrame(packetDataSize, presentationTime);
}
"afterGettingFrame1" is the handler in my subclassed QuickTimeFileSink
class I use to do the file close/re-open when the "keyFrame = true" and
the 30 seconds elapsed.
But for some reasons, this doesn't work.
Any ideas why ?
Many thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20130820/d9e5bdb6/attachment-0001.html>
More information about the live-devel
mailing list