Проигрывание видео (Microsoft.DirectX.AudioVideoPlayback)
Что прочитать перед этим материалом
Для начала необходимо подключить три библиотеки: Microsoft.DirectX.AudioVideoPlayback, Tao.OpenGl и Tao.Platform.Windows.
Используем их:
Код:
using Microsoft.DirectX.AudioVideoPlayback;
using Tao.OpenGl;
using Tao.Platform.Windows;
Укажем переменную eMovie в классе формы.
Код:
Microsoft.DirectX.AudioVideoPlayback.Video eMovie;
После этого на форму ставим контролл OpenGL и называем его AnT.
Дальше в коде пишем (после строчки InitializeComponent();):
Код:
AnT.InitializeContexts();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; // Убираем стиль формы.
this.WindowState = System.Windows.Forms.FormWindowState.Maximized; // Делаем на весь экран.
this.TopMost = true; // По верх остальных окон.
Cursor.Hide(); // Скрываем курсор.
Выходим в дизайнер форм и кликаем по нашей форме дважды, чтобы автоматически прописать событие Form_load.
А в событии пишем:
Код:
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. В нем пишем:
Код:
if (e.KeyCode == Keys.Escape) // по нажатию на Escape происходит...
{
eMovie.Stop(); // остановка видео
eMovie = null; // очищаем переменную для экономии места ОЗУ
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT|Gl.GL_DEPTH_BUFFER_BIT); //очистка
Вот собственно и все.
Более подробный код для тех, кто не совсем разобрался:
Код:
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); / /очистка
}
}
}
}