Добавление элементов xaml для плеера VLC в приложение WPF - PullRequest
0 голосов
/ 29 июня 2018

Я делаю видеоигру на C # WPF. У меня есть огромное количество MediaElements, которые запускают файлы mp3 и mp4, когда это необходимо. Недавно я прочитал, что за использование этих форматов файлов взимается плата, и решил преобразовать их в форматы ogg и ogv.

Просто чтобы убедиться, что вы понимаете: я не пытаюсь создать свой собственный видеоплеер. Мне нужен только способ запуска соответствующих файлов на правильных этапах моей игры.

Я нашел некоторую информацию в Интернете и сейчас пытаюсь создать небольшое тестовое приложение, которое просто запускает видео при запуске.

Я установил эти плагины NuGet (не знал, какой из них нужен):

Meta.Vlc, Vlc.DotNet.Core, Vlc.DotNet.Core.Interops, Vlc.DotNet.Wpf

Это мой файл xaml:

 <Window x:Class="Test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    
    xmlns:wpf="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
    xmlns:local="clr-namespace:Test"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
    <MediaElement x:Name="movTest" Panel.ZIndex="1" HorizontalAlignment="Left" Height="319" Margin="10,0,0,0" VerticalAlignment="Top" Width="507" LoadedBehavior="Manual" Source="Resources/VideoFallingFromTable.ogv"/>
    <wpf:VlcControl x:Name="movTest2" Panel.ZIndex="2" />
</Grid>

Теперь я вижу, что для wpf: VlcControl нет "Source".

Si, я пытался загрузить источник из MediaElement.

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {            
        movTest2.MediaPlayer.Play(movTest.Source);
    }

Но у меня только черное окно и нет звука. Я думаю, что я делаю что-то не так. Можете ли вы помочь мне научиться запускать VLC player в WPF?

Спасибо, Евгений

UPDATE: Я попробовал следующий код:

        VlcControl thisVlcControl = new VlcControl();
        Uri src = new Uri(movTest.Source.ToString(), UriKind.RelativeOrAbsolute);
        thisVlcControl.MediaPlayer.Play(src);

По какой-то причине он работал с файлом mp4, но не с ogv.

...