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();
}
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();
}
protected override void OnClosed(EventArgs e)
{
_mediaPlayer.Stop();
_mediaPlayer.Dispose();
_libVLC.Dispose();
base.OnClosed(e);
}
}
}
{
_mediaPlayer.Stop();
_mediaPlayer.Dispose();
_libVLC.Dispose();
base.OnClosed(e);
}
}
}
Forwarded from Xurboyev.uz
Forwarded from Xurboyev.uz
ChatGPT - 4 dan tekinga foydalanishni hohlaysizmi...?
Bu juda oson.
Shunchaki Microsoft Edge brauzerida Bing chat deb qidiring va Microsoft-ning Bing Chati orqali GPT-4 ning yangi funksiyalaridan tekinga foydalaning!
Ilova (Microsoft Edge orqali): https://www.bing.com/search?q=Bing+AI&showconv=1
https://t.me/xurboyevuz
Bu juda oson.
Shunchaki Microsoft Edge brauzerida Bing chat deb qidiring va Microsoft-ning Bing Chati orqali GPT-4 ning yangi funksiyalaridan tekinga foydalaning!
Ilova (Microsoft Edge orqali): https://www.bing.com/search?q=Bing+AI&showconv=1
https://t.me/xurboyevuz
Forwarded from Xurboyev.uz
Sun'iy intelekt yordamida rasm yaratish tekin platformalar ro'yhati:
1. https://www.bing.com/create
2. https://leonardo.ai/
3. https://clipdrop.co/
4. https://openai.com/product/dall-e-2
5. https://www.bluewillow.ai/
https://t.me/xurboyevuz
1. https://www.bing.com/create
2. https://leonardo.ai/
3. https://clipdrop.co/
4. https://openai.com/product/dall-e-2
5. https://www.bluewillow.ai/
https://t.me/xurboyevuz
Forwarded from Xurboyev.uz
2024- yildagi eng yaxshi chatbotlar ro'yxati bilan tanishing:
1. Original: ChatGPT
2. Eng uzun suxbat xotirasiga ega: Claude
3. Online qidiruv, taxt va rasm generatsiya qilish: Microsoft Bing AI
4. Google applar bilan integratsiya: Google Bard
5. Ochiq litsenziyali: Meta Llama 2
6. For personal use: Pi
7. Bir necha AI modellar: Poe
8. Internetga chuqur sho'ng'ish uchun: Perplexity
https://t.me/xurboyevuz
1. Original: ChatGPT
2. Eng uzun suxbat xotirasiga ega: Claude
3. Online qidiruv, taxt va rasm generatsiya qilish: Microsoft Bing AI
4. Google applar bilan integratsiya: Google Bard
5. Ochiq litsenziyali: Meta Llama 2
6. For personal use: Pi
7. Bir necha AI modellar: Poe
8. Internetga chuqur sho'ng'ish uchun: Perplexity
https://t.me/xurboyevuz
Forwarded from Xurboyev.uz
Sun'iy intelekt yordamida video yaratish tekin platformalar ro'yhati:
1. https://www.veed.io/
2. https://hourone.ai/
3. https://www.deepbrain.io/
4. https://designs.ai/
5. www.invideo.io
6. https://stability.ai/
7. https://elai.io/
8. https://www.synthesia.io/
9. https://lumen5.com/
10. https://www.flexclip.com/
1. https://www.veed.io/
2. https://hourone.ai/
3. https://www.deepbrain.io/
4. https://designs.ai/
5. www.invideo.io
6. https://stability.ai/
7. https://elai.io/
8. https://www.synthesia.io/
9. https://lumen5.com/
10. https://www.flexclip.com/
VEED
VEED – AI Video Creation Platform | Idea to Video Workflow
Generate and edit in one workflow. Create talking heads, edit with AI, dub videos, and add subtitles — all in VEED. Built for marketers and solopreneurs
Forwarded from Xurboyev.uz
Autonomous driving datasetlar (open-source): source
Medium
15 Best Open-Source Autonomous Driving Datasets
In recent years, more and more companies and research institutions have made their autonomous driving datasets open to the public. However…
Forwarded from Xurboyev.uz
Dafydd_Stuttard,_Marcus_Pinto_The_web_application_hacker's_handbook.pdf
14.7 MB