Несколько элементов управления VideoView приводят к сбою приложения C# WinForms LibVLCSharpC#

Место общения программистов C#
Ответить
Anonymous
 Несколько элементов управления VideoView приводят к сбою приложения C# WinForms LibVLCSharp

Сообщение Anonymous »

Для проекта я хочу, чтобы 2 (или, в конечном итоге, более) видео воспроизводились в приложении C# WinForms с помощью LibVLCSharp. Один экземпляр LibVLC с одним экземпляром MediaPlayer и одним VideoView работает без проблем. Однако при создании двух MediaPlayer, каждый из которых подключен к своему собственному VideoView, приложение чаще всего аварийно завершает работу, когда я пытаюсь выполнить такую ​​операцию, как изменение размера VideoViews.
Ниже приведен пример моего кода. Чтобы этот пример работал, в форму необходимо добавить два элемента управления VideoView.

Код: Выделить всё

public partial class Form6 : Form
{
LibVLC libVLC;
MediaPlayer mediaPlayer1;
MediaPlayer mediaPlayer2;

public Form6()
{
InitializeComponent();

Core.Initialize();

libVLC = new();

mediaPlayer1 = new(libVLC);

Media media1 = new(libVLC, new Uri(@"Path\to\some\video"));
mediaPlayer1.Media = media1;
media1.Dispose();

videoView1.MediaPlayer = mediaPlayer1;

mediaPlayer1.Play();

mediaPlayer2 = new(libVLC);

Media media2 = new(libVLC, new Uri(@"Path\to\some\video"));
mediaPlayer2.Media = media2;
media2.Dispose();

videoView2.MediaPlayer = mediaPlayer2;

mediaPlayer2.Play();
}

private void Form6_SizeChanged(object sender, EventArgs e)
{
videoView1.Size = videoView2.Size = Size.Round(Size * 0.3f);
// Arbitrary values to force resize of videoView when resizing form
}
}
Использование приведенного выше кода и постоянное быстрое изменение размера формы с помощью мыши приводит к сбою приложения через 0–10 секунд. Эта проблема возникает только в том случае, если 2 MediaPlayer и VideoViews воспроизводят мультимедиа одновременно. Проблема также сохраняется при простом изменении размера одного из VideoViews, но для возникновения сбоя требуется больше времени. Я пытался поместить каждый MediaPlayer в отдельный экземпляр LibVLC, но безрезультатно. Это также не рекомендуется в документации LibVLCSharp. Наконец, я попытался управлять каждым MediaPlayer из отдельного потока с помощью Task.Run(), если это было проблемой, но тоже безрезультатно.
Во всех случаях нет очевидного сообщение об ошибке в журналах LibVLCSharp и отсутствие ошибок отладки, приложение просто зависает и закрывается.
Любые советы по этой проблеме приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ibvlcsharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»