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)); }
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(); }