📷 Камера camera_stream.py

Поток камеры в течение 30 секунд

camera_examples/camera_stream.py

Публикует поток video ограниченное время (30 с), затем корректно закрывает его.

Упрощённый пример трансляции: запоминается время старта, и пока не истекли cycle_time = 30 секунд, кадры публикуются в поток video. После цикла поток закрывается.

Как работает

  1. Создать ImageViewer() и Camera().
  2. Запомнить время старта my_time = time.time().
  3. Пока прошло меньше 30 секунд — получать кадр и вызывать imshow("video", frame, fps=30).
  4. После цикла вызвать viewer.close().

Используемые методы SDK

Ключевые параметры

ПараметрЗначениеОписание
cycle_time30 сДлительность трансляции.
fps30Частота кадров.

Запуск

cd camera_examples
python3 camera_stream.py

Результат

  • RTSP-поток rtsp://10.42.0.1:8889/video/ в течение 30 секунд.

Видеопотоки

rtsp://10.42.0.1:8889/video/

Примечания

  • Камера здесь не останавливается через stop() — программа завершается после цикла.

Требования

  • Драйвер камеры gstreamer.

Полный исходный код

Показать camera_stream.py
from pioneer_sdk2 import ImageViewer, Camera # импортируем классы из библиотеки pioneer_sdk2
import time                                  # библиотека time содержит функции для работы со временем

viewer = ImageViewer()                # создаем экземпляр класса ImageViewer
camera = Camera()                     # создаем экземпляр класса Camera

my_time = time.time()                        # объявляем переменную my_time, присваиваем текущее время (в секундах с 1970 года)
cycle_time = 30                              # объявляем переменную cycle_time, присваиваем желаемую длительность цикла

while time.time() - my_time < cycle_time:        # запускаем цикл, код будет повторяться, пока условие верно
    frame = camera.get_cv_frame()                # получаем кадр и присваиваем данные переменной frame
    viewer.imshow("video", frame, fps=30)        # запускаем трансляцию, содержит аргументы:
                                                 # video - название трансляции
                                                 # frame - переменная с ранее полученным кадром
                                                 # fps=30 - количество кадров в секунду при передаче видео

                                                 # трансляция выполняется по адресу: 10.42.0.1:8889/video
                                                 # ip   - по умолчанию 10.42.0.1 или скопировать из раздела хот-спот на компьютере
                                                 # 8889 - порт трансляции
                                                 # name - название трансляции

                                                 # при подключения квадрокоптера к вашей сети:
                                                 # трансляция выполняется по адресу: ваш ip:8889/video

viewer.close()                            # останавливаем видеопоток