<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何移植視頻流服務器

xCb1_yikoulinux ? 來源:一口Linux ? 作者:土豆居士 ? 2022-07-26 12:56 ? 次閱讀

彭老師在錄制的《物聯網綜合項目實戰》課程中,在web頁面中加入了實時監控攝像頭的功能,特地整理了一篇如何移植視頻流服務器的文章,供大家學習。

953a35f6-0c95-11ed-ba43-dac502259ad0.png

一、嵌入式視頻圖像開源庫

嵌入式系統中,常用的視頻圖像處理開源系統有:luvcview、cheese、motion、mjpg-streamer或者ffmpeg,其中:

?luvcview: 基于V4L2、SDL的程序,支持拍照錄像,參數調節,代碼精簡實用,適合學習V4L2編程

?cheese:基于V4L2、GTK的程序,支持拍照錄像,特殊視頻效果

?motion:移動偵測拍照程序

?mjpg-streamer:網絡攝像機程序

二、mjpg-streamer簡介

MJPG-streamer是一個優秀的開源project,它可以通過HTTP的方式訪問linux上面的兼容攝像頭,從而做到遠程視頻傳輸的效果。

MJPG-streamer從webcam攝像頭采集圖像,把他們以流的形式通過基于ip的網絡傳輸到瀏覽器如Firehox,Cambozola,VLC播放器,Windows的移動設備或者其他擁有瀏覽器的移動設備。

它可以利用某些webcams的硬件壓縮功能來降低服務器CPU的開銷。

它為嵌入式設備和一些常規服務器提供了一個輕量且更少CPU消耗的方案,因為它無需為視頻幀壓縮浪費大量的計算效率。

三、測試攝像頭

9554a58a-0c95-11ed-ba43-dac502259ad0.png

1)按上圖的方式將羅技攝像頭連接入虛擬機

2)下載安裝cheese 檢測攝像頭是否能夠正常工作

$sudoapt-getupdate
$sudoapt-getinstallcheese

ubuntu 16.04已經自帶該程序

3)測試

攝像頭連接后會生成以下設備文件

root@ubuntu:/home/peng/work#ls/dev/video0-l
crw-rw----+1rootvideo81,0Mar2507:18/dev/video0

運行

root@ubuntu:/home/peng/work#cheese
9587d248-0c95-11ed-ba43-dac502259ad0.png

四、移植

安裝準備:

1. 安裝前準備

sudoapt-getinstalllibsdl1.2-devsubversion
sudoapt-getinstalllibjpeg62-dev
sudoapt-getinstallimagemagick

2. 下載mjpeg-streamer

gitclonehttps://github.com/shrkey/mjpg-streamer

如果沒有安裝git,執行以下命令

sudoapt-getinstallgit

3. 編譯安裝

cdmjpg-streamer/mjpg-streamer
95bb38fe-0c95-11ed-ba43-dac502259ad0.png
root@ubuntu:/home/peng/work/camera/mjpg-streamer#tree-L1./
./
├──doc
├──mjpeg-client#分別有linux和windows的客戶端
├──mjpg-streamer#目錄下提供了的執行程序和各個輸入輸出設備組件
├──mjpg-streamer-experimental
├──mjpg-streamer.tar.gz
├──README.md
├──udp_client
└──uvc-streamer#目錄下提供了uvc-streamer的可執行目錄

6directories,2files

ps:重新編譯前,需要執行

