Esate.ru
Esate.ru Уроки Программирование 3D Уроки OpenGL различных тематикПроигрывание видео (Microsoft.DirectX.AudioVideoPlayback)

Уроки OpenGL различных тематик

В этом разделе сосредоточены уроки, которые не были объединены в курсы. Большая часть уроков перенесена из авторских публикаций пользователей.

Проигрывание видео (Microsoft.DirectX.AudioVideoPlayback)

Проигрывание видео (Microsoft.DirectX.AudioVideoPlayback)


Для начала необходимо подключить три библиотеки: Microsoft.DirectX.AudioVideoPlayback, Tao.OpenGl и Tao.Platform.Windows.

Используем их:

Код^
/*http://esate.ru, ProCoder*/

using Microsoft.DirectX.AudioVideoPlayback;
using Tao.OpenGl;
using Tao.Platform.Windows;


Укажем переменную eMovie в классе формы.
Код:
/*http://esate.ru, ProCoder*/

Microsoft.DirectX.AudioVideoPlayback.Video eMovie;


После этого на форму ставим контролл OpenGL и называем его AnT.

Дальше в коде пишем (после строчки InitializeComponent();):

Код:
/*http://esate.ru, ProCoder*/

AnT.InitializeContexts();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; // Убираем стиль формы.
this.WindowState = System.Windows.Forms.FormWindowState.Maximized; // Делаем на весь экран.
this.TopMost = true; // По верх остальных окон.
Cursor.Hide(); // Скрываем курсор. 


Выходим в дизайнер форм и кликаем по нашей форме дважды, чтобы автоматически прописать событие Form_load.

А в событии пишем:

Код:
/*http://esate.ru, ProCoder*/

Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT|Gl.GL_COLOR_BUFFER_BIT); // Очищаем буферы перед воспроизведением.
eMovie = Video.FromFile("C:\\Video\\qwerty.wmv", true); // Задаем путь для видео. true значит что видео воспроизведется автоматически.
eMovie.Owner = AnT; // Воспроизводим в нашем контролле.


Вот и все. Но лучше сделать так, чтобы видео останавливалось по нажатию клавиши, как это обычно (но не всегда) делают в играх.

Для этого нам нужно перейти в дизайнер форм -> кликнуть один раз по нашему AnT, посмотреть на таблицу свойст, которая находится справа, найти наверху молнию, нажать на нее, найти KeyDown и кликнуть по нему пару раз.

Автоматически создается событие AnTKeyDown. В нем пишем:

Код:
/*http://esate.ru, ProCoder*/

if (e.KeyCode == Keys.Escape) // по нажатию на Escape происходит...
      {
       eMovie.Stop(); // остановка видео
       eMovie = null; // очищаем переменную для экономии места ОЗУ
       Gl.glClear(Gl.GL_COLOR_BUFFER_BIT|Gl.GL_DEPTH_BUFFER_BIT); //очистка


Вот собственно и все.

Более подробный код для тех, кто не совсем разобрался:

Код:
/*http://esate.ru, ProCoder*/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;
using Tao.OpenGl;
using Tao.Platform.Windows;

namespace VideoGL
{
  public partial class MainForm : Form
   {
    Microsoft.DirectX.AudioVideoPlayback.Video eMovie;
    public MainForm()
     {
      InitializeComponent();
      AnT.InitializeContexts();
      this.FormBorderStyle =          System.Windows.Forms.FormBorderStyle.None;//Убираем стиль формы.
      this.WindowState = System.Windows.Forms.FormWindowState.Maximized; // Делаем на весь экран.
      this.TopMost = true; // Поверх остальных окон.
      Cursor.Hide(); // Скрываем курсор.
     }
      void MainFormLoad(object sender, EventArgs e)
     {
      Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT|Gl.GL_COLOR_BUFFER_BIT); // Очищаем буферы перед воспроизведением.
      eMovie = Video.FromFile("C:\\Video\\qwerty.wmv", true); // Задаем путь для видео, true значит, что видео воспроизведется автоматически.
      eMovie.Owner = AnT; // Воспроизводим в нашем контролле.
     }
      void AnTKeyDown(object sender, KeyEventArgs e)
     {
      if (e.KeyCode == Keys.Escape) // по нажатию на Escape происходит...
     {
      eMovie.Stop(); // остановка видео
      eMovie = null; // очищаем переменную для экономии места ОЗУ
      Gl.glClear(Gl.GL_COLOR_BUFFER_BIT|Gl.GL_DEPTH_BUFFER_BIT); / /очистка
    }
  }
}
}

А что же дальше?

Обратите внимание на эти публикации, они могут быть вам полезны:


Источник: Esate.ru
15 Января 2011


Комментарии (из ветки форума)

Авторизируйтесь или Зарегистрируйтесь
чтобы оставлять комментарии.

OpenGL

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Регистрация

Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 

Восстановление пароля

Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш E-mail. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
 
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
 

Авторизация

Пожалуйста, авторизуйтесь, для входа на сайт с помощью соц. сети:
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.

или с помощью аккаунта на сайте:

Логин
Пароль