Скачать скомпилированную версию можно из прикреплённых файлов проекта.
Camkit использует систему сборки cmake, поэтому убедитесь, что cmake установлен перед компиляцией. Следуйте следующим шагам для компиляции и установки:
cd Camkit_source_dir
mkdir build
cd build
cmake . -Dkey=value
make
make install
Где -Dkey=value — это настраиваемые параметры, поддерживаемые опции включают:
Camkit использует стандартный интерфейс V4L для извлечения видео, что позволяет использовать большинство USB-камер. Camkit поддерживает преобразование цвета и кодирование H264 на трёх платформах:
Затем следуйте шагам сборки, используя следующие команды:
```shell
mkdir build
cd build
cmake ..
make
make install
cktool
инструмент; 2. libcamkit.so
библиотека; 3. файлы заголовков для разработки. По умолчанию путь установки — /usr/local
, но вы можете указать другой путь, добавив опцию -DCMAKE_INSTALL_PREFIX=where
при сборке.
scp
, чтобы скопировать исходный код Camkit на Raspberry Pi, затем перейдите в каталог с исходным кодом.Поскольку Raspberry Pi работает под управлением Linux, теоретически можно использовать библиотеку ffmpeg так же, как на ПК, но на практике это приводит к значительной задержке, с частотой кадров всего 1-2 кадра в секунду и потреблением CPU около 90%. Поэтому рекомендуется использовать GPU-ускорение, оптимизированное для Raspberry Pi. Ниже приведены инструкции по компиляции.Для использования GPU-ускорения потребуются некоторые заголовочные файлы и библиотеки, которые обычно находятся в каталоге /opt/vc/
и не требуют отдельной установки.Процесс компиляции очень прост. Перейдите в каталог исходного кода Camkit и используйте следующие команды для компиляции и установки:
mkdir build
cd build
cmake . -DPLAT=RPI
make
make install
Таким образом, Camkit будет установлен на вашей Raspberry Pi, и путь к нему будет таким же, как и на ПК.
В разработке
Интерфейс Camkit очень прост и удобен, каждый подфункциональный модуль следует аналогичному интерфейсу.
xxxHandle = xxx_open(xxParams); // Открыть xxx handle, например: capture_open, convert_open.
. . . // Конкретные действия
xxx_close(xxxHandle); // Закрыть handle, например capture_close, convert_close.
Обычный порядок вызова:C struct cap_handle *caphandle = NULL; // Capture handler struct cvt_handle *cvthandle = NULL; // Conversion handler struct enc_handle *enchandle = NULL; // Encoding handler struct pac_handle *pachandle = NULL; // Packing handler struct net_handle *nethandle = NULL; // Network handler struct cap_param capp; // Capture parameters struct cvt_param cvtp; // Conversion parameters struct enc_param encp; // Encoding parameters struct pac_param pacp; // Packing parameters struct net_param netp; // Network parameters // Setting parameters capp.xxx = xxx; . . . cvtp.xxx = xxx; . . . encp.xxx = xxx; . . . pacp.xxx = xxx; . . . netp.xxx = xxx; . . . // Opening functions using the set parameters caphandle = capture_open(capp); cvthandle = convert_open(cvtp); enchandle = encode_open(encp); pachandle = pack_open(pacp); nethandle = net_open(netp); capture_start(caphandle); // Start capture while(1) { capture_get_data(caphandle, . . . ); // Get one frame convert_do(cvthandle, . . . ); // Conversion, YUV422=>YUV420, if your camera supports direct capture of YUV420 data, this is not required }
```markdown
while (encode_get_headers(enchandle, . . . ) == 1) // Get H264 headers, PPS/SPS
{
. . .
}
encode_do(enchandle, . . . ); // Encode image frame
pack_put(pachandle, . . . ); // Send encoded image to the packer
while(pack_get(pachandle, . . . ) == 1) // Get packed RTP packet
{
net_send(nethandle, . . . ); // Send RTP packet
}
}
capture_stop(caphandle); // Stop capture
// Close all functions
net_close(nethandle);
encode_close(enchandle);
convert_close(cvthandle);
capture_close(caphandle);
```Примечание:
1. Каждая из этих подфункций может использоваться независимо, например, только для захвата, или для записи закодированного изображения в файл без упаковки и отправки и т. д.
2. Если используется официальная камера Raspberry Pi, то функция захвата недоступна и потребуется написать дополнительный код, но все последующие функции кодирования и упаковки будут работать.
PS: В каталоге src есть два полных примера, которые можно использовать в качестве образца.
### Пример -- Запуск cktool на Raspberry Pi для просмотра реального времени
Файл src/cktool.c представляет собой инструмент, использующий Camkit, который поддерживает все функции Camkit.
Использование:
$cktool [options]
Параметры:
1. -? Показать справку
2. -d Включить отладочную информацию, каждый шаг будет отмечен символом.
3. -s Установить шаг 0/1/3/7/15 (0: только захват, 1: захват + преобразование, 3: захват + преобразование + кодирование (по умолчанию), 7: захват + преобразование + кодирование + упаковка, 15: захват + преобразование + кодирование + упаковка + отправка)
4. -i Установить устройство камеры для открытия (по умолчанию /dev/video0)
5. -o Установить файл для записи (в сочетании с параметром -s можно записывать данные на каждом этапе, что удобно для отладки)
6. -a Установить IP-адрес для сети
7. -p Установить порт для сети
8. -c Установить формат изображения захвата: 0: YUYV (по умолчанию), 1: YUV420
9. -w Установить ширину видео (640)
10.-h Установить высоту видео (480)
11. -r Установить скорость кодирования кбит/с (1000)
12. -f Установить кадровую частоту (15)
13. -t Установить, будет ли изображение переплетено (0)
14. -g Установить размер GOP для кодирования (12)Предположим, что мы хотим использовать Camkit на Raspberry Pi и подключить Raspberry Pi и PC к одному маршрутизатору.
RPI(Camkit) <==> Маршрутизатор <==> PC (VLC)
Во-первых, выполните компиляцию и установку, как описано выше.
Настройте Raspberry Pi для включения поддержки камеры и выделения `gpu_mem`, для системы Raspbian используйте `sudo raspi-config`, для системы Arch смотрите [Wiki](https://wiki.archlinux.org/index.php/Raspberry_Pi).
```Сначала откройте файл `video.sdp` на ПК с помощью блокнота, измените IP-адрес на IP-адрес вашего ПК, предположим, это `192.168.1.2`, задайте порт, например, `8888`. Запустите VLC-плеер и откройте файл `demo/video.sdp`.
Затем на Raspberry Pi выполните:
#cktool -s 15 -a 192.168.1.2 -p 8888
Теперь вы должны увидеть реальное видео с Raspberry Pi в библиотеке VLC на вашем ПК.
---
Исправленный текст:
Предположим, что мы хотим использовать Camkit на Raspberry Pi и подключить Raspberry Pi и PC к одному маршрутизатору.
RPI(Camkit) <==> Маршрутизатор <==> PC (VLC)
Во-первых, выполните компиляцию и установку, как описано выше.
Настройте Raspberry Pi для включения поддержки камеры и выделения `gpu_mem`, для системы Raspbian используйте `sudo raspi-config`, для системы Arch смотрите [Wiki](https://wiki.archlinux.org/index.php/Raspberry_Pi).
```Сначала откройте файл `video.sdp` на ПК с помощью блокнота, измените IP-адрес на IP-адрес вашего ПК, предположим, это `192.168.1.2`, задайте порт, например, `8888`. Запустите VLC-плеер и откройте файл `demo/video.sdp`.
Затем на Raspberry Pi выполните:
#cktool -s 15 -a 192.168.1.2 -p 8888
Теперь вы должны увидеть реальное видео с Raspberry Pi в библиотеке VLC на вашем ПК.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )