Ameba Arduino: [RTL8195] UVC – 让Ameba播放视讯

材料准备

  • Ameba x 1
  • Logitech C170 web cam x 1
  • Micro USB OTG adapter x 1

范例说明

Ameba板子上共有3个micro usb host的插座,其中在背面的micro usb host可以支援OTG UVC,让USB摄影机可以将视讯资料传至Ameba,Ameba再将视讯整理成rtsp串流送到网路上。
Logitech C170是一款平价的摄影机,底下是它的规格:
http://www.logitech.com/en-in/product/webcam-c170
目前Ameba预设的串流格式Motion JPEG 320 x 240,使用者可以根据需求尝试调整参数。
接线的方式如下图,Ameba先接上Micro USB OTG线,再接上USB Camera。
1
要注意的是,这种接法里,摄影机使用了Ameba板子上的电源,如果供电给Ameba的电源不够的话,会造成摄影机无法启动。这种情况就需要确保Ameba供电足够,或者是选择可以外接电源的USB OTG线。
接着打开范例 “File” -> “Examples” -> “AmebaUVC” -> “uvc_basic”
这个范例需要连上AP,请先填入AP的ssid跟password, 烧录并上传至Ameba之后,按下Reset按钮。
接着会在Serial Monitor看到底下的讯息:
2

可以看到预设使用MJPG (Motion JPEG), 解析度为320 * 240, frame rate为30, 最后Streaming设定结束,log里印出要播UVC, 可以连上这个网址 -
rtsp://192.168.1.70/test.sdp 里面的IP会随着Ameba实际拿到的IP不同而改变
接着我们使用播放串流的软体,像是VLC Player,它有电脑版:http://www.videolan.org/vlc/
下载并安装之后,点选 “Media” -> “Open Network Stream”
3

接着填入刚刚在Serial Monitor的网址, (要先确定电脑可以连到Ameba,或是连到同一台无线AP)
4

等一下应该就可以看到串流:5

Android手机也有VLC的Application, 可以使用关键字 “VLC”, 或是在手机打开底下的网页:
6

安装并打开app, 点选左边的页签选 “Stream”
7

接着输入在Serial Monitor的网址, 并且确定手机可以连至Ameba或是连到同一个AP。
8

接着手机上也可以看到串流。

程式码说明

程式码前面是让Ameba的WiFi连上AP的流程
接着启动UVC:
UVC.begin();
或者也可以尝试使用其它的解析度, 第1个参数是编码格式,这里使用UVC_MJPEG, 第2跟第3个参数是解析度, 预设是320 * 240, 这里也可以改成640 * 480, 第4个参数是framerate, 这里设定为30, 第5个参数是compression ratio:
//UVC.begin(UVC_MJPEG, 640, 480, 30, 0);
接着我们等待UVC初始化:

  // wait until UVC is ready for streaming
  while (!UVC.available()) {
    delay(100);
  }

完成之后, 最后印出提供串流服务的网路位置。