make
sudomakeinstall
root@ubuntu:/home/peng/work/camera/mjpg-streamer/mjpg-streamer#makeinstall
install--mode=755mjpg_streamer/usr/local/bin
install--mode=644input_uvc.sooutput_file.sooutput_udp.sooutput_http.soinput_testpicture.soinput_file.so/usr/local/lib/
install--mode=755-d/usr/local/www
install--mode=644-Dwww/*/usr/local/www

95dd6bd6-0c95-11ed-ba43-dac502259ad0.png

編譯生成的庫文件功能

(1)input_testpicture.so。這是一個圖像測試插件,它將預設好的圖像編譯成一個頭文件,可以在沒有攝像頭的情況下傳輸圖像,從而方便調試程序。

(2)input_uvc.so。此文件調用USB攝像頭驅動程序V4L2,從攝像頭讀取視頻數據。

(3)input_control.so。這個文件實現對攝像頭轉動的控制接口。

(4)output_http.so。這是一個功能齊全的網站服務器,它不僅可以從單一文件夾中處理文件,還可以執行一定的命令,它可以從輸入插件中處理一幅圖像,也可以將輸入插件的視頻文件根據現有M-JPEG標準以HTTP視頻數據服務流形式輸出。

(5)output_file.so。這個插件的功能是將輸入插件的JPEG圖像存儲到特定的文件夾下,它可以用來抓取圖像。

4 修改腳本

修改腳本文件

/home/peng/work/camera/mjpg-streamer/mjpg-streamer/start.sh
./mjpg_streamer-i"./input_uvc.so-y"-o"./output_http.so-w./www"-o"./output_file.so-f/www/pice-d15000"
9600b03c-0c95-11ed-ba43-dac502259ad0.png
"./input_uvc.so-y":指定攝像頭是YUV,默認是JPEG,一口君使用的羅技攝像頭是YUV
"./output_http.so-w./www":指定web服務器根目錄./www,我們可以通過瀏覽器測試攝像頭
"./output_file.so-f/www/pice-d15000":指定拍照保存照片目錄/www/pice,并且每15s保存一次照片

也可以指定分辨率:

./mjpg_streamer-i"input_uvc.so-d/dev/video0-n-y-r640x480-f30"-o"./output_http.so-w./www"-o"./output_file.so-f/www/pice-d15000"

市面上有的攝像頭支持格式有YUV,MJPEG,H264 ;mjpg-stream支持MJPEG和YUV兩種格式

5 測試

運行

./start.sh

(1)網頁測試

961174bc-0c95-11ed-ba43-dac502259ad0.png(2)網頁視頻流測試

96333ff2-0c95-11ed-ba43-dac502259ad0.png

(3) 拍照功能實現

瀏覽器上地址欄輸入如下內容:

http://127.0.0.1:8080/?action=snapshot

或者

http://127.0.0.1:8080/?action=stream

snapshot 表示每次抓拍一張圖形顯示在網頁上,stream 表示視頻流也就是連續的圖像

6. 補充

一口君還使用了一款z-star攝像頭,該款攝像頭不要添加-y選項9665eed4-0c95-11ed-ba43-dac502259ad0.png

./mjpg_streamer-i"./input_uvc.so-d/dev/video0"-o"./output_http.so-w./www"-o"./output_file.so-f/www/pice-d150000"

有時候攝像頭生成的設備文件不是/dev/video0

9692533e-0c95-11ed-ba43-dac502259ad0.png我們需要對應參數:

-d/dev/video1

五、代碼流程

96ad463a-0c95-11ed-ba43-dac502259ad0.png

六、支持單拍、連拍

由于 mjpg_stream 中 output-file.so 能實現連續拍照的功能,不能實現單拍或 連拍幾張的功能所以需要對 output_file 原碼進行修改。修改文件目錄:

peng@ubuntu:~/work/camera/mjpg-streamer/mjpg-streamer/plugins/output_file/output_file.c
  1. 在 196 行 函數 voidworker_thread(voidarg) 體中加入以下代碼:
charbuf[10];//用于存放從管道讀取的命令
intflags=0;//拍照標志,1:表示11張照片,2:表示1張照片
intfd_com=0;//打開管道的文件描述符

intstop_num=0;//拍照計數

if(access("/tmp/webcom",F_OK)0)//創建有名管道用于接收拍照命令
{
if(mkfifo("/tmp/webcom",0666)0)
{
printf("photofifocreatefailed
");
}
}

fd_com=open("/tmp/webcom",O_RDONLY,0666);
if(fd_com0)
{
perror("openthefilewebcomerror");
}
  1. 在229行 while( ok >= 0 && !pglobal->stop){ 后加入
if(flags==0)
{
while(1)
{
read(fd_com,buf,sizeof(buf));
if(strncmp(buf,"danger",6)==0)//拍11張照片
{
flags=1;
bzero(buf,sizeof(buf));
break;
}

if(strncmp(buf,"one",3)==0)//拍1張照片
{
flags=2;
bzero(buf,sizeof(buf));
break;
}
}
}
  1. 在355行
355/*ifspecified,waitnow*/
356if(delay>0){
357usleep(1000*delay);
358}

后加入

stop_num++;
if(flags==1)//判斷拍照的數量
{
if(stop_num>9)
{
stop_num=0;
flags=0;
}
}
elseif(flags==2)
{
stop_num=0;
flags=0;
}

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    4993

    文章

    18368

    瀏覽量

    290146
  • 服務器
    +關注

    關注

    12

    文章

    8192

    瀏覽量

    82746
  • 移植
    +關注

    關注

    1

    文章

    367

    瀏覽量

    27874

