Документация
ОС Аврора 5.1.5

Библиотека StreamCamera

StreamCamera — это библиотека на основе плагинов для доступа к необработанным видеоданным с камеры и аппаратных кодировщиков и декодеров. У неё очень ограниченный интерфейс, и её следует рассматривать как дополнение к приложениям для видеоконференций.

Она основана на gecko-camera, библиотеке для браузера Aurora на основе Gecko. Название библиотеки может быть изменено.

Клиентский API

В библиотеке имеется пространство имён Aurora::StreamCamera.

Классы StreamCamera:

Aurora::StreamCamera::Camera Камера
Aurora::StreamCamera::CameraListener Обратные вызовы для камеры
Aurora::StreamCamera::CameraManager Управление камерой
Aurora::StreamCamera::CodecManager Управление кодеком
Aurora::StreamCamera::GraphicBuffer Дескриптор графического буфера
Aurora::StreamCamera::VideoDecoder Видеодекодер
Aurora::StreamCamera::VideoDecoderListener Обратные вызовы для видеодекодера
Aurora::StreamCamera::VideoEncoder Видеокодер
Aurora::StreamCamera::VideoEncoderListener Обратные вызовы для видеокодера
Aurora::StreamCamera::VideoOutputQt5 Привязка к Qt5/QML VideoOutput

Структуры StreamCamera:

Aurora::StreamCamera::CameraCapability Настройки видеопотока
Aurora::StreamCamera::CameraInfo Информация о камере
Aurora::StreamCamera::RawImageFrame Дескриптор видеокадра
Aurora::StreamCamera::VideoCodecInfo Основная информация о кодеке
Aurora::StreamCamera::VideoDecoderMetadata Настройки видеодекодера
Aurora::StreamCamera::VideoEncoderMetadata Настройки видеокодера
Aurora::StreamCamera::YCbCrFrame Дескриптор YUV-подобного видеокадра
Aurora::StreamCamera::YCbCrFrame Дескриптор YUV-подобного видеокадра

Перечисления StreamCamera доступны в отдельном разделе.

Пример использования StreamCamera

Короткий пример использования камеры:

class Listener : public Aurora::StreamCamera::CameraListener
{
    ...

    void onCameraFrame(std::shared_ptr<Aurora::StreamCamera::GraphicBuffer> buffer) override
    {
        // Действия с кадром
    }

    ...
}

Aurora::StreamCamera::CameraManager *manager = StreamCameraManager();

Aurora::StreamCamera::CameraInfo info;
if (manager->getCameraInfo(0, info)) {
    std::vector<Aurora::StreamCamera::CameraCapability> caps;
    if (manager->queryCapabilities(camera.id, caps)) {
        std::shared_ptr<Aurora::StreamCamera::Camera> camera = manager->openCamera(info.id);
        const Aurora::StreamCamera::CameraCapability cap = caps.at(modeNumber);

        Listener listener;
        camera->setListener(&listener);
        camera->startCapture(cap);

        // Главный цикл

        // Камера будет остановлена и закрыта, когда умный указатель `camera` 
        // будет отпущен
    }
}

Примечание:

При захвате видео в режиме, отличном от QCamera::CaptureStillImage, останавливается любое воспроизведение звука в системе.

Происходит это потому, что при захвате видео с помощью QtMultimedia ресурс звука захватывается отдельно. Другие приложения перестают воспроизводить звук, это обеспечивается менеджером ресурсов ohm.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.