Внимание!

Эта публикация перенесена в раздел уроков по адресу Проигрываем видео (другой способ).
К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.

Проигрываем видео (другой способ)

Так как еще плоховато ориентируюсь по сайту не обижайтесь на отсутствие скриншотов.

Итак, приступим:
Для начала подключим 3 библеотеки: 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(); //Скрываем курсор. 

Выходим в дизайнер форм и клацаем по нашей форме 2 раза чтобы автоматически прописать событие 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); //очистка
   }
  }
}
}
0       1028        15.12.2011        10

Внимание!

Эта публикация перенесена в раздел уроков по адресу Проигрываем видео (другой способ).
К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.

0  
15.12.2011 00:00:00
сделать тэг cut а то много текста

мне не нравится только Microsoft.DirectX.AudioVideoPlayback
=(
0  
15.12.2011 00:00:00
Она весит мало, все же лучше чем контролл WMP.
0  
16.12.2011 00:00:00
Так в принципе не только OGL контроле можно воспроизвести??!
0  
16.12.2011 00:00:00
Да. Можно хоть в PictureBox'е. Но для игр я лучше в контролле OpenGl воспроизведу, мороки меньше.
0  
16.12.2011 00:00:00
Хороший урок, как я вижу уже на главную вышел :)
0  
16.12.2011 00:00:00
Может перенести в блог уроков OpenGL?
0  
16.12.2011 00:00:00
Видимо мне рейтинга нехватает. Немогу перенести.
0  
16.12.2011 00:00:00
Уже перенесли :)

Так как еще плоховато ориентируюсь по форуму не обижайтесь на отсутствие скриншотов.
Там в редакторе есть кнопка «вставить картинку», нужно выбрать файл желательно сразу корректного размера, url не указывать. Должно получится.
0  
16.12.2011 00:00:00
Уже перенесли :)
А. Вон оно что. Спасибо:)

Там в редакторе...
При написании следующего урока разобрался:) Но все равно спасибо.
0  
20.06.2012 00:00:00
У меня почему то не работает. Не видео, не музыка((((( Зависает…
^