Difference between revisions of "Template:Linux-RK3399MIPICamera/zh"

From FriendlyARM WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
Line 1: Line 1:
===Linux下使用MIPI摄像头OV13850===
+
===Linux下使用MIPI接口摄像头OV13850与宽动态摄像头OV4689===
 
摄像头连接方法:
 
摄像头连接方法:
由于Linux系统的内核目前仅配置了 '''MIPI-CSI1''',所以摄像头只能连接在 MIPI-CSI1 接口,如下图所示:<br />
+
摄像头可以连接在MIPI接口,如下图所示:<br />
 
{{#switch: {{{1}}}
 
{{#switch: {{{1}}}
 
  | NanoPC-T4 =
 
  | NanoPC-T4 =
Line 17: Line 17:
 
-->
 
-->
  
为了方便测试摄像头,我们提供了一个脚本gst-camera.sh可以在命令行测试摄像头的拍照和录像功能,这个脚本可以用以下命令下载安装:
+
为了方便测试摄像头,我们提供了一个脚本gst-camera.sh可以在命令行测试摄像头的拍照和录像功能。
<syntaxhighlight lang="bash">
+
sudo wget http://112.124.9.243:8888/rk3399/gst-camera.sh -O `which gst-camera.sh`
+
</syntaxhighlight>
+
 
====gst-camera.sh 参数说明====
 
====gst-camera.sh 参数说明====
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 35: Line 32:
 
|-
 
|-
 
|  --verbose或-v || 指定为yes时,会输出调用gst-launch-1.0命令的完整命令行
 
|  --verbose或-v || 指定为yes时,会输出调用gst-launch-1.0命令的完整命令行
 +
|-
 +
|  -x || 使用rkximagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
 +
|-
 +
|  -k || 使用kmssink插件,预览图像会直接输出到屏幕,适用于FriendlyCore系统
 
|}
 
|}
 +
 +
脚本gst-camera.sh会自动识别OV13850与OV4689,并传递合适的参数给gst-launch-1.0。
  
 
====gst-camera.sh 使用方法====
 
====gst-camera.sh 使用方法====
Line 60: Line 63:
 
你会得到以下完整的 gsteamer 命令,这对你开发会有帮助:
 
你会得到以下完整的 gsteamer 命令,这对你开发会有帮助:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
gst-launch-1.0 rkisp num-buffers=512 io-mode=4 path-iqf=/etc/cam_iq/ov13850.xml \
+
gst-launch-1.0 rkisp num-buffers=512 io-mode=4 path-iqf=/etc/cam_iq/${XMLFILE} \
 
     ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
 
     ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
 
     ! tee name=t t. ! queue ! kmssink t. ! queue ! mpph264enc \
 
     ! tee name=t t. ! queue ! kmssink t. ! queue ! mpph264enc \
 
     ! queue ! h264parse ! mpegtsmux ! filesink location=1.ts
 
     ! queue ! h264parse ! mpegtsmux ! filesink location=1.ts
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
其中的 ${XMLFILE} 变量可能是rk-ov13850.xml或者rk-ov4689.xml,视你所连接的摄像头型号而定。
 +
 +
 +
====gst-launch-1.0命令行解析====
 +
在FriendlyDesktop下预览摄像头 ov13850 的命令如下:
 +
<syntaxhighlight lang="bash">
 +
gst-launch-1.0 rkisp device=/dev/video0 sensor-id=1 io-mode=4 path-iqf=/etc/cam_iq/rk-rk-ov13850.xml ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink
 +
</syntaxhighlight>
 +
在FriendlyDesktop下预览摄像头 ov4689 的命令如下:
 +
<syntaxhighlight lang="bash">
 +
gst-launch-1.0 rkisp device=/dev/video0 sensor-id=1 io-mode=4 path-iqf=/etc/cam_iq/rk-ov4689.xml ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink
 +
</syntaxhighlight>
 +
重要参数说明:
 +
::{| class="wikitable"
 +
|-
 +
|参数 || 说明
 +
|-
 +
| device || 如果只接1个摄像头,无论连接在哪个CSI接口,用于预览的device (selfpath) 都是 /dev/video0,用于拍照的device (mainpath) 则是 /dev/video2, 如果同时连接2个摄像头,则CSI1接口对应的摄像头节点是 /dev/video0和/dev/video2, CSI2对应的是 /dev/video4和/dev/video6
 +
|-
 +
| sensor-id || 如果只接1个摄像头,无论连接在哪个CSI接口,sensor-id都是1,如果同时连接2个摄像头,则CSI1接口对应的摄像头是1, CSI2对应的是5
 +
|-
 +
| path-iqf || 指定摄像头型号对应的ISP校准文件,摄像头为OV4689时需要指定为 /etc/cam_iq/rk-ov4689.xml,摄像头为OV13850时需要指定为 /etc/cam_iq/rk-rk-ov13850.xml
 +
|-
 +
| rkximagesink或kmssink || 在X-Windows窗口中输出图像时指定为rkximagesink (适用于FriendlyDesktop),否则请使用kmssink(适用于FriendlyCore)
 +
|}
 +
 +
====摄像头应用教程: 推流至直播平台====
 +
请查看这篇文档: [[RTMP-For-RK3399/zh]]<br />
 +
 +
====参考资源====
 +
http://blog.iotwrt.com/media/2017/10/01/camera/
 +
http://www.360doc.com/content/16/1019/17/496343_599664458.shtml

Revision as of 04:29, 20 December 2018

1 Linux下使用MIPI接口摄像头OV13850与宽动态摄像头OV4689

摄像头连接方法: 摄像头可以连接在MIPI接口,如下图所示:


为了方便测试摄像头,我们提供了一个脚本gst-camera.sh可以在命令行测试摄像头的拍照和录像功能。

1.1 gst-camera.sh 参数说明

参数 功能
--index或-i 选择要使用的摄像头的序号,可选值为0和1,当同时连接两个摄像头时,指定为1表示要操作第二个摄像头
--mode或-m 指定摄像头的分辨率,比如720P 30FPS 则使用参数为 width=1280,height=720,framerate=30/1
--action或-a 指定命令要执行的动作,可选参数为: preview、photo和video,分别对应预览、拍照和录像
--output或-o 指定输出的文件名,用于拍照和录像时指定输出文件名
--verbose或-v 指定为yes时,会输出调用gst-launch-1.0命令的完整命令行
-x 使用rkximagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
-k 使用kmssink插件,预览图像会直接输出到屏幕,适用于FriendlyCore系统

脚本gst-camera.sh会自动识别OV13850与OV4689,并传递合适的参数给gst-launch-1.0。

1.2 gst-camera.sh 使用方法

  • 预览图像
gst-camera.sh --action preview
  • 拍照

用以下命令拍照一张照片,存储为文件 1.jpg:

gst-camera.sh --action photo -output 1.jpg
  • 录像并预览

用以下命令启动边预览边录像,存储为视频文件 1.ts,录像时使用了硬件编码:

gst-camera.sh --action video -output 1.ts


  • 显示完整的命令

加入 --verbose yes 的参数,会显示最终的 gsteamer 命令,例如:

gst-camera.sh --action video --output 1.ts --verbose yes

你会得到以下完整的 gsteamer 命令,这对你开发会有帮助:

gst-launch-1.0 rkisp num-buffers=512 io-mode=4 path-iqf=/etc/cam_iq/${XMLFILE} \
    ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
    ! tee name=t t. ! queue ! kmssink t. ! queue ! mpph264enc \
    ! queue ! h264parse ! mpegtsmux ! filesink location=1.ts

其中的 ${XMLFILE} 变量可能是rk-ov13850.xml或者rk-ov4689.xml,视你所连接的摄像头型号而定。


1.3 gst-launch-1.0命令行解析

在FriendlyDesktop下预览摄像头 ov13850 的命令如下:

gst-launch-1.0 rkisp device=/dev/video0 sensor-id=1 io-mode=4 path-iqf=/etc/cam_iq/rk-rk-ov13850.xml ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink

在FriendlyDesktop下预览摄像头 ov4689 的命令如下:

gst-launch-1.0 rkisp device=/dev/video0 sensor-id=1 io-mode=4 path-iqf=/etc/cam_iq/rk-ov4689.xml ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink

重要参数说明:

参数 说明
device 如果只接1个摄像头,无论连接在哪个CSI接口,用于预览的device (selfpath) 都是 /dev/video0,用于拍照的device (mainpath) 则是 /dev/video2, 如果同时连接2个摄像头,则CSI1接口对应的摄像头节点是 /dev/video0和/dev/video2, CSI2对应的是 /dev/video4和/dev/video6
sensor-id 如果只接1个摄像头,无论连接在哪个CSI接口,sensor-id都是1,如果同时连接2个摄像头,则CSI1接口对应的摄像头是1, CSI2对应的是5
path-iqf 指定摄像头型号对应的ISP校准文件,摄像头为OV4689时需要指定为 /etc/cam_iq/rk-ov4689.xml,摄像头为OV13850时需要指定为 /etc/cam_iq/rk-rk-ov13850.xml
rkximagesink或kmssink 在X-Windows窗口中输出图像时指定为rkximagesink (适用于FriendlyDesktop),否则请使用kmssink(适用于FriendlyCore)

1.4 摄像头应用教程: 推流至直播平台

请查看这篇文档: RTMP-For-RK3399/zh

1.5 参考资源

http://blog.iotwrt.com/media/2017/10/01/camera/ http://www.360doc.com/content/16/1019/17/496343_599664458.shtml