В этой статье мы рассмотрим как создать файл с ресурсами, содержащий несколько видео файлов в формате avi и научимся воспроизводить их прямо из файла ресурсов (точнее мы создадим поток и будем воспроизводить видео из потока). К сожалению DirectShow не позволяет обычными средствами воспроизводить видео прямо из файла ресурсов. Самый простой способ воспроизвести такое видео – это создать временный файл и сохранить видео в нем, воспроизвести файл, а затем его уничтожить. Но бывают случаи, когда видео нужно воспроизводить прямо из памяти без промежуточного создания файла на диске. В этом случае на помощь может придти фильтр из Demo примеров пакета DSPack для работы с потоками памяти (DSPack\Demos\D6-D7\Filters\Async\). Пример в этой статье будет как раз посвящен воспроизведениювидео из памяти с помощью этого фильтра и средств DirectShow.
На прошлом уроке я показывал, как накладывать текст на видео в реальном режиме времени. В сегодняшнем уроке я продолжу тему работы с текстом, используя фильтры DirectShow и покажу вам, как накладывать внешние субтитры на видео во время просмотра. Внешние - означает, что текст будет загружаться из специально созданного файла субтитров. Для работы с файлами субтитров нам понадобится DirectShow фильтр DirectVobSub но для работы с ним из Delphi придется скачать файл для поддержки его интерфейсов VSFilter.pas. Скачать его можно по адресу http://download.dsp-worx.de/?f=VSFilter.zip или вместе с исходниками к уроку. Фильтр DirectVobSub поддерживает большинство современных форматов файлов субтитров (.sub/.idx , .ssa/.ass .srt .sub .smi .psb .usf .ssf). Готовые файлы субтитров к фильмам можно найти в интернете, там же можно найти кучу как платных так и бесплатных программ для их создания. Кроме всего этого нужно установить пакет DSPack илииз него взять следующие файлы BaseClass.pas, DSUtils.pas, Jedi.inc сам пакет можно скачать здесь, файлы в нем находятся в папке src\DSPack\ их необходимо закинуть в папку с проектом.
На этом уроке мы научимся накладывать текст на видео в реальном режиме времени. Для этого будем использовать фильтр VideoMixingRenderer (VMR), он позволяет смешивать на экране несколько потоков видео, и самое главное позволяет накладывать на видео различные изображения. Для этого у него есть специальный интерфейс IVMRMixerBitmap. Работать мой тестовый пример будет следующим образом: на memo поле я буду писать текст сообщения, которое хочу наложить на видео, затем текст из memo поля будем формировать на Bitmap и через интерфейс IVMRMixerBitmap смешивать на экране с потоком видео.
На этом уроке мы усовершенствуем наш OnLine видеоплеер, созданный с использованием архитектуры DirectShow, добавим к нему возможность записи mms потока. Но для этого придется полностью перестроить граф фильтров. Граф будем строить двух видов. Первый для воспроизведения, он будет выглядеть так:
На этом уроке мы познакомимся с созданием OnLineвидеоплеера для просмотра видео интернет трансляций в прямом эфире. Онлайн-ТВ сегодня приобретает все большую популярность. Вот не большой список интернет трансляций: Россия 24 - mms://live.rfn.ru/vesti_24;
На этом уроке мы научимся грабить отдельные кадры изображения с камеры , сжимать их и записывать их в файл, а затем отправлять полученное изображение по FTP протоколу на хостинг для сайта. Другими словами мы создадим простейшую программу для трансляции изображений с Web камеры на страницу сайта с использованием DirectShow.
Продолжая серию уроков по DirectShow в Delphi, сегодня мы научимся получать изображение с Web камеры на панели нашей формы и записывать полученное изображение в видео файл AVI. Для этого необходимо перечислить все устройства для захвата видео, которые у нас имеются. Все найденные устройства будем записывать в отдельный массив Моникеров. Затем необходимо сформировать граф захвата и добавить туда нужный фильтр захвата.
Сегодня на уроке мы познакомимся с технологией DirectShow и начнем создавать простейший проигрыватель видео. Почему DirectShow спросите вы, ведь есть куча других способов создать видеоплеер. Когда я начал этим заниматься, думал точно также. И начал свою первую попытку создания плеера с компонента TMediaPlayer, который входит в Delphi и находится на вкладке System. Но уже через несколько часов работы с ним я заметил, что многие фильмы, которые без проблем работают в других проигрывателях, в TMediaPlayer отказывались на отрез запускаться. Я начал копать в сторону подключения к нему видео кодеков, но как оказалась это сделать либо в принципе невозможно или я плохо искал. Такое положение дел меня сильно не устраивало и я начал искать другие способы создания видеоплеера.