Difference between revisions of "Template:FriendlyCoreAllwinner-DVPCam/zh"
(updated by API) |
(updated by API) |
||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | CAM500B是一款500万像素摄像头模块,以DVP并行信号输出,详细信息请参考[[Matrix - CAM500B/zh|Matirx-CAM500B]] | + | {{#switch: {{{1}}} |
− | + | | NanoPi-M1|NanoPi-M1-Plus|NanoPi-NEO-Air = | |
− | + | 对于{{{1}}},CAM500B可配合Linux-3.4内核和Linux-4.14内核使用。<br> | |
+ | CAM500B是一款500万像素摄像头模块,以DVP并行信号输出,详细信息请参考[[Matrix - CAM500B/zh|Matirx-CAM500B]]的介绍章节。<br> | ||
+ | | NanoPi-K1-Plus = | ||
+ | 对于{{{1}}},CAM500B只可配合Linux-4.14内核使用。<br> | ||
+ | CAM500B是一款500万像素摄像头模块,以DVP并行信号输出,详细信息请参考[[Matrix - CAM500B/zh|Matirx-CAM500B]]的介绍章节。<br> | ||
+ | | NanoPi-Duo2 = | ||
+ | 对于{{{1}}},OV5640只可配合Linux-4.14内核使用。<br> | ||
+ | NanoPi-Duo2已经集成了摄像头模块的电路,直接把OV5640摄像头接在Duo2上即可,请按下图连接Duo2和摄像头:<br> | ||
+ | [[File:duo2-ov5640.png|frameless|500px|duo2-ov5640]] <br> | ||
+ | }} | ||
+ | |||
+ | 连接开发板和摄像头,然后上电启动系统,连接网络,以root用户登录终端并编译运行mjpg-streamer: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | $ cd /root/mjpg-streamer | + | $ cd /root/C/mjpg-streamer |
$ make | $ make | ||
$ ./start.sh | $ ./start.sh | ||
Line 15: | Line 26: | ||
Card type : sun6i-csi | Card type : sun6i-csi | ||
Bus info : platform:camera | Bus info : platform:camera | ||
− | Driver version: 4. | + | Driver version: 4.14.0 |
... | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 上述信息表示/dev/ | + | 上述信息表示/dev/video0是摄像头的设备节点。mjpg-streamer是一个开源的网络视频流服务器,在板子上成功运行mjpg-streamer后会打印下列信息: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ ./start.sh | $ ./start.sh | ||
Line 31: | Line 42: | ||
o: commands..........: enabled | o: commands..........: enabled | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | start.sh脚本里执行了下列2个命令: | |
− | + | <syntaxhighlight lang="bash"> | |
+ | export LD_LIBRARY_PATH="$(pwd)" | ||
+ | ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0" -o "./output_http.so -w ./www" | ||
+ | </syntaxhighlight> | ||
+ | mjpg_streamer相关参数的含义如下:<br> | ||
+ | -i: 选择输入插件,input_uvc.so表示从摄像头采集数据;<br> | ||
+ | -o: 选择输出插件,output_http.so表示使用http协议传输数据;<br> | ||
+ | -d: 输入插件的子参数,指定摄像头设备节点;<br> | ||
+ | -y: 输入插件的子参数,指定摄像头采集数据的格式,1:yuyv, 2:yvyu, 3:uyvy 4:vyuy,如果不使用-y参数,则表示采集MJPEG格式;<br> | ||
+ | -r: 输入插件的子参数,指定摄像头采集分辨率;<br> | ||
+ | -f: 输入插件的子参数,指定想使用的摄像头采集fps,具体是否支持依赖于驱动;<br> | ||
+ | -q: 输入插件的子参数,指定libjpeg软编码的图像质量;<br> | ||
+ | -n: 输入插件的子参数, 禁止dynctrls功能;<br> | ||
+ | -fb: 输入插件的子参数, 指定是否在/dev/fbX上显示采集的图像;<br> | ||
+ | -w: 输出插件的子参数, 指定包含网页的目录;<br><br> | ||
+ | 成功运行start.sh脚本后,假设开发板的IP地址为192.168.1.230,在PC的浏览器中输入 192.168.1.230:8080 就能浏览摄像头采集的画面了,效果如下:<br> | ||
[[File:mjpg-streamer-cam500a.png|frameless|400px|mjpg-streamer-cam500a]] <br> | [[File:mjpg-streamer-cam500a.png|frameless|400px|mjpg-streamer-cam500a]] <br> | ||
− | mjpg- | + | mjpg-streamer是用libjpeg对摄像头数据进行软编码,Linux-4.14内核的ROM目前并不支持视频硬编码, 但是如果使用H3板子 + Linux-3.4内核的ROM的话, 可以使用ffmpeg对摄像头数据进行硬编码,这样能大大降低CPU的占用率并提高编码速度: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ ffmpeg -t 30 -f v4l2 -channel 0 -video_size 1280x720 -i /dev/video0 -pix_fmt nv12 -r 30 -b:v 64k -c:v cedrus264 test.mp4 | $ ffmpeg -t 30 -f v4l2 -channel 0 -video_size 1280x720 -i /dev/video0 -pix_fmt nv12 -r 30 -b:v 64k -c:v cedrus264 test.mp4 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
默认会录制30秒的视频,输入q能终止录制。录制完成后会在当前目录生成一个名为test.mp4的视频文件,可将其拷贝到PC上进行播放验证。 | 默认会录制30秒的视频,输入q能终止录制。录制完成后会在当前目录生成一个名为test.mp4的视频文件,可将其拷贝到PC上进行播放验证。 |
Latest revision as of 05:27, 14 January 2019
连接开发板和摄像头,然后上电启动系统,连接网络,以root用户登录终端并编译运行mjpg-streamer:
$ cd /root/C/mjpg-streamer $ make $ ./start.sh
请自行修改start.sh, 确保使用正确的/dev/videoX节点, 下列命令可以用来确定摄像头的video节点:
$ apt-get install v4l-utils $ v4l2-ctl -d /dev/video0 -D Driver Info (not using libv4l2): Driver name : sun6i-video Card type : sun6i-csi Bus info : platform:camera Driver version: 4.14.0 ...
上述信息表示/dev/video0是摄像头的设备节点。mjpg-streamer是一个开源的网络视频流服务器,在板子上成功运行mjpg-streamer后会打印下列信息:
$ ./start.sh i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 1280 x 720 i: Frames Per Second.: 30 i: Format............: YUV i: JPEG Quality......: 90 o: www-folder-path...: ./www/ o: HTTP TCP port.....: 8080 o: username:password.: disabled o: commands..........: enabled
start.sh脚本里执行了下列2个命令:
export LD_LIBRARY_PATH="$(pwd)" ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0" -o "./output_http.so -w ./www"
mjpg_streamer相关参数的含义如下:
-i: 选择输入插件,input_uvc.so表示从摄像头采集数据;
-o: 选择输出插件,output_http.so表示使用http协议传输数据;
-d: 输入插件的子参数,指定摄像头设备节点;
-y: 输入插件的子参数,指定摄像头采集数据的格式,1:yuyv, 2:yvyu, 3:uyvy 4:vyuy,如果不使用-y参数,则表示采集MJPEG格式;
-r: 输入插件的子参数,指定摄像头采集分辨率;
-f: 输入插件的子参数,指定想使用的摄像头采集fps,具体是否支持依赖于驱动;
-q: 输入插件的子参数,指定libjpeg软编码的图像质量;
-n: 输入插件的子参数, 禁止dynctrls功能;
-fb: 输入插件的子参数, 指定是否在/dev/fbX上显示采集的图像;
-w: 输出插件的子参数, 指定包含网页的目录;
成功运行start.sh脚本后,假设开发板的IP地址为192.168.1.230,在PC的浏览器中输入 192.168.1.230:8080 就能浏览摄像头采集的画面了,效果如下:
mjpg-streamer是用libjpeg对摄像头数据进行软编码,Linux-4.14内核的ROM目前并不支持视频硬编码, 但是如果使用H3板子 + Linux-3.4内核的ROM的话, 可以使用ffmpeg对摄像头数据进行硬编码,这样能大大降低CPU的占用率并提高编码速度:
$ ffmpeg -t 30 -f v4l2 -channel 0 -video_size 1280x720 -i /dev/video0 -pix_fmt nv12 -r 30 -b:v 64k -c:v cedrus264 test.mp4
默认会录制30秒的视频,输入q能终止录制。录制完成后会在当前目录生成一个名为test.mp4的视频文件,可将其拷贝到PC上进行播放验证。