VLC.Дотнет.Элемент управления WPF растягивает портретное видео. Как я могу получить контроль, чтобы не растягивать видео

#c# #wpf #vlc.dotnet

Вопрос:

VLC.Дотнет.Элемент управления WPF растягивает портретное видео. Как я могу получить контроль, чтобы не растягивать видео. Альбомные видео воспроизводятся нормально, это когда у меня есть видео, записанное на телефон, например .mov в портретном режиме, оно растягивает видео.

Как я могу воспроизвести видео без растягивания? Есть ли возможность, которую я могу передать с помощью метода createPlayer?

.xaml

 <Grid>
   <vlc:VlcControl x:Name="MediaPlayerOne"
                   VerticalAlignment="Center"
                   HorizontalAlignment="Center" />
</Grid>
 

.cs

         var currentAssembly = Assembly.GetEntryAssembly();
        var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;
        // Default installation path of VideoLAN.LibVLC.Windows
        var libDirectory = new DirectoryInfo(Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));

        MediaPlayerOne.SourceProvider.CreatePlayer(libDirectory);
        MediaPlayerOne.SourceProvider.MediaPlayer.Play(new Uri("text.mov"));
 

Ответ №1:

Вы можете попробовать различные соотношения сторон, такие как это

 MediaPlayerOne.Video.AspectRatio = "4:3";
 
 MediaPlayerOne.Video.AspectRatio = "16:9";
 

Комментарии:

1. Когда я печатаю это, я получаю видео, которое не найдено, но я могу найти его, набрав MediaPlayerOne. Поставщик источников. Медиаплеер. Видео. aspectRatio = «4:3»; но с этим мне не везет. Если я использую LibVLCSharp. WPF он показал правильно, но у меня возникли проблемы с воздушным пространством, когда у меня есть сетки, которые можно перетаскивать, не имея возможности находиться перед видео. Vlc. ДотНет. Управление WPF решает проблему воздушного пространства, но теперь я столкнулся с растягиванием видео .mov, записанного в портрете.

2. Я могу отправить вам файл, если вы хотите протестировать @mfkl

3. @mfkl Vlc. ДотНет. Wpf не уважает аспект : github.com/ZeBobo5/Vlc.DotNet/issues/375

Ответ №2:

Либо здесь есть проблема https://github.com/ZeBobo5/Vlc.DotNet/blob/develop/src/Vlc.DotNet.Wpf/VlcVideoSourceProvider.cs или libvlc не отправляет правильное соотношение для видео (т. Е. исходные размеры до поворота, в то время как вы ожидаете обратного). Можете ли вы попробовать клонировать Vlc.ДотНет и продолжит расследование?

Комментарии:

1. Используя пример по ссылке, я сталкиваюсь с проблемой воздушного пространства. После того, как я ударился головой, я снова импортировал движение, и оно работает так, как должно. Понятия не имею, почему это работает сейчас, но разберусь в этом после того, как я клонирую.

2. просто пытаюсь манипулировать любыми свойствами и, похоже, не обновляет медиаплеер. Я попытался отключить Spu, установив его на -1, и ничего не произошло. Если я использую элемент управления просмотром видео из LibVLCSharp. WPF свойства выглядят так, как будто они устанавливаются при изменении, например, SetSpu(-1). Есть какие-нибудь идеи?

3. Это не так, как это работает. Целевые размеры вычисляются кодом для выделения буфера для растрового изображения,которое затем меняется местами N раз в секунду. Похоже, значения ширины и высоты, которые мы получаем от libvlc, меняются местами (или не поворачиваются, если хотите). Необходимо провести расследование, можем ли мы сделать что-то разумное с этим или нам следует сообщить об ошибке в libvlc