Hello.

I have an RTSP server, it is fully our code, but it is based on Live555. This server sends to a video player (ffplay or our custom player) a stream, which earlier was recorded by another application. So, this system is an video archive and the RTSP server is a player here.

It works fine, but I faced a problem. I recorded a stream from a USB web camera. Using webrtc I change resolution and continue recording. So, the archive containes frames with different resolutions (and may be different SPS PPS). After I want to play them. Plaing works before the changing resolution. The RTSP server is a FramedSource:

class VideoSource : public FramedSource
{
  ...
protected:
  void doGetNextFrame() override;
}

voidVideoSource::doGetNextFrame()
{
    ...
    //sending frames
    memcpy(fTo, frame_.raw_data.data(), frame_.raw_data.size());
    fFrameSize = frame_.raw_data.size();

    ...
    //next circle
    nextTask() = envir().taskScheduler().scheduleDelayedTask(0, 
(TaskFunc*)FramedSource::afterGetting, this);
}

This circle works before changing resolution. After the last frame sending it never called again. And live555 stops the stream. Why?



Denis
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to