В данном посте будет приведён пример реализации онлайн видеостриминга с помощью вебкамеры и одноплатника 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: Жаль, что мою прошлую публикацию выпилили. Хотел донести народу, что даже студент может себе позволить взять дешманскую железку и она будет работать.
Поделиться с друзьями
-->

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


  1. begemot_nn
    17.05.2017 16:30
    +1

    <зануда mode on>
    Извините, это полная статья? или случайно черновик опубликовался?
    хабы:
    «Обработка изображений» — это про то, что вы OpenCV из репа поставили?
    «Анализ и проектирование систем» — это про то, что вы спроектировали систему из апельсинки и вебкамеры?
    </зануда mode off>

    Не хочу обидеть, но что вы хотели сказать то этой статьёй?


    1. gazpar
      17.05.2017 16:40
      +1

      Вряд ли у вас выйдет меня обидеть)

      «Обработка изображений» и «Анализ и проектирование систем»- чтобы хоть какие-то более ли менее близкие потоки были.

      Сказать хотел, что дешманское железо с AliExpressa работает. Причём можно сделать что-то более ли менее полезное с его помощью.


      1. begemot_nn
        17.05.2017 16:47

        Мне близка и понятна ваша тяга вот к таким экспериментам.
        у меня у самого ворох разных одноплатников.
        я лишь хотел сказать, что если просто сказать что работает — то можно было разместить фотку и написать «оно работает».
        если же писать статью для того, чтобы школьники копипастили — нужно как то побольше этой копипасты (подробностей).
        статья выглядит и ни как анонс и ни как мануал
        вот о чём я.


        1. gazpar
          17.05.2017 17:02
          -1

          Не анонс точно.

          Как мануал- вполне. Названия все даны, комманды даны- т.е. бери да проверяй, если интересно.

          Не спорю, подробностей можно напихать вал- только толку то от этого?


      1. begemot_nn
        17.05.2017 16:51

        а если просто реализовать, а не ладони чесать (в хорошем смысле), то вон на столе стоит камера sanncecam на моторизованном подвесе, с wifi, которая умеет ONVIF и много чего ещё и куплена на том же али за 1200р.


        1. gazpar
          17.05.2017 17:00

          Классная штука. Надо будет заказать.


  1. Koril
    17.05.2017 16:36

    Это только в локалке работает?


    1. gazpar
      17.05.2017 16:36

      Да, только в локалке. У меня к роутеру доступа нету, чтобы таблицы подправить.


  1. mizhgun
    17.05.2017 18:09
    +1

    > Хотел донести народу, что даже студент может себе позволить взять дешманскую железку и она будет работать.

    «Она» — стриминг с камеры онлайн — будет работать на китайской ардуино-камере и ESP8266, что еще «дешманнее» и будет, к тому же, действительно интересно, потому что нетривиально, потому что надо думать и стараться.

    Есть, конечно, некая доблесть в том, чтобы создать плату компьютера за 15$ с 4ядерным процессором, 256Мб памяти и всевозможными интерфейсами, сделав ее в разы мощнее тех компьютеров, которые и 15 лет назад спокойно стримили видео, но вот в том, чтобы прикрутить к ней веб-камеру и набрать кучу aptов с клавы познавательной ценности для аудитории Хабра — имхо — 0.


    1. gazpar
      18.05.2017 07:46
      +1

      Ну аудитория Хабра состоит не только из «зубров».

      Связать ардуино-камеру и ESP8266- вперёд, дерзайте! Я с радостью почитаю об этом. Особенно, мне интересно, как Вы собираетесь имплементировать поддержку форматов раздачи видео, сервера и связать камеру с SoC'ом. На каждую из этих задач по времени нужно вложить минимум по 10 полных рабочих дней среднего разработчика с широкой экспертизой. Вы можете себе позволить такое? Я- нет, уже не студент.

      Кстати, чтобы сделать это- тоже нужно думать. Удивительно, правда?)


  1. Kanumowa
    17.05.2017 23:36

    Как думаешь, реально ли из этого апельсина сделать аналог xaomi mini tv ( android 4.4.x, пульт, wifi ) ???


    1. gazpar
      18.05.2017 07:47

      Думаю- возможно. Только софт нужно будет оптимизировать, точнее видеоплеер. Желательно, даже собственный разработать.
      С пультом и WiFi особых проблем не должно быть.


  1. oneassasin
    18.05.2017 00:47

    Какую прошивку Вы установили? Armbian?


    1. gazpar
      18.05.2017 07:48

      Да, верно- Armbian.
      В прошлой(удалённой) публикации это было описано.


  1. Nizametdinov
    18.05.2017 12:32

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


    1. gazpar
      18.05.2017 13:30

      Кстати, оно выглядит просто и коротко, но чтобы до этого просто и коротко добраться я потратил где-то 2 дня на эксперименты и ещё около 1,5 часов, чтобы выжемку сделать для публикации. И это с учётом того, что небольшой опыт в этой области и сфере имею. Если бы этого опыта не было, то провозился бы дней 10, думаю.


  1. dbrr
    18.05.2017 16:22

    Если кому-то интересно, могу накидать мануал по сборке прошивки для orpi и пакетной базы на основе генту.