MediaElement

WPF
  1. 4 года назад

    Добрый день!

    Есть видео файлы wmv и avi, размещены в сети.
    Список забит жестко в листбоксе.
    При выборе создается Uri и подсовывается в Source MediaElement'a.

    на моем ПК , естественно, все работает. На других ПК видео просто не воспроизводится.
    Ошибок никаких не вылазит. Это самое печальное.
    В плеере по умолчанию видео (у всех ) прекрасно воспроизводится.

    Куда капать не знаю.... Есть идеи??

    з.ы.
    Пробовал по-разному подгружать видео в MediaElement, результат нулевой

  2. Alexandr_Erohin

    Mar 12 Администратор

    Нет кодеков на компе юзера или доступа к URI, где находится медиафайл, код плеера взглянуть можно?

  3. За примитивность прошу не ругать, было сделано на скорую руку просто чтобы показывать видео файлы :)
    Шару все пользователи спокойно открывают. Видео проигрывается в проигрывателе Windows Media v.12
    xaml

    <Window x:Class="HelpA.MainWindow" x:Name="Win"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Видеосправка  v.1.0." Height="753.5" Width="1038.5" WindowStartupLocation="CenterScreen" WindowState="Maximized">
     
        <Grid x:Name="grid">
            <Grid.RowDefinitions>
                <RowDefinition Height="610*"/>
                <RowDefinition Height="109*"/>
                
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="356"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <ListView x:Name="myList"  FontSize="22" Grid.RowSpan="2">
                <Button Name="l1"     Content="1. Просмотр файлов" Margin="0"                 Click="ListViewItem_Selected" Foreground="#FF003AFF" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="346" Background="White" BorderThickness="0" Padding="1" BorderBrush="{x:Null}"/>
                <Button Name="l11"    Content="     1.1. Фильтр" Margin="0"                   Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l12"    Content="     1.2. Совместный просмотр" Margin="0"      Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l13"    Content="     1.3. Внешний просмотр" Margin="0"         Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l2"     Content="2. Взятие в работу" Margin="0"                 Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l3"     Content="3. Заявка на внесение&#xD;&#xA;    изменений" Margin="0" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l31"    Content="     3.1. Создание  " Margin="0" Foreground="#FF003AFF" Click="ListViewItem_Selected" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l32"    Content="     3.2. Оформление" Margin="0"               MouseDown="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l4"     Content="4. Работа с согласованной&#xD;&#xA;    заявкой" Margin="0" Foreground="Black" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l41"    Content="     4.1. Добавление файлов &#xD;&#xA;            для изменения" Margin="0"            Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l42"    Content="     4.2. Взятие в работу &#xD;&#xA;            согласованных файлов" Margin="0"       Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"/>
                <Button Name="l43"    Content="     4.3. Добавление файлов с &#xD;&#xA;            внесенными изменениями" Margin="0" Click="ListViewItem_Selected" Foreground="#FF003AFF" Width="346" Background="White" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="{x:Null}"  />
                
    
            </ListView>
    
            <TextBox Name="TimeTextBox" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="10,27,0,0" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Top" Width="208" Background="White" TextAlignment="Center" Foreground="#FF7A7171" Text="00:00/00:00" BorderBrush="{x:Null}"/>
    
            <MediaElement Name="myMediaElement" Grid.Column="1" Margin="0"  MediaOpened="Element_MediaOpened"
                            LoadedBehavior="Manual"  UnloadedBehavior="Manual"
                          MouseLeftButtonDown="myMediaElement_MouseLeftButtonDown" MouseRightButtonDown="myMediaElement_MouseRightButtonDown" />
            <!--Source="\\local\help\1.avi"-->
    
            <Slider Name="timelineSlider" Margin="0,0,0,88" Grid.Row="1" Grid.Column="1" ValueChanged="SeekToMediaPosition"/>
    
            <StackPanel Margin="238,27,201,9" Grid.Column="1" Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"   >
    
                <TextBox    Height="23"  TextWrapping="Wrap" Text="PLAY" VerticalAlignment="Top" Width="41" FontWeight="Bold" BorderBrush="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
                <Image Name="ControlImage"    Source="Start.png" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" Width="141" Height="73"/>
                <TextBox   Height="23"   TextWrapping="Wrap" Text="PAUSE" VerticalAlignment="Top" Width="52" FontWeight="Bold" BorderBrush="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
                <!--ValueChanged="SeekToMediaPosition"-->
            </StackPanel>
            
            <Grid.Triggers>
                <EventTrigger RoutedEvent="Button.Click" >
                    <EventTrigger.Actions>
                        <BeginStoryboard Name="MediaStoryboard" >
    
                            <Storyboard Name="myStoryBoard"     >
                                <MediaTimeline Name="TileLine"  Storyboard.TargetName="myMediaElement" CurrentTimeInvalidated= "MediaTimeChanged"   ></MediaTimeline>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
    
                <EventTrigger RoutedEvent="MediaElement.MouseRightButtonDown" SourceName="myMediaElement"  >
    
                    <EventTrigger.Actions>
                        <PauseStoryboard BeginStoryboardName="MediaStoryboard"></PauseStoryboard>
                    </EventTrigger.Actions>
    
                </EventTrigger>
                <EventTrigger RoutedEvent="MediaElement.MouseLeftButtonDown" SourceName="myMediaElement">
                    <EventTrigger.Actions>
                        <ResumeStoryboard BeginStoryboardName="MediaStoryboard"></ResumeStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
    
    
            </Grid.Triggers>
        </Grid>
    </Window>
  4. cs

        public partial class MainWindow : Window
        {
            //bool play = false;
            BitmapSource PlayImage, PauseImage, StartImage = null;
            Button lbi;
            public MainWindow()
            {
                InitializeComponent();
    
                #region Ковертирование Windows.Forms ресурса в WPF изображение
                try
                {
                    PauseImage = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                        Properties.Resources.Pause.GetHbitmap(),
                        IntPtr.Zero,
                        Int32Rect.Empty,
                        BitmapSizeOptions.FromEmptyOptions());
    
                    PlayImage = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                        Properties.Resources.Play.GetHbitmap(),
                        IntPtr.Zero,
                        Int32Rect.Empty,
                        BitmapSizeOptions.FromEmptyOptions());
    
                    StartImage = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                        Properties.Resources.Start.GetHbitmap(),
                        IntPtr.Zero,
                        Int32Rect.Empty,
                        BitmapSizeOptions.FromEmptyOptions());
                }
                catch (System.ComponentModel.Win32Exception)
                {
                    PauseImage = null;
                    PlayImage = null;
                }
                #endregion
    
                lbi = new Button();        }
    
            private void ListViewItem_Selected(object sender, RoutedEventArgs e)
            {
                myMediaElement.Stop();
                lbi = (Button)sender;
                try
                {
                    switch (lbi.Name)
                    {
                        case "l1":
                             TileLine.Source =  new Uri(@"\\local\help\1.wmv"); ;
                            break;
                        case "l11":
                            TileLine.Source = new Uri(@"\\local\help\1.1.wmv");
                            break;
                        case "l12":
                            TileLine.Source = new Uri(@"\\local\help\1.2.wmv");
                            break;
                        case "l13":
                            TileLine.Source = new Uri(@"\\local\help\1.3.wmv");
                            break;
                        case "l2":
                            TileLine.Source = new Uri(@"\\local\help\2.wmv");
                            break;
                        case "l3":
                            break;
                        case "l31":
                            TileLine.Source = new Uri(@"\\local\help\3.1.wmv");
                            break;
                        case "l32":
                            TileLine.Source = new Uri(@"\\local\help\3.2.wmv");
                            break;
                        case "l4":
                            break;
                        case "l41":
                            TileLine.Source = new Uri(@"\\local\help\4.1.wmv");
                            break;
                        case "l42":
                            TileLine.Source = new Uri(@"\\local\help\4.2.wmv");
                            break;
                        case "l43":
                            TileLine.Source = new Uri(@"\\local\help\4.3.wmv");
                            break;
                    }
                   ControlImage.Source = PlayImage;
                }
                catch (Exception eee)
                {
                    MessageBox.Show(eee.Message);
                }
    
            }
            private void SeekToMediaPosition(object sender, RoutedPropertyChangedEventArgs<double> args)
            {
                //myMediaElement.Pause();
                //myStoryBoard.SeekAlignedToLastTick(TimeSpan.FromSeconds(timelineSlider.Value));
                //myMediaElement.Play();
            }
            string t;
    
            private void Element_MediaOpened(object sender, EventArgs e)
            { 
                timelineSlider.Maximum = myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
    
                t =  Convert.ToInt16(myMediaElement.NaturalDuration.TimeSpan.TotalSeconds).ToString();
                TimeTextBox.Text = string.Concat("00:00c. / ",t,"c.");
                 
            }
    
            private void MediaTimeChanged(object sender, EventArgs e)
            {
                timelineSlider.Value = myMediaElement.Position.TotalMilliseconds;
                TimeTextBox.Text = string.Concat(Convert.ToInt16(myMediaElement.Position.TotalSeconds).ToString() , "c. / ", t,"c.");
            }
    
    
    
            private void myMediaElement_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                ControlImage.Source = PlayImage;
    
            }
    
            private void myMediaElement_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
            {
                ControlImage.Source = PauseImage;
            }
        }
  5. 3 года назад

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

или зарегистрируйтесь чтобы ответить