原文標題:手把手教你ubuntu下移植MJPG-streamer

文章出處:【微信號:yikoulinux,微信公眾號:一口Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于H264的嵌入式視頻服務器的設計

    基于H264的嵌入式視頻服務器的設計摘要! 本文介紹了基于的嵌入式視頻服務器的設計重點闡述了嵌入式操作系統" 視頻
    發表于 06-25 10:50

    網絡視頻服務器的概念及其構成

    服務器在普通網絡環境中應用成為可能。3.H264  聯合視頻工作組(JVT,Joint Video Team)在H26L的基礎上提出了H.264編碼技術,它通過增加運算的復雜性降低了碼的同時提高
    發表于 08-22 14:34

    網絡視頻服務器的概況及其特點

    在監控領域人們對網絡視頻服務器的使用越來越有信心,隨著技術的發展其他各種要素的不斷完善,網絡視頻服務器的使用會逐漸普及的在安防行業也必大受歡迎網絡
    發表于 07-30 14:04

    樹莓派做一個網絡攝像頭上傳實時視頻到云服務器,云服務器推流到客戶端可以實現嗎

    訪問云服務器,或者是云服務器,總之客戶端可以隨時隨地通過終端設備簡單的查看實時視頻,請教一下做過這個項目的大佬,有沒有可以實現的方案?
    發表于 08-16 01:23

    福州大帶寬高防視頻服務器租用

    現在的網絡視頻的質量越來越高480P、720P、1024P、1080P的視頻,現在最基本的480P普清視頻大小也要500M以上,更何況高清,超清,藍光視頻的大小。這也意味對
    發表于 12-27 10:01

    基于最新DaVinci平臺的視頻監控服務器的設計與實現

    本設計以TI公司DaVinci系列芯片作為硬件平臺,結合嵌入式Linux操作系統,實現了基于TMS320DM355的視頻服務器。本文闡述了各硬件模塊的選型與功能,以及服務器的軟件架構與實現。同時給出
    發表于 07-19 06:19

    什么是流媒體服務器?

      服務器有很多種類,比如我們常見的有游戲服務器,游戲服務器可以為游戲開發商提供平臺,開發游戲并運營,也有有視頻服務器,網站
    發表于 06-30 09:28

    如何移植web服務器

    作為一個電子專業的碼龍,在嵌入式設備上實現web數據展示和控制,確實曾對自己提出了一個不大不小的挑戰。雖然web已存在這么多年,但是在嵌入式設備上實現,并清楚講明如何移植web服務器,如何設計前端
    發表于 11-08 06:41

    什么是Boa服務器

    嵌入式web服務器Boa的移植什么是Boa服務器BOA 服務器是一個小巧高效的web服務器,是一個運行于unix或linux下的,支持CGI
    發表于 12-14 07:21

    OK6410的Boa服務器移植

    這里寫自定義目錄標題OK6410的Boa服務器移植: Boa的編譯從 下載 Boa 服務器的最新版:boa-0.94.13.tar.gz。解壓:tar x*** boa-0.94.13.tar.gz
    發表于 12-14 07:08

    rk3288視頻服務器MJPG_Streamer移植簡析

    1、firefly-rk3288視頻服務器MJPG_Streamer移植MJPG_Streamer 是一個開源的輕量級的視頻傳輸服務器應用項
    發表于 04-08 16:33

    ARM服務器準備如何解決服務端渲染的問題

    針對云手機、視頻云游戲行業,ARM服務器準備如何解決服務端渲染的問題?目前的狀況了解,PCIE顯卡對安卓游戲的支持還不夠成熟
    發表于 09-13 14:58

    移植ARM DHCP服務器版本1程序員指南

    這本書由ARM DHCP服務器服務器軟件提供, 假定ARM DHCP服務器移植源可以作為參考, 也假設您可以訪問程序員的 C 和 ARM 組裝語言指南。 本程序員指南是為有經驗的內嵌系
    發表于 08-18 06:46

    基于視頻服務器視頻監控系統的設計

          介紹了一種基于視頻服務器視頻監控系統的設計,著重介紹了視頻服務器、系統的總體
    發表于 09-03 10:10 ?18次下載

    Boa服務器移植說明分析

    Boa服務器移植,內含說明文檔,原理分析和源碼
    發表于 01-18 14:13 ?0次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>