Read frame by frame mp4 file, need example.

Mathieu Duponchelle mathieu at centricular.com
Fri Jul 28 10:48:31 UTC 2023


Hey, don't know about 2), but 1) means your processing code will
consume samples as fast as it can (but not faster). sync=true means
that rendering is synchronized to the clock, sync=false means appsink
will be paced by you pulling the samples out.

On Fri, 2023-07-28 at 12:51 +0300, Антон Шаров via gstreamer-devel
wrote:
> Thank you so much, I made it working. Main steps following:
>  var appSink = new AppSink("my_appsink");
>  appSink["sync"] = true; // what this setting do, btw?
> pipeline.SetState(State.Playing); // most important setting, not
> paused state
>  
>  while (_doLoop)
>             {
>              
>                 var sample = appSink.PullSample();
>                 _doLoop = TrySaveSampleToFile(sample,counter);
>                 counter++;
>                 var result = pipeline.QueryPosition(Format.Buffers,
> out var pos);
>                 result = pipeline.QueryPosition(Format.Bytes, out var
> bts);
>                 result = pipeline.QueryPosition(Format.Time, out var
> time);
>                 result = pipeline.QueryPosition(Format.Default, out
> var def);
>                 System.Diagnostics.Debug.WriteLine($"[cnt={counter}]
>  time = {time}, pos = {pos}, def ={def}, bytes = {bts}");
>              }
>  
>  
> Few questions remaining:
> 1)what is appSink["sync"] actually means?
> 2)
> [cnt=1]  time = 4189794700, pos = -1, def =0, bytes = -1
> ===NEW STEP EVENT RAISE=====
> [cnt=2]  time = 4460944600, pos = -1, def =0, bytes = -1
> ===NEW STEP EVENT RAISE=====
> [cnt=3]  time = 4750251000, pos = -1, def =0, bytes = -1
> ===NEW STEP EVENT RAISE=====
> [cnt=4]  time = 5028356600, pos = -1, def =0, bytes = -1
>  
> Why in query code above only time varies?
>  
> Again, thank you very much , Mathieu! 
>  
>  


More information about the gstreamer-devel mailing list