<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Gstreamer folks,<div><br></div><div>I am having a tough time getting things to work, and I could really use some help. Basically I just want to record an incoming video stream on the client so that I can seek a few seconds backwards (rewind) without having to ask the server for a different portion of the video stream.</div><div><br></div><div>Here’s my setup: </div><div><br></div><div>Server PC sends a h264 TS video stream to the client over TCP.</div><div>Client receives stream over TCP and needs to display it and potentially seek to a different portion of the stream.</div><div><br></div><div>Unfortunately, I wasn’t able to figure out a way to achieve this with a single pipeline on the client, because tcpclientsrc does not produce a seekable stream. I can display the stream but cannot seek to a different part of it. </div><div>I’ve tried a variety of formats, but right now I’m using MPEG-TS because it apparently behaves the best in streaming applications (?). </div><div><br></div><div>Next I tried this: to enable seeking on the client, what I ended up doing is saving the incoming stream to a local file on the client (using filesink) and then creating a second, separate pipeline to play it back from the client’s local storage. </div><div><br></div><div>The pipelines look like this: </div><div><br></div><div><b>Server: </b>uridecodebin uri=<a href="file:///path/to/server/video.mp4">file:///path/to/server/video.mp4</a> ! x264enc <options> ! mpegtsmux ! tcpserversink host=<client_IP> port=1234 </div><div><b>Client receive pipeline: </b>tcpclientsrc host=<client_IP> port=1234 ! queue ! filesink location=/path/to/client/tmp_video.ts</div><div><b>Client display pipeline: </b>uridecodebin uri=<a href="file:///path/to/client/tmp_video.ts">file:///path/to/client/tmp_video.ts</a> ! videoconvert ! autovideosink </div><div><br></div><div><br></div><div>I figured that since the Client display pipeline is just playing back local video, it should be able to seek. But I can’t even get the video to play at all, let alone at a different position than the front of the stream. </div><div><br></div><div>Is this even possible? Or is there a much better way to simultaneously receive an incoming streaming video and display a different part of it? My way seems inefficient and naive. </div><div><br></div><div><br></div><div>Thanks very much in advance,</div><div>Kevin Boos</div><div>Rice University</div></body></html>