ПРОЕКТИ:

Безкоштовні точки доступу Wi-Fi в Україні

- Пошук людей через Інтернет

Тестуємо Wi-Fi доступ до Інтернету: моніторинг, безпека…__SEO - пошукова оптимізація – ключ до успіху

Безкоштовні телефонні дзвінки через Інтернет__Соціальні мережі, як спосіб знайти однодумців

Безпека при роботі в Інтернеті__Про Київ в Інтернеті

Arduino _

Raspberry Pi  Unix, Linux. Ubuntu, Fedora...- це не так вже й страшно

Знайти драйвер в Інтернеті  Пошук технічної документації

Сценарії для Інтернету   Пошук патентів в Інтернеті

Невидимий Інтернет    Пірингові мережі: видимі і невидимі

Посилання:

Сайт про все: isearch.in.ua

Персональний сайт Пальшина Єгора

Сайт мого учня

Ділова розвідка в Інтернеті

Переглядаємо відеопотік з камери Raspberry Pi через веб-браузер
Рейтинг статті: / 5
НайгіршеНайкраще 
Stream Raspberry PiРозглянемо, як перетворити Raspberry Pi в сервер вебкамери. Ви зможете переглядати відеопотік з камери на будь-якому пристрої, що має веб-браузер. Ним також може бути iPad/iPhone і Android.
Офіційний спосіб формування потоку
В попередній статті про модуль камери показаний метод передавання потокового відео від Raspberry Pi на інший комп'ютер. Цей метод працює таким чином:
  • На Pi використовується утиліта raspivid для кодування відео з камери у форматі H.264.
  • Відеопотік передається по конвеєру утиліті nc, яка «проштовхує» його на вказану мережеву адресу, де є відеоплеєр.
  • На комп'ютері з програвачем nc приймає потік і направляє його в mplayer для програвання.
Це ефективний метод потокового відео від Pi до іншого комп'ютера, але він має кілька проблем:
  • Raspberry Pi необхідно знати адресу комп'ютера, на якому програється відео.
  • Комп'ютер, на якому програється відею, повинен мати встановленим сучасний плеєр, який може програвати «сирий» відеопотік H.264. Немає такого мобільного пристрою, який може це робити.
  • Оскільки ця система спирається на прямий зв'язок між Pi і програвачем, то не можна комп'ютер з програвачем  підключити і/або відключитися від потоку - з'єднання повинно бути весь час.
  • Що робити, якщо є два або три конкурентні програвачі? Все стає жахливо складним для Pi.
