Exemple #1
0
        public Task <TimeSpan> Seek(TimeSpan time, CancellationToken token)
        {
            if (!IsSeekingSupported())
            {
                throw new SeekException("Seeking is not supported");
            }

            videoPipeline.Pause();
            audioPipeline.Pause();

            var seekPosition = RepositionPipelines(time);

            videoPipeline.Resume();
            audioPipeline.Resume();

            return(Task.FromResult(seekPosition));
        }
Exemple #2
0
        public Task <TimeSpan> Seek(TimeSpan time, CancellationToken token)
        {
            if (!IsSeekingSupported())
            {
                throw new SeekException("Seeking is not supported");
            }

            videoPipeline.Pause();
            audioPipeline.Pause();

            var videoSegmentStart = videoPipeline.Seek(time);

            audioPipeline.Seek(videoSegmentStart);
            audioPipeline.PacketPredicate = packet => !packet.ContainsData() || packet.Pts >= videoSegmentStart;

            videoPipeline.Resume();
            audioPipeline.Resume();

            return(Task.FromResult(videoSegmentStart));
        }
 public void Resume()
 {
     videoPipeline.Resume();
     audioPipeline.Resume();
 }