Appsrc encoded video playback

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Appsrc encoded video playback

Jon L

Hello everyone,

 

I have a system that provides me with raw encoded video frames on demand, current encodings are H264, MJPEG and H265.

 

I am creating a buffer for each frame and using Appsrc as the entry point into a pipeline to render them.  The pipelines are created in code but their launch line equivalents are shown below

 

appsrc caps=”video/x-h264” format=time block=true is-live=true | queue | h264parse | avdec_h264 | autovideosink

 

appsrc caps=”image/jpeg” format=time block=true is-live=true | queue | jpegdec | autovideosink

 

appsrc caps=”video/x-h265” format=time block=true is-live=true | queue | h265parse | avdec_h265 | autovideosink

 

In addition to the video data the application also provides a couple of timestamps, one for the current frame and one for the next.

 

From this information, I can determine the duration of each frame and add this to the buffer that I push into Appsrc (code snippet below)

 

Using GstSharp V1.16.0 with gstreamer v1.16.0 (code based on the appsrc example in the Application Development Manual, from the Pipeline Manipulation section)

 

                buffer.PTS = _timestamp;

 

                var duration = Gst.Util.Uint64Scale(durationInMs, Gst.Constants.SECOND, 1000);

 

                buffer.duration = duration;

 

                _timestamp += duration

 

                var flowReturn = appsrc.PushBuffer(buffer)

 

This all works fine when pushing h264 and mjpeg frames but I am having no luck with H265, video appears frozen for long periods interspersed with brief playback of a few frames.

 

Any help or information would be appreciated.

 

Kind Regards

 

Jon

 

PS

 

I have found that H265 works if I let appsrc do the timestamping.  However, this breaks h264 and mjpeg, they appear to play as fast as the frames can be delivered

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel