|
|
| Скачать примеры | |
«Выставка РВ-Медиа (RVMedia)»
Нижеприведённые примеры не содержат исходного кода, но каталоги в инсталляции РВ-Медиа (RVMedia), содержащие исходный код примеров, указаны.
Перед скачиванием примеров вы должны принять условия лицензионного соглашения.
Скачать
Размер инсталляции: 72,6 Мб, обновлена 26 ноября 2024 г..
Прочитайте инструкции по установке/удалению и заявление о конфиденциальности.
Если вас интересуют скомпилированные примеры для ТРВ-Редактора, СРВ-Редактора и Мастерской отчётов (TRichView, ScaleRichView, ReportWorkshop) перейдите к «выставке ТРВ-Редактора (TRichView)».
В инсталляции РВ-Медиа примеры находятся в папках:
- Demos\Delphi\ для Дельфи VCL (Delphi VCL)
- Demos\Delphi.FMX\ для Дельфи ФайрМанки (Delphi FireMonkey)
- Demos\Lazarus\ для Лазаруса (Lazarus)
Оглавление
- Камеры (показ видео из различных источников)
- Передача и приём (прямое соединение приложений по сети)
- Медиа-сервер (клиент-серверное соединение)
- Запись (аудио- и видеофайлов)
1. Камеры
|
| Видео с одной камеры |
|
Простейший пример: показ видео с одной камеры.
В верхней части окна находится список камер. Он включает как локальные камеры (USB-вебкамеры), так и камеры наблюдения, доступные в Интернете.
Аналогичный список используется (почти) во всех демонстрационных примерах.
Не все камеры могут работать; если какая-то камера не отвечает, просто пропустите её и попробуйте другую.
Пример использует два компонента: TRVCamera и TRVCamView.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\CamList\
|
| Фильтры обработки изображений |
|
Этот пример показывает, как можно менять кадры перед выводом на экран.
Пример позволяет применить несколько фильтров (усиление резкости, выделение границ, рельеф, размытие).
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\Filters\
|
| Управление движением камеры |
|
Пример показывает, как можно управлять поворотом камер наблюдения.
В этом примере список содержит только те камеры, движением которых можно управлять.
Замечание 1: управление движением может быть отключено для некоторых камер.
Замечание 2: возможно, кроме вас камерой управляют и другие люди, поэтому не удивляйтесь, если камера поворачивается без ваших команд.
Управление камерой возможно двумя способами:
- специальным элементом управления (в левой части окна) – компонентом TRVCamControl
- щелчками по окну вывода видео (курсор у краёв окна принимает форму стрелок, указывающих направление поворота)
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\CamControl\
|
| Обнаружение движения (старая версия) |
|
Пример показывает, как можно реализовать функцию обнаружения движения.
В нём реализовано сравнение кадров видео и обнаружение изменённых областей.
Вы можете поменять параметры, чтобы найти оптимальные настройки для конкретной камеры:
- подавление шума: позволяет игнорировать незначительно изменившиеся пиксели;
- области обнаружения движения: кадр делится на области, и изменения определяется в каждой из областей отдельно;
- требуемое число изменившихся соседних областей: позволяет игнорировать изменения в области, если соседние области не изменились;
- порог обнаружения: указывает, сколько областей должны измениться, чтобы пример вывел сообщение "обнаружено!" ("detected!");
Замечание: этот алгоритм обнаружения движения используется только в демонстрационных целях.
Он не очень хорош, главным образом потому, что использует фиксированную сетку областей; поэтому изменения в одной области
имеют большую вероятность определиться, чем изменения на стыке областей.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\MotionDetect_Old\
|
| Обнаружение движения |
|
Пример показывает, как использовать встроенное средство РВ-Медиа для обнаружения движения.
Вы можете поменять параметры, чтобы найти оптимальные настройки для конкретной камеры:
- игнорирование незначительно изменённых пикселей;
- задание минимально допустимого размера изменённой области.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\MotionDetect\
|
| Вебкамера |
|
Пример показывает, как можно отображать видео с локальной камеры (такой как USB-вебкамера) и менять её видеорежимы.
Замечание: возможно, что не все режимы, перечисленные в списке примера, получится установить; результат зависит от модели вебкамеры.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\WebCamera\
|
| Видео с нескольких камер |
|
Пример показывает вывод видео с нескольких камер. Он использует компонент TRVCamMultiView.
В этом примере для вывода видео есть четыре маленьких панели и одна большая главная панель. Щёлкните по одной из маленьких панелей, затем щёлкните по камере в списке, чтобы вывести её на эту панель.
Главная панель показывает видео с выбранной маленькой панели.
Пример показывает видео на главной панели с большей частотой кадров (поэтому, если вы переключитесь на другую панель, которая уже выводит видео,
компонент может переподключиться к камере, запрашивая видео с большей кадровой частотой)
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\CamListMulti\
|
| Поиск камер |
|
Пример ищет камеры в заданном диапазоне IP-адресов.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\Search\
|
| «Медиа-тест» («MediaTest») |
|
Этот пример – самый сложный в наборе.
Он показывает видео с нескольких камер и даёт возможность настраивать и администрировать камеры.
Помимо выбора камеры из списка, вы можете ввести адрес камеры вручную.
Обратите внимание на вкладки «Пользователи» («Users») и «Параметры» («Parameters») – они появляются для камер, которые можно настраивать.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Cameras\MediaTest\
|
|
2. Передача и приём видео
Примеры ниже передают данные по сети: видео, звук и другую информацию (такую как файлы и команды).
|
| Передача и приём: в одном приложении |
|
Как протестировать: выберите источник видео в списке «камеры» («cameras»). Видео будет показываться на панели слева.
Нажмите на кнопки «Начать передачу» («Start Sender») и «Начать приём» («Start Receiver»).
Видео будет передаваться по сети и приниматься этим же приложением. Полученное видео будет проигрываться на правой панели.
Другой способ запуска: вы можете запустить две копии приложения; в первой начать передачу, во второй приём; но тестировать в одном приложении удобнее.
Помимо видео, приложение пересылает звук с микрофона. Также оно может посылать текст, файл и тестовую команду.
Вы можете изменить настройки в диалоговом окне «Параметры» («Options»)
(этот диалог немодальный: изменения вступают в силу после нажатия на кнопку «Применить» («Apply»)).
По умолчанию пример пересылает видео целыми кадрами, но вы можете указать отсылать только изменённые фрагменты кадра.
Переместите ползунок «игнорировать пиксели, изменившиеся меньше чем...» («ignore all pixels with changes less than...») для задания чувствительности.
Чтобы понять, как настройки влияют на результат, пометьте «Тестовый режим» («Test mode»).
В этом режиме компонент посылает тестовые изображения кадров; в них выделены изменённые пиксели и обведены области, которые были бы переданы не в тестовом режиме.
Также диалог имеет настройки микрофона:
- «амплитуда» («amplitude») позволяет увеличить громкость
- шумоподавление
- «минимальный уровень» («min level») позволяет игнорировать слишком тихий звук
- «отсекающий интервал» («ignore interval») позволяет игнорировать монотонный шум
- «изменение голоса» («voice change») меняет тональность голоса
В нижней части главного окна находится статистика и график данных, полученных с IP-камер(ы), переданных данных, полученных данных.
Это – компонент TRVTrafficMeter. Он полезен для нахождения оптимальных настроек – вы можете увидеть, как те или иные параметры влияют на сетевой трафик.
Этот пример использует компоненты:
- TRVCamera для получения видео с камер
- TRVMicrophone для получения звука с микрофона
- TRVMicrophoneView для показа активности микрофона
- TRVCamSender для передачи видео, аудио, файлов, текста и команд
- TRVCamReceiver для получения этих данных
- 2 TRVCamViews для показа видео (с камеры и от получателя)
- TRVTrafficMeter для показа статистики
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: SendAndReceive\SingleApp\
|
| Передача и приём: два приложения |
|


Пример состоит из двух приложений: отправителя и получателя.
Запустите получатель, нажмите на кнопку «Запустить получатель» («Start Receiver»).
Запустите отправитель. Выберите источник видео из списка. Нажмите кнопку «Запустить отправитель» («Start Sender»).
Вы можете запустить до четырёх отправителей, но перед началом передачи выберите свой пункт из списка «Посылать как» («Send as») для каждого отправителя.
Эти приложения можно запускать на одном компьютере, или на нескольких компьютерах, соединённых через Интернет.
По умолчанию поле «Адресат» («Send to») содержит локальный адрес; если вы запускаете приложения на разных компьютерах, введите адрес передатчика в этом поле.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: SendAndReceive\TwoApps\
|
| Передача и приём: две стороны («Белый и серый IP-адреса») |
|


Пример показывает передачу данных (видео, аудио, файлов, команд) между двумя экземплярами приложения, без сервера, даже если один из них не имеет внешнего IP-адреса (например, он находится за прокси-сервером).
Пример реализован как одно приложение, работающее в двух режимах:
- принятие сигналов от другой стороны;
- соединения со другой стороной.
Данные могут передаваться в обоих направлениях.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: SendAndReceive\TwoSides\
|
| Передача и приём: удалённый рабочий стол (remote desktop) |
|

Этот пример состоит из двух приложений: удалённый рабочий стол (RemoteDesktop) и управление им (DesktopControl).
Запустите оба приложения, нажмите на кнопку «Соединение» («Connect») в DesktopControl.
RemoteDesktop посылает изображения рабочего стола как поток видеоданных; кроме того, он посылает координаты курсора мыши. DesktopControl получает и показывает эту информацию.
DesktopControl может отсылать команды мыши в RemoteDesktop, а RemoteDesktop исполняет их, имитируя работу мышью.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: SendAndReceive\RemoteDesktop\
|
|
3. Медиа-сервер
Ниже находятся примеры приложений, передающие мультимедийные данные по сети.
Эти приложения состоят из двух частей: сервера и клиентов.
Клиенты посылают видео (и другие данные) друг другу по сети, но, в отличие от примеров из предыдущего раздела, они не соединены напрямую.
Вместо этого они соединяются с медиа-сервером.
|
| Медиа-сервер |
|
Это приложение используется в качестве сервера для всех остальных примеров в этом разделе.
Запустите его и нажмите кнопку «Запустить сервер» («Start Server»).
Пример использует компонент TRVMediaServer.
Этот сервер может работать со всеми примерами в этом разделе («VideoChats») одновременно:
различные виды клиентов не мешают друг другу
(это происходит потому, что «Чат» общается только с клиентами, входящими в определённую группу на сервере,
а «Мессенджер» и «Конференция» общаются только с клиентами из заданного списка контактов;
хотя «Мессенджер» и «Конференция» используют одинаковые имена в списке контактов, идентификаторы пользователей в этих приложениях различны).
Вы можете запускать приложения на одном компьютере, или на нескольких, соединённых по Интернету.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\Server\
|
| Чат |
|
Пример видеочата.
Эти приложения соединяются с медиа-сервером (см. выше) и передают друг другу видео, звук с микрофона, файлы, текстовые сообщения.
По умолчанию они соединяются к медиа-серверу, запущенному на том же компьютере. Если он запущен на другом компьютере, введите его адрес перед нажатием кнопки «Подключиться» («Connect»).
Вы можете выбрать видео, которое клиент будет передавать другим («моё видео» – «my video»). Оно будет показано на маленькой панели.
Также вы можете выбрать пользователя чата, от которого будете получать видео («получать видео от пользователя» – «receive video from user»).
Видео от этого пользователя будет показано на большой панели.
По умолчанию чат посылает текст и файлы всем другим клиентам. Вы можете выбрать конкретного адресата «посылать текст и файлы пользователю» («send text and files to»).
Возможные улучшения: в этом примере все клиенты чата входят в одну группу на сервере. Можно реализовать разделы чата
(введением нескольких групп и выбором группы (комната чата), куда может вступить клиент).
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\Chat\
|
| Мессенджер |
|
Другой вариант видеочата.
Этот пример очень похож на предыдущий. Мессенджеры соединяются с медиа-сервером и посылают друг другу видео, звук, текст и файлы.
Отличия:
- Клиент чата каждый раз генерирует новый идентификатор клиента и позволяет ввести новое имя, видимое другим пользователям;
Мессенджер подключается используя одну из заранее заданных учётных записей (состоящих из имени и идентификатора)
- Клиент чата входит в группу на сервере и общается с другими членами группы.
Мессенджер общается только с заранее определённым списком клиентов (из списка контактов)
- Чат посылает текст и файлы всем другим клиентам (но может посылать их выбранному клиенту); сообщения выводятся в общем окне чата.
Мессенджер посылает текст и файлы выбранному клиенту; он создаёт окно чата для каждого клиента, с кем он общается.
- Список пользователей в чате содержит список членов группы, которые сейчас подключены («онлайн»).
Список пользователей в мессенджере содержит всех членов списка контактов: подключённые показываются зелёным цветом, отключённые – красным
Возможные улучшения: реализация редактирования списка контактов – обработка запроса добавления в список контактов, удаление пользователя из списка и т.п.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\Messenger\
|
| Видеоконференция |
|
Ещё один вариант видеочата.
Этот пример похож на предыдущий. Клиенты конференции соединяются с медиа-сервером и посылают друг другу видео, звук, текстовые сообщения.
Как и мессенджер, клиент конференции использует заранее заданный список контактов.
Клиент конференции подключается, используя одну из заранее заданных учётных записей, и общается только с другими членами списка контактов.
Отличия:
- Мессенджер показывает видео от одного клиента. Клиент конференции может показывать видео от нескольких (до пяти) других клиентов, выбранных в списке
- Мессенджер открывает отдельное окно чата для каждого собеседника; клиент конференции использует общее окно, как клиент чата
- Передача файлов и личных сообщений в конференции не реализована
- Конференция показывает системные сообщения в окне чата
- Конференция показывает статистику трафика в нижней части окна
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\Conference\
|
| Комнаты чата |
|
В этом примере пользователь может или создать свою комнату в чате или войти в уже созданную комнату.
Хозяин комнаты выбирает пользователя, который будет передавать своё видео остальным пользователям в его комнате.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\ChatRooms\
|
| Лекция |
|
Пример состоит из двух проектов: «Лектор» и «Студент».
Лектор передаёт своё видео Студентам. Студенты принимают видео от Лектора.
Пример показывает следующие возможности:
- два видеоканала (Лектор передаёт видео по двум каналам: слайды и трансляция своей камеры)
- пользовательский источник видео (слайды берутся из файлов и передаются как видео)
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\VideoChats\Lecture\
|
| Авторизация |
|
Пример показывает, как реализовать простой способ авторизации клиентов на сервере и как хранить данные клиентов в базе.
Пример состоит из двух приложений: клиента и сервера.
Имеются несколько версий сервера: версии с BDE и с FireDAC для Дельфи (Delphi), версия с TDbf для Лазаруса (Lazarus).
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: ClientServer\Login\
|
|
4. Запись звуковых и видеофайлов
Ниже находятся примеры, показывающие, как производить запись видео и звука.
|
| Диктофон |
|

Пример читает звук с выбранного входного аудиоустройства (микрофона) и проигрывает его на выбранном выходном аудиоустройстве (динамиках) или записывает в файл.
Для записи файлов пример требует библиотеку ФФмпег (FFmpeg).
Поддерживаются форматы:
- WAV (Waveform Audio)
- MP2 (MPEG-1 Audio Layer II)
- MP3 (MPEG-1 Audio Layer III)
- AC3 (Dolby Audio Codec 3)
- Vorbis (OGG)
- FLAC (Free Lossless Audio Codec)
- Opus
- WMA (Windows Media Audio) v.1 и v.2
- AAC (Advanced Audio Coding)
- RealAudio 1
- G.723.1
- Speex
- WavPack
- ALAC (Apple Lossless Audio Codec)
- AMR (Adaptive Multi-Rate audio codec)
Доступность конкретных форматов зависит от используемой версии ФФмпег (FFmpeg).
Предупреждение: некоторые аудиоформаты могут быть защищены патентами в некоторых странах, и поддержка этих форматов в приложении может требовать приобретения лицензий у владельцев патентов.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Recording\AudioRecorder\
|
| Программа видеозаписи |
|

Пример показывает, как реализовать запись видео (возможно вместе со звуком) в файл.
Пример требует библиотеку ФФмпег (FFmpeg).
Поддерживаются форматы:
- MPEG-1
- MPEG-2
- MPEG-4
- H.263+
- H.264
- MJPEG
- Windows Media Video 7 и 8
- FLV (Sorenson Spark)
- RV10 (RealVideo 1) и RV20 (RealVideo 2)
Доступность конкретных форматов зависит от используемой версии ФФмпег (FFmpeg).
Предупреждение: некоторые аудио- и видеоформаты могут быть защищены патентами в некоторых странах, и поддержка этих форматов в приложении может требовать приобретения лицензий у владельцев патентов.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Recording\VideoRecorder\
|
| Запись видео в формате MJPEG |
|
Пример демонстрирует запись видео в файл MJPEG и проигрывание видео из этого файла.
Пример не требует наличия дополнительных библиотек.
Исходный код примера находится в инсталляции РВ-Медиа в каталоге: Recording\MJPEG
|
|
|