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);
  }

完成之後, 最後印出提供串流服務的網路位置。