Subject: This is Windows PC application. I need a WPF control inside WinForms form via ElementHost. We are migrating our application from WinForms to WPF, and this is just one of the displays, so I'll need to run it via Interop for a while until we convert all the app features to WPF.
There is a remote H.265 1080p+ video stream coming in via UDP. I'm using a local UDP video stream from a gstreamer to create this stream for testing:
gst-launch-1.0 filesrc location=[url removed, login to view] ! h265parse ! rtph265pay config-interval=1 ! application/x-rtp,encoding-name=H265 ! udpsink host=[url removed, login to view] port=5400
The new WPF control should be capable of:
- Receiving that H.265 1080p (or above) video(and audio) stream via UDP;
- Recording it to the local video file;
- At the same time playing back that video real time;
- Drawing some sample text and graphics on top of that video (on top of each video frame I assume). This should work sort of like airplane HUD. Heads Up Display - video of what a pilot sees with parameters and various lines drawn on top of every frame. This project only needs you to draw several example text and graphics lines on top of a video, so I would be able to port all our actual "HUD" graphics to this new display later. You will only need to display a few animated lines and some text on top of the video.
The local video file should use a video format, allowing for a fast random searches.
In addition, 3 major things:
- The control receiving the live video should handle all the reasonable connection and transmission errors, like, but not just connection break/resume, transmission stop/resume, no transmission/no signal at all, missing packets, etc. Once the transmission/connection starts/resumes, the control should immediately start the recording and a playback.
- While the control is receiving the live audio-video stream and is storing it to a local file, a user can, at any moment, click on a timeline (slider/trackbar representing the timing of the recorded video) to return to some previously recorded moment on video, for example the user missed something on a live video and wanted to check out what he missed, like rewind and play from an earlier point.
At the same time, the control should keep recording the live video to the same file uninterrupted as long as there's live transmission.
- There is a non-live mode, where there is no live stream, but user selects a previously recorded video to play back. The control should allow for:
1. Playback from any point
2. Fast search if the user scrolls the time bar
3. Implement a slider for a playback rate from slowing the video down 0.1x speed to 1.0x (normal speed) to a fast up to 2.0x normal speed with a step of 0.1x. The video in a slow and fast mode should play back as smooth as possible. The audio should be playing back accordingly to the selected playback rate.
Thank you for your bids.