亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > mjpg-streamer網(wǎng)絡(luò)視頻服務(wù)器移植

mjpg-streamer網(wǎng)絡(luò)視頻服務(wù)器移植 時間:2017-11-14      來源:未知

MJPG簡介:

MJPG是MJPEG的縮寫,但是MJPEG還可以表示文件格式擴展名.全名為 "Motion Joint Photographic Experts Group",是一種視頻編碼格式,Motion JPEG技術(shù)常用與閉合電路的電視攝像機的模擬視頻信號“翻譯”成視頻流,并存儲在硬盤上。

典型的應(yīng)用如數(shù)字視頻記錄器等。MJPEG不像MPEG,不使用幀間編碼,因此用一個非線性編輯器就很容易編輯。

MJPEG的壓縮算法與MPEG一脈相承,功能很強大,能發(fā)送高質(zhì)圖片,生成完全動畫視頻等。

但相應(yīng)地,MJPEG對帶寬的要求也很高,相當(dāng)于T-1,MJPEG信息是存儲在數(shù)字媒體中的龐然大物,需要大量的存儲空間以滿足如今多數(shù)用戶的需求。

因此從另一個角度說,在某些條件下,MJPEG也許是效率低的編碼/解碼器之一。

MJPEG 是 24-bit 的 "true-color" 影像標準,MJPEG 的工作是將 RGB 格式的影像轉(zhuǎn)換成 YCrCB 格式,目的是為了減少檔案大小,一般約可減少 1/3 ~ 1/2 左右。

MJPEG與MJPG的區(qū)別:

1、mjpeg是視頻,就是由系列jpg圖片組成的視頻。

2、MJPG是MJPEG的縮寫,但是MJPEG還可以表示文件格式擴展名.

一、環(huán)境

主機環(huán)境:ubuntu 12.04.4 LTS

        目標機:Cortex-A9

        主機工具鏈:gcc-4.6.4

        交叉工具鏈:arm-none-linux-gnueabi-

        攝像頭:ZC301

 

二、移植過程

1、配置內(nèi)核是內(nèi)核支持芯片為ZC301的攝像頭

        Make menuconfig

                Device Drivers ---> 

                        <*> Multimedia support --->

                                <*> Video For linux 

                                [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)

                                [*] Video capture adapters (NEW) --->

                                        [*] V4L USB devices (NEW) ---> 

                                                <*> USB Video Class (UVC) 

                                                [*] UVC input events device support (NEW)

                                        <*> USB ZC0301[P] webcam support (DEPRECATED)

2、重新編譯內(nèi)核

make uImage

通過上面兩個步驟就可以驅(qū)動我們的攝像頭了。但是這個驅(qū)動是基于V4l2的。以前基于V4L的一些上層應(yīng)用就不能用了,或需要做大量的修改!

這里我們要實現(xiàn)網(wǎng)絡(luò)視頻的功能,以前都是用servfox這個網(wǎng)絡(luò)視頻服務(wù)器,但是這個服務(wù)器就是基于V4L的,

我們?nèi)绻胗玫脑捑偷脤ervfox的源碼進行修改。這里我們選用另外一種方案mjpg-streamer。

 

 

(2)mjpg-stream的移植

        1)mjpg-stream源碼包通過下面這個網(wǎng)址下載

https://sourceforge.net/projects/mjpg-streamer/ 打開稍等一下,在Browse All Files上會出現(xiàn)源碼的下載

2)解壓源碼

tar xvf mjpg-streamer-r63.tar.gz

3)修改源碼

cd mjpg-streamer-r63

修改頂層makefile及plugins目錄中的各級makefile將所有

修改

CC = gcc

CC = arm-cortex_a8-linux-gnueabi

4)*/修改plugins/input_uvc/Makfile

   在第 16 行添加編譯時需要的 jpeg 頭文件的路徑

CFLAGS += -I /home/david/Exynos4412/test/mjpg-streamer/jpeg /include

在第 24 行添加編譯時需要的 jpeg 庫的路徑

修改

$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

$(CC) $(CFLAGS) -ljpeg -L /home/david/Exynos4412/test/mjpg-streamer/jpeg /lib -o $@

input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

5)修改 plugins/input_uvc/v4l2uvc.c

這個目錄是支持 uvc 攝像頭的,而我們的 FS4412 的攝像頭使用的 samsung 的 FIMC

架構(gòu),所有在應(yīng)用程序編程時有點細微差別,這里需要針對這些差別做一些改動:

修改 static int init_v4l2(struct vdIn *vd)函數(shù)

/*

* set format int

*/

前添加如下代碼

int input = 0;

ret = ioctl(vd->fd, VIDIOC_S_INPUT, &input);

if (ret < 0) {

perror(“Unable to set input”);

goto fatal;

}

/ *

* set framerate

*/

前添加

vd->fmt.type = 0x80;

