Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120

Примеры из книги Мак Дональд, не работает воспроизведение видео

29.12.2011, 15:25. Показов 3329. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мак Дональд в хвалёной книге «WPF для профессионалов» порой подкладывает свинью, которая для «профессионалов» выливается в настоящую проблему. Например, я скрупулезно набрал, как он пишет, «крайне простой» медиапроигрыватель, который, действительно с файлами в формате МР3 прекрасно работает. Далее я решил попробовать формат видео AVI. Вот что по поводу видео пишет Мак Дональд: «Всё, что было сказано о применении класса MediaElement, в равной степени касается и воспроизведения видеофайлов». Не тут-то было! На практике сразу выскочили две проблемы. Во-первых, если файл MP3 проигрыватель видел в папке проекта, то видеофайл читался только с указанием полной директории, что, сами понимаете, недопустимо для универсальности применения проигрывателя. На все попытки обойтись директорией проекта, редактор ругался «Файл "Become happier.avi" не входит в проект, или его свойство "Действие при построении" не имеет значение "Ресурс"» Когда я глянул в ресурсы сборки, видео формата там не оказалось, и нигде, не единого примера…. Вторая «свинья» оказалась покруче и позагадочнее. После компиляции видеофайл почему-то стартовал самостоятельно, при этом никакие кнопки (кроме cmdPlay) не работали. И только после нажатия кнопки cmdPlay начинали работать все остальные кнопки. Вот код проигрывателя:
XML
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». Поскольку к уважаемому Мак Дональду обратиться не могу, обращаюсь за помощью к коллективному разуму форума.


Забыл добавить код для кнопки cmdExt:
C#
1
2
3
4
        private void cmdExt_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2011, 15:25
Ответы с готовыми решениями:

Примеры из книги выдают ошибки
я чяйник, хочу выучить програмирование, в железе разбираюсь , хочу выучить с++, сейчас читаю книгу УОЛТЕР САВИЧ ПРОГРАММИРОВАНИЕ С++ 4...

Не работают примеры из книги Щупака
что делать? Одно только error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из &quot;const char &quot; в &quot;LPCWSTR&quot; ...

Не получается ассемблировать примеры из книги
Здравствуйте! В книге Питера Абеля есть ряд кодов которые не ассемблируются! Вот например он пишет типичный пример COM-программы: page...

4
84 / 84 / 10
Регистрация: 20.05.2011
Сообщений: 145
29.12.2011, 15:59
Управляйте им не из xaml а из кода! И все ваши проблемы отпадут! Как управлять из кода можно узнать поискав в google!

 Комментарий модератора 
Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме
0
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120
29.12.2011, 16:52  [ТС]
Цитата Сообщение от SpiritRI Посмотреть сообщение
Управляйте им не из xaml а из кода! И все ваши проблемы отпадут! Как управлять из кода можно узнать поискав в google!

Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме
Вы совершенно правы, уважаемый SpiritRI! Действительно, такой проигрыватель я уже пробовал, он прекрасно работает и вот его код:
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
 
namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
 
        private void cmdPlay_Click(object sender, RoutedEventArgs e)
        {
            media.Play();
        }
 
        private void cmdPause_Click(object sender, RoutedEventArgs e)
        {
            media.Pause();
            cmdPlay.Content = "Cont";
        }
 
        private void ext_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}
Но тут я столкнулся с другой проблемой – как мне ввести в проект Slider, который бы динамически отслеживал ход анимации и позволял мышью менять позицию воспроизведения, как это обычно и бывает в нормальных плеерах. Те немногочисленные примеры, которые мне удалось найти – все в XAML, с привязкой к Storyboard. Как быть???
0
Просто интересуюсь.
 Аватар для Imitator
42 / 42 / 9
Регистрация: 19.10.2011
Сообщений: 247
29.12.2011, 22:37
Вот проект плеера который я нашел в интернетеWpfSample.zip вернее нашел видео-урок и написал по нему.
0
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120
30.12.2011, 15:03  [ТС]
Цитата Сообщение от Imitator Посмотреть сообщение
Вот проект плеера который я нашел в интернетеВложение 117314 вернее нашел видео-урок и написал по нему.
Imitator, Вам спасибо за предложенный (действующий!) плеер. Очень интересная работа. Будем изучать как он устроен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2011, 15:03
Помогаю со студенческими работами здесь

Неправильные книги и примеры о с++ ( error 2040)
:stop: В книгах намеренно написаны неправильные примеры !!! В итоге изучение просто невыносимо и невозможно !!! Нормальный человек так...

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

Воспроизведение видео
Суть вот в чем: после совершения некого действия на консоли, нужно запустить окно, в котором будет проигрываться видео, и, желательно,...

Воспроизведение видео
Подскажите пожалуйста как в Лазарусе воспроизвести видео под linux Ubuntu, в формате avi?

воспроизведение видео на пк
как вылечить данную болезнь на компьютере? картинка 1 видео с пк а картинка 2 с интернета... как будто цветов не хватает на пк


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru