Difference between revisions of "APITestPage"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
 
(166 intermediate revisions by the same user not shown)
Line 1: Line 1:
===Linux下使用摄像头(MIPI接口摄像头OV13850与OV4689,USB摄像头罗技C920)===
 
摄像头连接方法:
 
摄像头可以连接在MIPI接口,如下图所示:<br />
 
{{#switch: {{{1}}}
 
| NanoPC-T4 =
 
[[File:T4-mipi-single-camera.jpg|frameless|600px]]<br>
 
| NanoPi-M4 =
 
[[File:M4-mipi-single-camera.jpg|frameless|600px]]<br>
 
| NanoPi-NEO4 =
 
[[File:Neo4-mipi-single-camera.jpg|frameless|600px]]<br>
 
| #default =
 
}}
 
  
<!--
+
{{BurnLinuxToExtDrive-Rockchip/zh|NanoPC-T4}}
M4-mipi-dual-camera.jpg
+
{{BurnLinuxToExtDrive-Rockchip|NanoPC-T4}}
T4-mipi-dual-camera.jpg
+
-->
+
 
+
为了方便测试摄像头,我们提供了脚本可以在命令行测试摄像头的拍照和录像功能。<br />
+
你可以用以下命令更新这个脚本到最新版本:
+
<syntaxhighlight lang="bash">
+
cd /tmp/
+
git clone https://github.com/friendlyarm/gst-camera-sh.git
+
sudo cp gst-camera-sh/*.sh /usr/bin/
+
</syntaxhighlight>
+
 
+
共有以下三个脚本:<br />
+
gst-camera.sh: 单个摄像头的预览、拍照与录像 <br />
+
dual-camera.sh: 预览两个摄像头 <br />
+
stop-gst-camera.sh: 停止预览<br />
+
<br />
+
====gst-camera.sh 参数说明====
+
::{| class="wikitable"
+
|-
+
|参数 || 功能
+
|-
+
|  --index或-i || 选择要使用的摄像头的序号,可选值为0和1,当同时连接两个摄像头时,指定为1表示要操作第二个摄像头
+
|-
+
|  --action或-a || 指定命令要执行的动作,可选参数为: preview、photo和video,分别对应预览、拍照和录像
+
|-
+
|  --output或-o || 指定输出的文件名,用于拍照和录像时指定输出文件名
+
|-
+
|  --verbose或-v || 指定为yes时,会输出调用gst-launch-1.0命令的完整命令行
+
|-
+
|  -x || 使用rkximagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
+
|-
+
|  -g || 使用glimagesink插件,预览图像会输出到X11窗口,适用于FriendlyDesktop与Lubuntu系统
+
|-
+
|  -k || 使用kmssink插件,预览图像会直接输出到屏幕,适用于FriendlyCore系统
+
|}
+
 
+
脚本gst-camera.sh会自动识别OV13850/OV4689/罗技C920摄像头,并传递合适的参数给gst-launch-1.0。
+
 
+
====gst-camera.sh 使用方法====
+
* '''预览图像'''
+
<syntaxhighlight lang="bash">
+
gst-camera.sh --action preview
+
</syntaxhighlight>
+
* '''拍照'''
+
用命令拍照一张照片,存储为文件 1.jpg:
+
<syntaxhighlight lang="bash">
+
gst-camera.sh -a photo -o 1.jpg
+
</syntaxhighlight>
+
 
+
* '''录像并预览'''
+
用以下命令启动录像,存储为视频文件 1.ts,录像时使用了硬件编码:
+
<syntaxhighlight lang="bash">
+
gst-camera.sh --action video -output 1.ts
+
</syntaxhighlight>
+
<br />
+
* '''显示完整的命令'''
+
加入 --verbose yes 的参数,会显示最终的 gsteamer 命令,例如:
+
<syntaxhighlight lang="bash">
+
gst-camera.sh --action video --output 1.ts --verbose yes
+
</syntaxhighlight>
+
你会得到以下完整的 gsteamer 命令,这对你开发会有帮助:
+
<syntaxhighlight lang="bash">
+
gst-launch-1.0 rkisp num-buffers=512 device=/dev/video0 io-mode=1 ! \
+
    video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! \
+
        mpph264enc ! queue ! h264parse ! mpegtsmux ! \
+
        filesink location=/tmp/camera-record.ts
+
</syntaxhighlight>
+
 
+
====gst-launch-1.0命令行解析====
+
在FriendlyDesktop下预览摄像头命令如下:
+
<syntaxhighlight lang="bash">
+
gst-launch-1.0 rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! rkximagesink
+
</syntaxhighlight>
+
重要参数说明:
+
::{| class="wikitable"
+
|-
+
|参数 || 说明
+
|-
+
| device || 用于预览的device (selfpath) 是 /dev/video1, 用于拍照的device (mainpath) 是 /dev/video0, 如果是多路摄像头,则另一路预览(selfpath)是 /dev/video5, 另一路拍照 (mainpath)是 /dev/video4, USB摄像头一般都是 /dev/video8
+
|-
+
| io-mode || 值为1表示是memory map模式,值为4表示是dmabuf模式,一般预览用io-mode=4,拍照用io-mode=1, 在OpenCV里访问用io-mode=4
+
|-
+
| rkximagesink/glimagesink/kmssink || 在X-Windows窗口中输出mipi摄像头图像时指定为rkximagesink (适用于FriendlyDesktop),如果是USB摄像头则指定为glimagesink,FriendlyCore下只能使用kmssink
+
|}
+
 
+
====在OpenCV中访问摄像头====
+
访问MIPI摄像头:
+
<syntaxhighlight lang="python">
+
cv.VideoCapture('rkisp device=/dev/video1 io-mode=4 ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink', cv.CAP_GSTREAMER)
+
</syntaxhighlight>
+
访问USB摄像头:
+
<syntaxhighlight lang="python">
+
cv.VideoCapture('rkisp device=/dev/video8 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! videoconvert ! appsink', cv.CAP_GSTREAMER)
+
</syntaxhighlight>
+
<br />
+
详情请参考这里的示例代码:https://github.com/friendlyarm/install-opencv-on-friendlycore/tree/rk3399/examples<br />
+
<br />
+
====摄像头应用教程: 推流至直播平台====
+
请查看这篇文档: [[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
+

Latest revision as of 09:58, 29 October 2024

1 安装系统到M.2或USB硬盘

可以通过使用TF卡启动eFlasher系统,将引导和系统分别安装到不同存储设备,但是由于CPU不支持直接从M.2和USB设备引导,所以虽然系统可以安装到M.2和USB设备,但是引导仍然需要安装到eMMC或者TF卡。
操作步骤如下:

  • 准备一张32G或以上容量的TF卡;
  • 访问此处的下载地址下载文件名为XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz的固件(位于"01_系统固件/02_SD卡刷机固件(SD-to-eMMC)"目录);
  • 将固件写入TF卡,在NanoPC-T4上连接好存储设备,插入TF卡上电开机,接下来要在界面上操作,如果没有显示设备,可以使用VNC代替,请参考使用VNC操作eFlasher;
  • 在eFlasher界面上,首先选择要安装的OS,然后选择引导安装的目的地 (通常选eMMC),以及选择系统安装的目的地(可以选eMMC,M.2硬盘,USB存储设备等),如下图所示:

Eflasher-select-boot-and-system-device.png

  • 没有eMMC时可使用TF卡作为引导,方法是将另一个TF卡通过USB读卡器插入USB端口,然后选择USB设备作为引导安装目的地,从而实现从TF卡引导,但系统存放在M.2或USB硬盘的目的;
  • 烧写完成后,从NanoPC-T4弹出SD卡,引导在eMMC的情况下,NanoPC-T4会自动重启至你刚刚烧写的系统,如果引导安装在TF卡,则需要拨掉电源,插入TF引导卡再上电开机;
  • 更详细的安装指南请参考此处;

2 Installing the System to M.2 or USB Drive

You can use a TF card to boot the eFlasher system, allowing the boot and system to be installed on different storage devices. However, since the CPU doesn’t support booting directly from M.2 and USB devices, the system can be installed on M.2 and USB devices, but the boot must still be installed on eMMC or a TF card.
Steps are as follows:

  • Prepare a TF card with a capacity of 32GB or larger.
  • Visit [the download link here](http://download.friendlyelec.com/APITestPage) to download the firmware file named XXXX-eflasher-multiple-os-YYYYMMDD-30g.img.gz (located in the “01_Official images/02_SD-to-eMMC images” directory).
  • Flash the firmware to the TF card, connect the storage device you intend to use on NanoPC-T4, insert the TF card and power on, we need to perform the operations in the eFlasher GUI. If your NanoPC-T4 does not have a display interface, you can use VNC; refer to Using VNC to Operate eFlasher.
  • In the eFlasher GUI, select the OS to install, and in the OS settings interface, choose the destination for boot installation (typically eMMC), then choose the destination for system installation (options include eMMC, M.2 hard drive, USB storage, etc.), as shown below:

Eflasher-select-boot-and-system-device.png

  • If no eMMC is available, the TF card can serve as the boot by inserting another TF card into the USB port via a USB card reader and selecting it as the boot destination, enabling booting from the TF card with the system stored on the M.2 or USB drive.
  • After flashing, eject the SD card from NanoPC-T4. If booting from eMMC, NanoPC-T4 will automatically restart into the newly flashed system. If boot installation is on a TF card, power off, insert the boot TF card, and power on again.
  • For a more detailed installation guide, please refer to this link.