ret = ioctl(vd->fd, VIDIOC_S_FMT, &vd->fmt);

if (ret < 0) {

perror(“Unable to set format”);

goto fatal;

}

注釋如下代碼

/*

* set framerate

*/

struct v4l2_streamparm *setfps;

setfps = (struct v4l2_streamparm *) calloc(1, sizeof(struct v4l2_streamparm));

memset(setfps, 0, sizeof(struct v4l2_streamparm));

setfps->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

setfps->parm.capture.timeperframe.numerator = 1;

setfps->parm.capture.timeperframe.denominator = vd->fps;

ret = ioctl(vd->fd, VIDIOC_S_PARM, setfps);

修改

vd->buf.length, PROT_READ, MAP_SHARED, vd->fd,

vd->buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, vd->fd,

修改 int uvcGrab(struct vdIn *vd)函數(shù)

修改

ret = ioctl(vd->fd, VODIOC_DQBUF, &vd->buf);

if (ret < 0) {

perror(“Unable to dequeue buffer”);

goto err;

}

retry:

ret = ioctl(vd->fd, VODIOC_DQBUF, &vd->buf);

if (ret < 0) {

usleep(10000);

goto retry;

}

修改

memcpy(vd->framebuffer, vd->mem[vd->buf.index], (size_t) vd->bytesused);

memcpy(vd->framebuffer, vd->mem[vd->buf.index], (size_t) vd->framesizeIn);

修改 static int video_enable(struct vdIn *vd)函數(shù)

vd->isstreaming = 1;

前添加

sleep(1);

c) 編譯 mjpg-streamer

make clean

make

6)錯誤

       plugins/input_uvc all

       make[1]: Entering directory `/home/swchen/code/tools/mjpeg/mjpg-streamer/plugins/input_uvc'

       arm-linux-gcc -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /home/swchen/code/tools/libjpeg/jpeg-install/include -o input_uvc.so input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo -ljpeg -L /home/swchen/code/tools/libjpeg/jpeg-install/lib

 /home/swchen/enviroment/4.1.2/bin/../lib/gcc/arm-angstrom-linux-gnueabi/4.1.2/../../../../arm-angstrom-linux-gnueabi/bin/ld: v4l2uvc.lo: Relocations in generic ELF (EM: 3)

 /home/swchen/enviroment/4.1.2/bin/../lib/gcc/arm-angstrom-linux-gnueabi/4.1.2/../../../../arm-angstrom-linux-gnueabi/bin/ld: v4l2uvc.lo: Relocations in generic ELF (EM: 3)

 v4l2uvc.lo: could not read symbols: File in wrong format

 collect2: ld returned 1 exit status

     make[1]: *** [input_uvc.so] Error 1

     make[1]: Leaving directory `/home/swchen/code/tools/mjpeg/mjpg-streamer/plugins/input_uvc'

     make: *** [input_uvc.so] Error 2

說的是錯誤的格式。 但是自己很確定自己在編譯libjpeg的使用時交叉編譯的,這么說的話libjpeg就不會有問題的。

是在mjpg-streamer這邊出了問題,由于問題一的緣故,自己使用了make 和 make CC=arm-linux-gcc 重復(fù)了很多次。

所以有部分的生成的文件 是x86下的。 所以才導(dǎo)致了這個問題。

這個只要清空一下就好,make clean -w ,再重新編譯,這個問題跳過了。

上一篇:signal函數(shù)

下一篇:qt化步驟

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 99国产精品热久久久久久 | 黄色三级网站免费 | 日本免费视屏 | 韩日性视频 | 免费av片在线观看网站 | 亚洲国产精品久久婷婷 | 日本国产亚洲 | 欧美1区二区三区公司 | 秋霞在线欧美成人影院 | 99久久99久久久精品久久 | 欧美视频二区 | 香蕉人人超 | 国产欧美综合一区二区 | 欧美日本高清视频在线观看 | 国产第2页 | 特黄特色大片免费视频大全 | 日本最新免费不卡二区在线 | 国产jjzz| 一个色中文字幕 | 日日摸夜夜摸人人嗷嗷叫 | www.youjizz.com日本| 亚洲成av人片天堂网 | 欧美成人精品动漫在线专区 | 免费毛片a | 99视频免费在线 | 狠狠色噜噜狠狠狠狠888奇米 | 国产一卡2卡3卡4卡网站免费 | 久久综合九色综合97飘花 | 香港特级黄色片 | 亚洲午夜在线视频 | 国语刺激对白勾搭视频在线观看 | 一本一道波多野结衣一区二区 | 精品一区二区三区在线观看视频 | 国产免费观看网站黄页 | 日韩性视频网站 | 两性高清性色生活片性高清←片 | 亚洲黄在线观看 | 中文字幕在线免费看 | 免费在线色视频 | 国产无遮挡又黄又爽动态图 | 亚洲人成亚洲人成在线观看 |