Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Мак Дональд и медиапроигрыватель. / 3 сообщений из 3, страница 1 из 1
29.12.2011, 14:59
    #37599155
OlegDnepr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мак Дональд и медиапроигрыватель.
Мак Дональд в хвалёной книге «WPF для профессионалов» порой подкладывает свинью, которая для «профессионалов» выливается в настоящую проблему. Например, я скрупулезно набрал, как он пишет, «крайне простой» медиапроигрыватель, который, действительно с файлами в формате МР3 прекрасно работает. Далее я решил попробовать формат видео AVI. Вот что по поводу видео пишет Мак Дональд: «Всё, что было сказано о применении класса MediaElement, в равной степени касается и воспроизведения видеофайлов». Не тут-то было! На практике сразу выскочили две проблемы. Во-первых, если файл MP3 проигрыватель видел в папке проекта, то видеофайл читался только с указанием полной директории, что, сами понимаете, недопустимо для универсальности применения проигрывателя. На все попытки обойтись директорией проекта, редактор ругался «Файл "Become happier.avi" не входит в проект, или его свойство "Действие при построении" не имеет значение "Ресурс"» Когда я глянул в ресурсы сборки, видео формата там не оказалось, и нигде, не единого примера…. Вторая «свинья» оказалась покруче и позагадочнее. После компиляции видеофайл почему-то стартовал самостоятельно, при этом никакие кнопки (кроме cmdPlay) не работали. И только после нажатия кнопки cmdPlay начинали работать все остальные кнопки. Вот код проигрывателя:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="301" Width="396" WindowStartupLocation="CenterScreen">
    
    
    <Window.Resources>
        
        <Storyboard x:Key="Msr">
            <MediaTimeline Storyboard.TargetName="media" Source="D:\EXP\MyVideo3\WpfApplication8\bin\Debug\Video\Become happier.avi"></MediaTimeline>
        </Storyboard>
    </Window.Resources>
    
        <Canvas Height="258" Name="Canvas1" Width="346" >
        <Canvas.Triggers>
            
            <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdPlay">
                <EventTrigger.Actions>
                    <BeginStoryboard Name="MediaStoryboard" Storyboard="{StaticResource Msr}"/>
                </EventTrigger.Actions>
            </EventTrigger>

            <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdPause">
                <EventTrigger.Actions>
                    <PauseStoryboard BeginStoryboardName="MediaStoryboard"/>
                </EventTrigger.Actions>
            </EventTrigger>

            <!--<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdStop">
                <EventTrigger.Actions>
                    <StopStoryboard BeginStoryboardName="MediaStoryboard"/>
                </EventTrigger.Actions>
            </EventTrigger>-->

            <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="cmdResume">
                <EventTrigger.Actions>
                    <ResumeStoryboard BeginStoryboardName="MediaStoryboard"/>
                </EventTrigger.Actions>
            </EventTrigger>

    </Canvas.Triggers>

        <MediaElement Name="media" Height="200" Width="300" Canvas.Left="21" Canvas.Top="12" Source="D:\EXP\MyVideo3\WpfApplication8\bin\Debug\Video\Become happier.avi"></MediaElement>        
        <Button Name="cmdPlay" Width="50" Canvas.Left="35" Canvas.Top="219">Play</Button>
        <Button Name="cmdPause" Width="50" Canvas.Left="108" Canvas.Top="219">Pause</Button>
        <Button Name="cmdResume" Width="50" Margin="0,0,0,0" Canvas.Left="181" Canvas.Top="219">Cont</Button>
        <!--<Button Name="cmdStop" Width="50" >Stop</Button>-->
        <Button Name="cmdExt" Width="50" Click="cmdExt_Click" Canvas.Left="252" Canvas.Top="219">Exit</Button>
    </Canvas>
</Window>


Поскольку кнопка cmdStop сбрасывает в ноль, я её вывел из проекта, так как эту же функцию выполняет кнопка cmdPlay. Кнопка cmdResume продолжает воспроизведение от точки останова кнопкой cmdPause, поэтому я назвал её «Cont», от слова «continue». Поскольку к уважаемому Мак Дональду обратиться не могу, обращаюсь за помощью к коллективному разуму форума.
...
Рейтинг: 0 / 0
29.12.2011, 15:23
    #37599192
OlegDnepr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мак Дональд и медиапроигрыватель.
OlegDnepr,
Забыл добавить код для кнопки cmdExt:
Код: c#
1.
2.
3.
4.
        private void cmdExt_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
...
Рейтинг: 0 / 0
30.12.2011, 12:53
    #37600204
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мак Дональд и медиапроигрыватель.
OlegDnepr«Файл "Become happier.avi" не входит в проект, или его свойство "Действие при построении" не имеет значение "Ресурс"»

Учимся читать.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Мак Дональд и медиапроигрыватель. / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]