1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/smartelec_056-RtspServer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RtspServer

1. Проект

  • RTSP-сервер, реализованный на C++

2. Функциональные возможности

  • Поддержка аудио-видео форматов H264 и AAC
  • Поддержка передачи видео в формате H264 и аудио в формате AAC
  • Поддержка одновременной передачи аудио и видео
  • Поддержка сбора данных с камеры V4L2 и кодирования их в формат H264
  • Поддержка сбора данных с аудиоустройства ALSA и кодирования их в формат AAC
  • Поддержка однобайтовой (RTP_OVER_UDP, RTP_OVER_RTSP) и многоадресной передачи

3. Основная среда разработки

  • Система: Ubuntu 14.04
  • Компилятор: gcc 4.8.4

4. Инструкции по использованию

Примеры: передача файла H.264, передача файла AAC, одновременная передача H.264 и AAC, сбор данных с камеры и передача их, сбор данных с аудиоустройства и передача их

4.1 Передача аудио-видео файлов

  • Скачивание

    # 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 ```

    ./h264_rtsp_server test.h264

    
    После запуска появится сообщение с URL, который будет меняться в зависимости от IP-адреса хоста.
    

    Play the media using the URL "rtsp://192.168.31.115:8554/live"

    
    Откройте VLC, введите URL, нажмите "Play" и увидите видео.
    
    ![Здесь можно вставить изображение](https://img-blog.csdnimg.cn/20190809104752224.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjQ2MjIwMg==,size_16,color_FFFFFF,t_70)
    
  • Эффект Здесь можно вставить изображение

  • Запуск aac_rtsp_server

    # ./aac_rtsp_server test.aac
  • Запуск h264_aac_rtsp_server

    # ./h264_aac_rtsp_server test.h264 test.aac

4.2 Сбор данных с камеры V4L2

Сбор данных с камеры 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.

  • Результат

    Здесь можно вставить изображение

4.3 Сборка аудио устройства ALSA

Сборка аудио устройства 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.

4.5 Мультикаст

Если вы хотите протестировать мультикаст, вам нужно изменить пример example.

Откройте любой из примеров и раскомментируйте следующую строку:

//session->startMulticast();

После этого перекомпилируйте и запустите пример, чтобы переключиться на мультикаст.

5. Технические аспекты

Проект использует библиотеку muduo для сетевых операций и библиотеку live555.

  • Модель сервера

    Неблокирующее ввод-вывод, использует модель Reactor. Использует пулы потоков для обработки задач с большим вычислительным объемом (обработка аудио- и видеофайлов, сбор данных аудио- и видеоданных и их кодирование).

  • Многоканальное ввод-вывод

    Поддерживает select, poll, epoll.

  • Таймеры

    Использует таймеры, предоставляемые Linux через timerfd_create. Таймерные файловые дескрипторы передаются как события в Reactor. Множество таймеров управляется с помощью multimap.- Логирование

    Логирование реализовано с разделением на клиентскую и серверную части. Клиентская часть отвечает за форматирование строк и отправку их на серверную часть. Серверная часть запускает отдельный поток для записи данных на диск, используя двойное буферизирование.

  • Сбор данных аудио- и видеоданных и их обработка

    Сбор данных аудио- и видеоданных и их обработка используют модель производителя и потребителя. Сбор данных является производителем, а обработка данных — потребителем. Производитель поддерживает циклический буфер, который добавляет задачи в пулы потоков для заполнения кэша. Потребитель имеет таймер, который периодически запрашивает данные у производителя, упаковывает их в RTP-пакеты и передает.

    Здесь можно вставить изображение

6. Контактная информация

Электронная почта: 1345648755@qq.com

Блог: _JT_

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

RTSP-сервер, поддерживающий форматы H.264 и AAC, а также поддержку камер V4L2 и звуковых карт ALSA Развернуть Свернуть
C++ и 3 других языков
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/smartelec_056-RtspServer.git
git@api.gitlife.ru:oschina-mirror/smartelec_056-RtspServer.git
oschina-mirror
smartelec_056-RtspServer
smartelec_056-RtspServer
master