Примеры: передача файла H.264, передача файла AAC, одновременная передача H.264 и AAC, сбор данных с камеры и передача их, сбор данных с аудиоустройства и передача их
Скачивание
# git clone git@github.com:ImSjt/RtspServer.git
Компиляция
# cd RtspServer/
# make
После компиляции в директории example/
будут созданы h264_rtsp_server
, aac_rtsp_server
, h264_aac_rtsp_server
h264_rtsp_server - передача видео в формате H.264
aac_rtsp_server - передача аудио в формате AAC
h264_aac_rtsp_server - одновременная передача аудио и видео
Дополнительно, v4l2_rtsp_server
и alsa_rtsp_server
требуют зависимостей, которые по умолчанию не компилируются, подробнее ниже
Запуск h264_rtsp_server
Перейти в директорию example
# cd example/
Запустить h264_rtsp_server
```
После запуска появится сообщение с URL, который будет меняться в зависимости от IP-адреса хоста.
Play the media using the URL "rtsp://192.168.31.115:8554/live"
Откройте VLC, введите URL, нажмите "Play" и увидите видео.

Эффект
Запуск aac_rtsp_server
# ./aac_rtsp_server test.aac
Запуск h264_aac_rtsp_server
# ./h264_aac_rtsp_server test.h264 test.aac
Сбор данных с камеры V4L2 осуществляется примером 04_v4l2_rtsp_server.cpp
, который по умолчанию не компилируется. Этот пример требует зависимости от библиотеки x264 для компиляции. Ниже приведены инструкции по использованию.
Компиляция и установка x264
Как скомпилировать x264, в интернете есть множество руководств, поэтому здесь не будем подробно описывать процесс.
Установите библиотеку x264 в Linux-среду, выполните команды ./configure
, make
, make install
.
Обратите внимание, что скомпилированные библиотеки и заголовочные файлы должны быть установлены в /usr/lib
и /usr/include
.
Изменение Makefile
Измените первую строку Makefile ``` V4L2_SUPPORT=n
на
V4L2_SUPPORT=y
Перекомпиляция
# make
После компиляции в директории example/
появится файл v4l2_rtsp_server
.
Запуск v4l2_rtsp_server
# ./v4l2_rtsp_server /dev/video0
Вы получите сообщение
Play the media using the URL "rtsp://192.168.31.115:8554/live"
Введите этот URL в VLC.
Результат
Сборка аудио устройства ALSA осуществляется с помощью примера 05_alsa_rtsp_server.cpp
, который по умолчанию не компилируется. Для этого примера требуется наличие библиотеки alsa-lib
и libfaac
. Ниже приведены шаги для сборки.
Компиляция и установка alsa-lib
и libfaac
Здесь не будем подробно описывать процесс.
Обычно требуется выполнить команды ./configure
, make
, make install
.
Обратите внимание, что скомпилированные библиотеки и заголовочные файлы должны быть установлены в /usr/lib
и /usr/include
.
Изменение Makefile
Измените вторую строку Makefile
ALSA_SUPPORT=n
на
ALSA_SUPPORT=y
Перекомпиляция
# make
После компиляции в директории example/
появится файл alsa_rtsp_server
.
Запуск alsa_rtsp_server
# ./alsa_rtsp_server hw:0,0
Вы получите сообщение
Play the media using the URL "rtsp://192.168.31.115:8554/live"
Введите этот URL, чтобы получить звук с вашего звукового устройства.### 4.4 RTP_OVER_RTSP
По умолчанию проект использует RTP_OVER_UDP
, но поддерживает RTP_OVER_RTSP
. Если требуется тестирование, необходимо настроить VLC.
Инструменты
>> Параметры
>> Ввод/декодирование
>> Live555 потоки
>> RTP over RTSP (TCP)
Затем запустите любой пример, введите URL в VLC, и вы будете использовать RTP_OVER_RTSP
.
Если вы хотите протестировать мультикаст, вам нужно изменить пример example.
Откройте любой из примеров и раскомментируйте следующую строку:
//session->startMulticast();
После этого перекомпилируйте и запустите пример, чтобы переключиться на мультикаст.
Проект использует библиотеку muduo для сетевых операций и библиотеку live555.
Модель сервера
Неблокирующее ввод-вывод, использует модель Reactor. Использует пулы потоков для обработки задач с большим вычислительным объемом (обработка аудио- и видеофайлов, сбор данных аудио- и видеоданных и их кодирование).
Многоканальное ввод-вывод
Поддерживает select, poll, epoll.
Таймеры
Использует таймеры, предоставляемые Linux через timerfd_create
. Таймерные файловые дескрипторы передаются как события в Reactor. Множество таймеров управляется с помощью multimap
.- Логирование
Логирование реализовано с разделением на клиентскую и серверную части. Клиентская часть отвечает за форматирование строк и отправку их на серверную часть. Серверная часть запускает отдельный поток для записи данных на диск, используя двойное буферизирование.
Сбор данных аудио- и видеоданных и их обработка
Сбор данных аудио- и видеоданных и их обработка используют модель производителя и потребителя. Сбор данных является производителем, а обработка данных — потребителем. Производитель поддерживает циклический буфер, который добавляет задачи в пулы потоков для заполнения кэша. Потребитель имеет таймер, который периодически запрашивает данные у производителя, упаковывает их в RTP-пакеты и передает.
Электронная почта: 1345648755@qq.com
Блог: _JT_
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )