DEVUZ
1 subscriber
15 photos
4 videos
11 files
22 links
Download Telegram
Channel created
The Final Project that you will build has been hosted live for you to play around. You can view that at - https://bulky.azurewebsites.net/



Thanks,

Bhrugen
Channel name was changed to «DEVUZ .NET»
using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using LibVLCSharp.Shared;
using LibVLCSharp.WPF;

namespace UDPVideoStreamingApp
{
public partial class MainWindow : Window
{
private LibVLC _libVLC;
private LibVLCSharp.Shared.MediaPlayer _mediaPlayer;
private Point _lastMousePosition;
private bool _isDragging = false;

public MainWindow()
{
InitializeComponent();
Loaded += ClientWindow_Loaded;
videoView.MouseWheel += VideoView_MouseWheel;
videoView.MouseMove += VideoView_MouseMove;
videoView.MouseLeftButtonDown += VideoView_MouseLeftButtonDown;
videoView.MouseLeftButtonUp += VideoView_MouseLeftButtonUp;
}

private void ClientWindow_Loaded(object sender, RoutedEventArgs e)
{
Core.Initialize();

_libVLC = new LibVLC();
_mediaPlayer = new LibVLCSharp.Shared.MediaPlayer(_libVLC);

videoView.MediaPlayer = _mediaPlayer;
}

private void PlayButton_Click(object sender, RoutedEventArgs e)
{
var streamUrl = StreamUrlTextBox.Text;
if (!string.IsNullOrEmpty(streamUrl))
{
var media = new Media(_libVLC, new Uri(streamUrl));
_mediaPlayer.Play(media);
}
else
{
MessageBox.Show("Please enter a valid UDP stream URL.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}

private void VideoView_MouseWheel(object sender, MouseWheelEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
var scaleTransform = (ScaleTransform)((TransformGroup)videoView.LayoutTransform).Children[0];
var translateTransform = (TranslateTransform)((TransformGroup)videoView.LayoutTransform).Children[1];
const double zoomFactor = 1.1; // Adjust zoom sensitivity here

// Calculate zoom factor based on scroll direction
double zoomDelta = e.Delta > 0 ? zoomFactor : 1.0 / zoomFactor;

// Apply scaling
scaleTransform.ScaleX *= zoomDelta;
scaleTransform.ScaleY *= zoomDelta;

// Get the mouse position relative to the videoView
var position = e.GetPosition(videoView);
Point relativePosition = new Point(
position.X - translateTransform.X,
position.Y - translateTransform.Y);

// Adjust translation to keep zoom centered on the mouse position
translateTransform.X = position.X - relativePosition.X * scaleTransform.ScaleX;
translateTransform.Y = position.Y - relativePosition.Y * scaleTransform.ScaleY;
}
}

private void VideoView_MouseMove(object sender, MouseEventArgs e)
{
if (_isDragging)
{
var translateTransform = (TranslateTransform)((TransformGroup)videoView.LayoutTransform).Children[1];
var currentPosition = e.GetPosition(videoView);
var delta = currentPosition - _lastMousePosition;

translateTransform.X += delta.X;
translateTransform.Y += delta.Y;

_lastMousePosition = currentPosition;
}
}

private void VideoView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_isDragging = true;
_lastMousePosition = e.GetPosition(videoView);
videoView.CaptureMouse();
}

private void VideoView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
_isDragging = false;
videoView.ReleaseMouseCapture();
}