Тому варто пошукати інші рішення, щоб отримати можливість переглядати відеопотік, наприклад, у своєму браузері.
Потокові протоколи
Думаю, що важливою вимогою для потокової камери є можливість простого її перегляду. Часто це означає, що потік повинен бути відтвореним у веб-браузері. Запуск користувальницького програвача є ускладненням, бо робить його недоступним для більшості мобільних пристроїв.
Є кілька сучасних потокових протоколів для веб-браузерів. Наприклад, HLS є вибором компанії Apple, тому він має широку підтримку на мобільним iПристроях, але не на інших. Інший, що називається Fragmented MP4, підтримується Adobe і Microsoft, але вимагає плагіни до браузера від цих компаній для програвання на комп'ютері, тому комп'ютери з ОС Windows і Mac можуть це зробити, а Linux і мобільні пристрої - ні. HTML5-відео також засноване на форматі MP4, але не така вже й широка підтримка.
Крім того, для всіх перерахованих вище потокових протоколів існує необхідність мати потоковий сервер, який готує відео для потокової передачі, сегментуючи його і упаковуючи, і , хоча є кілька утиліт з відкритим вихідним кодом, який може зробити це для статичного відеопотоку, автор не знайшов жодного, який може зробити це для живого потоку, за винятком свіжих релізів ffmpeg, доступних для Raspbian, які можуть генерувати живий потік HLS.
Які є інші варіанти?
Motion JPEG на допомогу
Досліджуючи, як роблять це IP веб-камери, можна побачити, що багато з них використовують старий потоковий протокол під назвою Motion JPEG або скорочено MJPEG.
Що таке Motion JPEG? Досить легко - це просто потік окремих JPEG фотографій, одна за одною. Автор був здивований, виявивши, що більшість сучасних браузерів можуть програвати MJPEG потоки.
Зворотною стороною MJPEG потоків є те, що вони не такі ефективні, як H.264, який значно підвищує якість і зменшує розмір шляхом кодування тільки відмінності одного кадру від іншого. З MJPEG кожен кадр кодується для всього зображення JPEG. Інколи це не має значення.
Продовжуючи дослідження, автор знайшов MJPG-стример, невеликий MJPEG потоковий сервер з відкритим вихідним кодом, написаний на С, який легко можна зібрати для Raspberry Pi.
Наступні розділи описують, як використати цей інструмент для створення дуже гнучкого, для запуску в будь-якому місці, потокового сервера для камери Raspberry Pi.
1. Встановіть збірки залежностей
Наступна команда встановлює три бібліотеки, які використовує MJPG-Streamer:
$ sudo apt-get install libjpeg8-dev imagemagick libv4l-dev
2. Додайте відсутній videodev.h
Файл заголовка videodev.h, що потрібний MJPG-Streamer, був замінений з videodev2.h. Щоб MJPG-Streamer був «щасливий», Ви повинні створити символічне посилання:
$ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
3. Завантажте MJPG-Streamer
Вихідний код для MJPG-Streamer доступний на sourceforge.net, але складно знайти пряме посилання для завантаження:
$ wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
4. Розпакуйте вихідний код MJPG-Streamer
Вихідний код завантаження являє собою стислий ZIP-файл. Помістіть файл у Вашу домашню директорію (або тимчасову папку, якщо віддаєте перевагу їй) і виконайте наступне витягання файлів:
$ unzip mjpg-streamer-code-182.zip
5. Побудуйте MJPG-Streamer
MJPG-Streamer поставляється з декількома плагінами, але тільки кілька з них необхідні для потокового відео. Наведена нижче команда створює тільки те, що нам необхідно:
$ cd mjpg-streamer-code-182/mjpg-streamer
$ make mjpg_streamer input_file.so output_http.so
6. Встановіть MJPG-Streamer
Наступні команди скопіюють всі необхідні файли в системні директорії:
$ sudo cp mjpg_streamer /usr/local/bin
$ sudo cp output_http.so input_file.so /usr/local/lib/
$ sudo cp -R www /usr/local/www
7. Включіть камеру
Ми майже у мети. Тепер настав час, щоб запустити модуль камери:
$ mkdir /tmp/stream
$ raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &
Звичайно, Ви можете використовувати інші опції raspistill, якщо хочете.
8. Запустіть MJPG–Streamer
Тепер камера записує зображення, тому все, що залишилося, запустити MJPG-Streamer:
LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"
Давайте нижче розберемо цю команду, щоб зрозуміти її:
  • LD_LIBRARY_PATH задає шлях до динамічних бібліотек у поточній директорії. Це пов'язано з тим, що додаток може знайти плагіни, які знаходяться в тій же директорії.
  • -i встановлює вхідний плагін. Плагін, який ми використовуємо, називається input_file.so. Цей плагін переглядає директорію і в будь-який час виявляє записаний в неї файл JPEG, щоб передати цей файл в потік. Папка для перегляду задається як аргумент -f.
  • -o встановлює вихідний плагін. Ми використовуємо потоковий плагін HTTP, який запускає веб-сервер, до якого можемо підключитися, щоб подивитися відео. Кореневий каталог веб-сервера задається як аргумент -w. Ми будемо використовувати веб-сторінки за замовчуванням, які приходять відразу з додатком, але вони можуть бути змінені і налаштовані по мірі необхідності.
9. Дивіться Stream!
Тепер можете підключитися за допомогою веб-браузера і дивитися потокове відео. Якщо хочете дивитися з того ж Raspberry Pi, можна ввести в адресному рядку браузера http://localhost:8080. Якщо хочете дивитися з іншого комп'ютера у Вашій мережі - використайте http://<IP-адреса Raspberry Pi>:9000.
MPEG Pi
10. Прибирання
Після того, як переконаєтеся, що все працює, можна видалити вихідний код:
$ cd ../../
$ rm -rf mjpg-streamer-182
Оновлення з плагіном raspicam
Автор натрапив на варіант MJPG Streamer на github, який поставляється з вхідним плагіном raspicam. Використовуючи цю версію MJPG-Streamer, можемо пропустити raspistill і нехай плагін raspicam піклується про створення зображення. Ось як його встановити.
# Установка dev-версії libjpeg:
sudo apt-get install libjpeg62-dev
# Установка cmake:
sudo apt-get install cmake
# Завантаження mjpg-streamer з плагіном raspicam:
git clone https://github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer
# Зміна директорії:
cd ~/mjpg-streamer/mjpg-streamer-experimental
# Компіляція
make clean all
# Заміна старого MJPG-стримера:
sudo rm -rf /opt/mjpg-streamer
sudo mv ~/mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer
sudo rm -rf ~/mjpg-streamer
# Початок потоку:
LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" &
Старт/стоп скрипти оболонки (gist).
Автор вважає, що це рішення працює набагато більш гладко, ніж попереднє. Є коротке відео, що показує його в дії.
Висновок
Можливості того, що Ви можете зробити з Raspberry Pi, нескінченні. Автор сподівається, що ця стаття допомогла Вам почати роботу з простим потоковим відео на Raspberry Pi, використовуючи дивовижний модуль камери. В наступних статях розглянуто, як переглядати потокове відео з Pi у веб-браузері за допомогою програвача VLC і використовуючи ffmpeg.
(За матеріалами EN: blog.miguelgrinberg.com)
 
>
КнигаНовиниПрактика пошукуПартнериПро нас
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting