Пробовал плеер на DirectX 1.0.2902.0 - умирает от MPEG-2 TS
(библиотеки Microsoft.DirectX.AudioVideoPlayback.dll и Microsoft.DirectX.dll)
Пробовал плеер на Interop.QuartzTypeLib.dll - умирает от MPEG-2 TS (источник)
Дошел до варианта с MediaElement (источник), грубо закоментировал dialog.Filter = "WMV file (.wm)|*.wmv"; - и о чудо MPEG-2 TS зашевелился, НО плывет и умирает. Как добиться нормального проигрывания MPEG-2 TS?
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="320*"/>
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<MediaElement x:Name="MediaPlayer" Grid.RowSpan="1" LoadedBehavior="Manual"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
<Button x:Name="btnPlay" Content="Play" Click="btnPlay_Click" Width="50" Height="25" Margin="5"/>
<Button x:Name="btnStop" Content="Stop" Click="btnStop_Click" Width="50" Height="25" Margin="5"/>
<Button x:Name="btnMoveBack" Content="Back" Click="btnMoveBack_Click" Width="50" Height="25" Margin="5"/>
<Button x:Name="btnMoveForward" Content="Forward" Click="btnMoveForward_Click" Width="50" Height="25" Margin="5"/>
<Button x:Name="btnOpen" Content="Open" Click="btnOpen_Click" Width="50" Height="25" Margin="5"/>
</StackPanel>
C#
public MainWindow()
{
InitializeComponent();
IsPlaying(false);
}
private void IsPlaying(bool flag)
{
btnPlay.IsEnabled = flag;
btnStop.IsEnabled = flag;
btnMoveBack.IsEnabled = flag;
btnMoveForward.IsEnabled = flag;
}
private void btnPlay_Click(object sender, RoutedEventArgs e)
{
IsPlaying(true);
if (btnPlay.Content.ToString() == "Play")
{
MediaPlayer.Play();
btnPlay.Content = "Pause";
}
else
{
MediaPlayer.Pause();
btnPlay.Content = "Play";
}
}
private void btnStop_Click(object sender, RoutedEventArgs e)
{
MediaPlayer.Pause();
btnPlay.Content = "Play";
IsPlaying(false);
btnPlay.IsEnabled = true;
}
private void btnMoveBack_Click(object sender, RoutedEventArgs e)
{
MediaPlayer.Position -= TimeSpan.FromSeconds(10);
}
private void btnMoveForward_Click(object sender, RoutedEventArgs e)
{
MediaPlayer.Position += TimeSpan.FromSeconds(10);
}
private void btnOpen_Click(object sender, RoutedEventArgs e)
{
// Configure open file dialog box
Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();
dialog.FileName = "Videos"; // Default file name
dialog.DefaultExt = ".WMV"; // Default file extension
//dialog.Filter = "WMV file (.wm)|*.wmv"; // Filter files by extension
// Show open file dialog box
Nullable<bool> result = dialog.ShowDialog();
// Process open file dialog box results
if (result == true)
{
// Open document
MediaPlayer.Source = new Uri(dialog.FileName);
btnPlay.IsEnabled = true;
}
}
В Windows media player MPEG-2 TS воспроизводится нормально.
И в плеере на MediaElement проблем с mp4 нет.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости