|
| Скачать примеры | |
«Выставка RVMedia»
Нижеприведённые примеры не содержат исходного кода, но каталоги в инсталляции RVMedia, содержащие исходный код примеров, указаны.
Перед скачиванием примеров вы должны принять условия лицензионного соглашения.
Скачать
Размер инсталляции: 63,5 Мб, обновлена 1 марта 2024 г..
Прочитайте инструкции по установке/удалению и заявление о конфиденциальности.
Если вас интересуют скомпилированные примеры для TRichView и ScaleRichView, перейдите к «выставке TRichView».
В инсталляции RVMedia примеры находятся в папках:
- Demos\Delphi\ для Delphi VCL
- Demos\Delphi.FMX\ для Delphi FireMonkey
- Demos\Lazarus\ для Lazarus
Оглавление
- Камеры (показ видео из различных источников)
- Передача и приём (прямое соединение приложений по сети)
- Медиа-сервер (клиент-серверное соединение)
- Запись (аудио- и видеофайлов)
1. Камеры
|
Видео с одной камеры |
|
Простейший пример: показ видео с одной камеры.
В верхней части окна находится список камер. Он включает как локальные камеры (USB-вебкамеры), так и камеры наблюдения, доступные в Интернете.
Аналогичный список используется (почти) во всех демонстрационных примерах.
Не все камеры могут работать; если какая-то камера не отвечает, просто пропустите её и попробуйте другую.
Пример использует два компонента: TRVCamera и TRVCamView.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\CamList\
|
Фильтры обработки изображений |
|
Этот пример показывает, как можно менять кадры перед выводом на экран.
Пример позволяет применить несколько фильтров (усиление резкости, выделение границ, рельеф, размытие).
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\Filters\
|
Управление движением камеры |
|
Пример показывает, как можно управлять поворотом камер наблюдения.
В этом примере список содержит только те камеры, движением которых можно управлять.
Замечание 1: управление движением может быть отключено для некоторых камер.
Замечание 2: возможно, кроме вас камерой управляют и другие люди, поэтому не удивляйтесь, если камера поворачивается без ваших команд.
Управление камерой возможно двумя способами:
- специальным элементом управления (в левой части окна) – TRVCamControl
- щелчками по окну вывода видео (курсор у краёв окна принимает форму стрелок, указывающих направление поворота)
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\CamControl\
|
Обнаружение движения (старая версия) |
|
Пример показывает, как можно реализовать функцию обнаружения движения.
В нём реализовано сравнение кадров видео и обнаружение изменённых областей.
Вы можете поменять параметры, чтобы найти оптимальные настройки для конкретной камеры:
- подавление шума: позволяет игнорировать незначительно изменившиеся пиксели;
- области обнаружения движения: кадр делится на области, и изменения определяется в каждой из областей отдельно;
- требуемое число изменившихся соседних областей: позволяет игнорировать изменения в области, если соседние области не изменились;
- порог обнаружения: указывает, сколько областей должны измениться, чтобы пример вывел сообщение ("detected!");
Замечание: этот алгоритм обнаружения движения используется только в демонстрационных целях.
Он не очень хорош, главным образом потому, что использует фиксированную сетку областей; поэтому изменения в одной области
имеют большую вероятность определиться, чем изменения на стыке областей.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\MotionDetect_Old\
|
Обнаружение движения |
|
Пример показывает, как использовать встроенное средство RVMedia для обнаружения движения.
Вы можете поменять параметры, чтобы найти оптимальные настройки для конкретной камеры:
- игнорирование незначительно изменённых пикселей;
- задание минимально допустимого размера изменённой области.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\MotionDetect\
|
Вебкамера |
|
Пример показывает, как можно отображать видео с локальной камеры (такой как USB-вебкамера) и менять её видеорежимы.
Замечание: возможно, что не все режимы, перечисленные в списке примера, получится установить; результат зависит от модели вебкамеры.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\WebCamera\
|
Видео с нескольких камер |
|
Пример показывает вывод видео с нескольких камер. Он использует компонент TRVCamMultiView.
В этом примере для вывода видео есть четыре маленьких панели и одна большая главная панель. Щёлкните по одной из маленьких панелей, затем щёлкните по камере в списке, чтобы вывести её на эту панель.
Главная панель показывает видео с выбранной маленькой панели.
Пример показывает видео на главной панели с большей частотой кадров (поэтому, если вы переключитесь на другую панель, которая уже выводит видео,
компонент может переподключиться к камере, запрашивая видео с большей кадровой частотой)
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\CamListMulti\
|
Поиск камер |
|
Пример ищет камеры в заданном диапазоне IP-адресов.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\Search\
|
«MediaTest» |
|
Этот пример – самый сложный в наборе.
Он показывает видео с нескольких камер и даёт возможность настраивать и администрировать камеры.
Помимо выбора камеры из списка, вы можете ввести адрес камеры вручную.
Обратите внимание на вкладки «Users» («Пользователи») и «Parameters» («Параметры») – они появляются для камер, которые можно настраивать.
Исходный код примера находится в инсталляции RVMedia в каталоге: Cameras\MediaTest\
|
2. Передача и приём видео
Примеры ниже передают данные по сети: видео, звук и другую информацию (такую как файлы и команды).
|
Передача и приём: в одном приложении |
|
Как протестировать: выберите источник видео в списке «cameras» («камеры»). Видео будет показываться на панели слева.
Нажмите на кнопки «Start Sender» («Начать передачу») и «Start Receiver» («Начать приём»).
Видео будет передаваться по сети и приниматься этим же приложением. Полученное видео будет проигрываться на правой панели.
Другой способ запуска: вы можете запустить две копии приложения; в первой начать передачу, во второй приём; но тестировать в одном приложении удобнее.
Помимо видео, приложение пересылает звук с микрофона. Также оно может посылать текст, файл и тестовую команду.
Вы можете изменить настройки в диалоговом окне «Options» («Параметры»)
(этот диалог немодальный: изменения вступают в силу после нажатия на кнопку «Apply» («Применить»)).
Вы можете изменить способ кодирования кадра – Jpeg или HWL (HWL сейчас в стадии тестирования).
По умолчанию пример пересылает видео целыми кадрами, но вы можете указать отсылать только изменённые фрагменты кадра.
Переместите ползунок «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 для показа статистики
Исходный код примера находится в инсталляции RVMedia в каталоге: SendAndReceive\SingleApp\
|
Передача и приём: два приложения |
|
Пример состоит из двух приложений: передатчика и приёмника.
Запустите приёмник, нажмите на кнопку «Start Receiver».
Запустите передатчик. Выберите источник видео их списка. Нажмите кнопку «Start Sender».
Вы можете запустить до четырёх передатчиков, но перед началом передачи выберите свой пункт из списка «Send as» для каждого передатчика.
Эти приложения можно запускать на одном компьютере, или на нескольких компьютерах, соединённых через Интернет.
По умолчанию поле «Send to» («Адресат») содержит локальный адрес; если вы запускаете приложения на разных компьютерах, введите адрес передатчика в этом поле.
Исходный код примера находится в инсталляции RVMedia в каталоге: SendAndReceive\TwoApps\
|
Передача и приём: две стороны («Белый и серый IP-адреса») |
|
Пример показывает передачу данных (видео, аудио, файлов, команд) между двумя экземплярами приложения, без сервера, даже если один из них не имеет внешнего IP-адреса (например, он находится за прокси-сервером).
Пример реализован как одно приложение, работающее в двух режимах:
- принятие сигналов от другой стороны;
- соединения со другой стороной.
Данные могут передаваться в обоих направлениях.
Исходный код примера находится в инсталляции RVMedia в каталоге: SendAndReceive\TwoSides\
|
Передача и приём: удалённый рабочий стол (remote desktop) |
|
Этот пример состоит из двух приложений: RemoteDesktop (удалённый рабочий стол) и DesktopControl (управление им).
Запустите оба приложения, нажмите на кнопку «Connect» в DesktopControl.
RemoteDesktop посылает изображения рабочего стола как поток видеоданных; кроме того, он посылает координаты курсора мыши. DesktopControl получает и показывает эту информацию.
DesktopControl может отсылать команды мыши в RemoteDesktop, а RemoteDesktop исполняет их, имитируя работу мышью.
Исходный код примера находится в инсталляции RVMedia в каталоге: SendAndReceive\RemoteDesktop\
|
3. Медиа-сервер
Ниже находятся примеры приложений, передающие мультимедийные данные по сети.
Эти приложения состоят из двух частей: сервера и клиентов.
Клиенты посылают видео (и другие данные) друг другу по сети, но, в отличие от примеров из предыдущего раздела, они не соединены напрямую.
Вместо этого они соединяются с медиа-сервером.
|
Медиа-сервер |
|
Это приложение используется в качестве сервера для всех остальных примеров в этом разделе.
Запустите его и нажмите кнопку «Start Server» («Запустить сервер»).
Пример использует компонент TRVMediaServer.
Этот сервер может работать со всеми примерами в этом разделе («VideoChats») одновременно:
различные виды клиентов не мешают друг другу
(это происходит потому, что «Чат» общается только с клиентами, входящими в определённую группу на сервере,
а «Мессенджер» и «Конференция» общаются только с клиентами из заданного списка контактов;
хотя «Мессенджер» и «Конференция» используют одинаковые имена в списке контактов, идентификаторы пользователей в этих приложениях различны).
Вы можете запускать приложения на одном компьютере, или на нескольких, соединённых по Интернету.
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\Server\
|
Чат |
|
Пример видеочата.
Эти приложения соединяются с медиа-сервером (см. выше) и передают друг другу видео, звук с микрофона, файлы, текстовые сообщения.
По умолчанию они соединяются к медиа-серверу, запущенному на том же компьютере. Если он запущен на другом компьютере, введите его адрес перед нажатием кнопки «Connect» («Подключиться»).
Вы можете выбрать видео, которое клиент будет передавать другим («my video» – «моё видео»). Оно будет показано на маленькой панели.
Также вы можете выбрать пользователя чата, от которого будете получать видео («receive video from user» – «получать видео от пользователя»).
Видео от этого пользователя будет показано на большой панели.
По умолчанию чат посылает текст и файлы всем другим клиентам. Вы можете выбрать конкретного адресата («send text and files to»).
Возможные улучшения: в этом примере все клиенты чата входят в одну группу на сервере. Можно реализовать разделы чата
(введением нескольких групп и выбором группы (раздела чата), куда может вступить клиент).
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\Chat\
|
Мессенджер |
|
Другой вариант видеочата.
Этот пример очень похож на предыдущий. Мессенджеры соединяются с медиа-сервером и посылают друг другу видео, звук, текст и файлы.
Отличия:
- Клиент чата каждый раз генерирует новый идентификатор клиента и позволяет ввести новое имя, видимое другим пользователям;
Мессенджер подключается используя одну из заранее заданных учётных записей (состоящих из имени и идентификатора)
- Клиент чата входит в группу на сервере и общается с другими членами группы.
Мессенджер общается только с заранее определённым списком клиентов (из списка контактов)
- Чат посылает текст и файлы всем другим клиентам (но может посылать их выбранному клиенту); сообщения выводятся в общем окне чата.
Мессенджер посылает текст и файлы выбранному клиенту; он создаёт окно чата для каждого клиента, с кем он общается.
- Список пользователей в чате содержит список членов группы, которые сейчас подключены («онлайн»).
Список пользователей в мессенджере содержит всех членов списка контактов: подключённые показываются зелёным цветом, отключённые – красным
Возможные улучшения: реализация редактирования списка контактов – обработка запроса добавления в список контактов, удаление пользователя из списка и т.п.
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\Messenger\
|
Видеоконференция |
|
Ещё один вариант видеочата.
Этот пример похож на предыдущий. Клиенты конференции соединяются с медиа-сервером и посылают друг другу видео, звук, текстовые сообщения.
Как и мессенджер, клиент конференции использует заранее заданный список контактов.
Клиент конференции подключается, используя одну из заранее заданных учётных записей, и общается только с другими членами списка контактов.
Отличия:
- Мессенджер показывает видео от одного клиента. Клиент конференции может показывать видео от нескольких (до пяти) других клиентов, выбранных в списке
- Мессенджер открывает отдельное окно чата для каждого собеседника; клиент конференции использует общее окно, как клиент чата
- Передача файлов и личных сообщений в конференции не реализована
- Конференция показывает системные сообщения в окне чата
- Конференция показывает статистику трафика в нижней части окна
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\Conference\
|
Комнаты чата |
|
В этом примере пользователь может или создать свою комнату в чате или войти в уже созданную комнату.
Хозяин комнаты выбирает пользователя, который будет передавать своё видео остальным пользователям в его комнате.
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\ChatRooms\
|
Лекция |
|
Пример состоит из двух проектов: «Лектор» и «Студент».
Лектор передаёт своё видео Студентам. Студенты принимают видео от Лектора.
Пример показывает следующие возможности:
- два видеоканала (Лектор передаёт видео по двум каналам: слайды и трансляция своей камеры)
- пользовательский источник видео (слайды берутся из файлов и передаются как видео)
Исходный код примера находится в инсталляции RVMedia в каталоге: ClientServer\VideoChats\Lecture\
|
Авторизация |
|
Пример показывает, как реализовать простой способ авторизации клиентов на сервере и как хранить данные клиентов в базе.
Пример состоит из двух приложений: клиента и сервера.
Имеются несколько версий сервера: версии с BDE и с FireDAC для Delphi, версия с TDbf для Lazarus.
Исходный код примера находится в инсталляции RVMedia в каталоге: 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.
Предупреждение: некоторые аудиоформаты могут быть защищены патентами в некоторых странах, и поддержка этих форматов в приложении может требовать приобретения лицензий у владельцев патентов.
Исходный код примера находится в инсталляции RVMedia в каталоге: 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.
Предупреждение: некоторые аудио- и видеоформаты могут быть защищены патентами в некоторых странах, и поддержка этих форматов в приложении может требовать приобретения лицензий у владельцев патентов.
Исходный код примера находится в инсталляции RVMedia в каталоге: Recording\VideoRecorder\
|
Запись видео в формате MJPEG |
|
Пример демонстрирует запись видео в файл MJPEG и проигрывание видео из этого файла.
Пример не требует наличия дополнительных библиотек.
Исходный код примера находится в инсталляции RVMedia в каталоге: Recording\MJPEG
|
|
|