Я пытаюсь захватить поток из энкодера оси на приложении WPF, используя Gstreamer SDK, поток всегда начинается в новом окне, но не в элементе, который я создал в самом WPF.
Когда я добавляю конкретный элемент, вообще ничего не появляется.
Это код, который я использую.public partial class MainWindow : Window
{
private PictureBox videoPanel;
private Process gstreamerProcess;
public MainWindow()
{
InitializeComponent();
videoPanel = new PictureBox
{
Dock = DockStyle.Fill,
BackColor = System.Drawing.Color.Black
};
windowsFormsHost.Child = videoPanel;
Loaded += MainWindow_Loaded;
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var handle = videoPanel.Handle;
await System.Threading.Tasks.Task.Delay(100);
StartGStreamer(handle);
}
private void StartGStreamer(IntPtr windowHandle)
{
try
{
string gstPath = @"C:\gstreamer\1.0\msvc_x86_64\bin\gst-launch-1.0.exe";
string rtspUrl = "rtsp://username:password@192.168.1.11/axis-media/media.amp";
string pipeline = $"rtspsrc location={rtspUrl} latency=0 ! decodebin ! videoconvert ! d3d11videosink";
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = gstPath,
Arguments = pipeline,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true
};
gstreamerProcess = Process.Start(psi);
gstreamerProcess.ErrorDataReceived += (s, e) =>
{
if (!string.IsNullOrEmpty(e.Data))
Console.WriteLine($"GStreamer Error: {e.Data}");
};
gstreamerProcess.BeginErrorReadLine();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show($"Error starting GStreamer: {ex.Message}");
}
}
protected override void OnClosed(EventArgs e)
{
gstreamerProcess?.Kill();
base.OnClosed(e);
}
}
< /code>
В этом коде поток запускает новое окно,
, но когда я добавляю это ->
Window -handle = {windowhandle.toint64 ()} в конце этого утверждения ->
String Pipeline = $ "Rtspsrc location = {rtspurl} latency = 0! Decodebin! Videoconvert! /> Ничего не появляется.
Кто -нибудь может помочь мне с этим? Я пытался интегрировать его с OpenCV, но та же проблема.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -gstreamer
RTSP -поток на WPF с использованием GSTREAMER ⇐ C#
Место общения программистов C#
-
Anonymous
1754897369
Anonymous
Я пытаюсь захватить поток из энкодера оси на приложении WPF, используя Gstreamer SDK, поток всегда начинается в новом окне, но не в элементе, который я создал в самом WPF.
Когда я добавляю конкретный элемент, вообще ничего не появляется.
Это код, который я использую.public partial class MainWindow : Window
{
private PictureBox videoPanel;
private Process gstreamerProcess;
public MainWindow()
{
InitializeComponent();
videoPanel = new PictureBox
{
Dock = DockStyle.Fill,
BackColor = System.Drawing.Color.Black
};
windowsFormsHost.Child = videoPanel;
Loaded += MainWindow_Loaded;
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var handle = videoPanel.Handle;
await System.Threading.Tasks.Task.Delay(100);
StartGStreamer(handle);
}
private void StartGStreamer(IntPtr windowHandle)
{
try
{
string gstPath = @"C:\gstreamer\1.0\msvc_x86_64\bin\gst-launch-1.0.exe";
string rtspUrl = "rtsp://username:password@192.168.1.11/axis-media/media.amp";
string pipeline = $"rtspsrc location={rtspUrl} latency=0 ! decodebin ! videoconvert ! d3d11videosink";
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = gstPath,
Arguments = pipeline,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true
};
gstreamerProcess = Process.Start(psi);
gstreamerProcess.ErrorDataReceived += (s, e) =>
{
if (!string.IsNullOrEmpty(e.Data))
Console.WriteLine($"GStreamer Error: {e.Data}");
};
gstreamerProcess.BeginErrorReadLine();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show($"Error starting GStreamer: {ex.Message}");
}
}
protected override void OnClosed(EventArgs e)
{
gstreamerProcess?.Kill();
base.OnClosed(e);
}
}
< /code>
В этом коде поток запускает новое окно,
, но когда я добавляю это ->
Window -handle = {windowhandle.toint64 ()} в конце этого утверждения ->
String Pipeline = $ "Rtspsrc location = {rtspurl} latency = 0! Decodebin! Videoconvert! /> Ничего не появляется.
Кто -нибудь может помочь мне с этим? Я пытался интегрировать его с OpenCV, но та же проблема.
Подробнее здесь: [url]https://stackoverflow.com/questions/79731770/rtsp-stream-on-wpf-using-gstreamer[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия