В данном посте будет приведён пример реализации онлайн видеостриминга с помощью вебкамеры и одноплатника Orange Pi One.
Ну начнём с того, что здесь используется:
1) Платка с картинки
2) Вебкамера
А это 810+155 = 965р.- т.е. это может себе позволить даже школьник.
Итак стриминг это вещание контента в сеть. Т.е. нужен сервер который будет раздавать информационный поток. Раздавать можно широковещательно либо по запросу. В нашем случае будет по запросу.
Сперва нужно проверить- поднимается ли драйвер камеры:
opigaz@orangepione:~$ lsusb
...
Bus 002 Device 002: ID 1908:2311 GEMBIRD
...
Камера подхватилась. Теперь попробуем сделать снимок камеры. Я пошёл лёгким путём и поставил библиотеку OpenCV:
opigaz@orangepione:~$ sudo apt install python-opencv
Нашёл в интернете пример:
import cv2
import numpy
cap = cv2.VideoCapture(0) #ignore the errors
cap.set(3, 960) #Set the width important because the default will timeout
#ignore the error or false response
cap.set(4, 544) #Set the height ignore the errors
r, frame = cap.read()
cv2.imwrite("photo.jpg", frame)
И сделал первый снимок:
opigaz@orangepione:~$ python cam.py
Не очень картинка получилась, но котакт есть! Также можно использовать напрямую API «video for Linux» для получения изображения с камеры.
Для стриминга нужно организовать раздающий сервер. Для этого потребуется существенно больше времени, т.к. помимо всего прочего нужно имплементировать поддержку какого-либо формата раздачи (а лучше нескольких). И, тем более, есть готовые решения. Я поставил ffmpeg и vlc, соответственно.
Чтобы запустить сервер можно использовать эту комманду:
cvlc v4l2:///dev/video0 :v4l2-standard=mpeg2 :input-slave=alsa://hw:0,0 :live-caching=300 :sout="#transcode{vcodec=WMV2,vb=800,scale=1,acodec=wma2,ab=128,channels=2,samplerate=44100}:http{dst=:8080/stream.wmv}"
А чтобы проверить видеопоток на клиенте можно сделать вот так:
vlc -vvv http://192.168.100.10:8080/stream.wmv
Железная часть выглядит так:
А результат таков:
Также к этому потоку можно подключаться и с мобильных устройств. Я пробовал со своего смартфона с установленным на нём vlc.
PS: Для меня самым удивительным было, что и камера и платка работают. Причём загрузка платы примерно такова во время вещания:
PPS: Жаль, что мою прошлую публикацию выпилили. Хотел донести народу, что даже студент может себе позволить взять дешманскую железку и она будет работать.
Автор: gazpar