天天看點

綠幕摳圖的常見問答

常見問答

文章目錄

      • 常見問答
      • 1. 如何支援多機位.
      • 2. 如何支援合流
      • 3. 綠色物體不想被摳去怎麼辦?
      • 4. 如何推流
      • 5. 如何外接美顔
      • 6. 如何自定義界面.
      • 7. 預置點和 藍牙鍵盤支援嗎?
      • 8.實際直播場景要注意哪些?

1. 如何支援多機位.

  • 我們提供了多個輸入接口, 讓你把外面的圖像資料實時的輸入到SDK裡.
  • android系統常見的有:MediaPlayer播放器, ijkplayer, usb攝像頭, MediaCodec接口等 這些接口都有一個API叫 setSurface, 意思是設定一個圖像輸入口, 我們SDK提供了一個建立surface的可與之比對.把我們建立好的surface設定到這些播放控件中, 即可把外面的圖像資料引入到我們SDK中.
  • 接入後,我們把多機位的控制分為兩部分, 播放控制和圖像畫面控制, 播放控制是在外面完成, SDK因隻傳遞了畫面進來, 故需要用您的控件來控制播放流的各種動作,比如暫停/調速,切換等; 對圖像畫面的顯示位置,顯示大小,是否摳綠等的調節, 是在SDK内部完成的.
  • 現在支援的有MediaPlayer, ijkPlayer, MediaCodec, USB攝像頭-uvc格式.
  • USB攝像頭舉例代碼如下:
//增加一個圖層到容器裡,可增加多層,傳回這一次的控制對象LSOCamLayer
 usbUvcLayer=lsoCamera.addSurfaceLayer(width ,height, true, 0);
                if(usbUvcLayer!=null){
                //圖層對象擷取到surface設定到usb播放控件中
                    uvcCameraHandler.startPreview( usbUvcLayer.getSurface());
                    //圖層設定摳綠功能
                    usbUvcLayer.setGreenMatting(LSOSegmentType.GREEN_MATTING);
                }
// 可增加多層, 并有removeLayer()删除這個圖層. 
           
  • ios系統常見的是AVPlayer, 此控件支援網絡url資料流, 隻需要設定好URL的路徑, 即可播放.
  • 如果需求是大于2個機位,則可以調節每個位置在上層或下層, 也可以調節縮放每個機位的話, 并上下左右平面布局;

2. 如何支援合流

  • 如果是外面輸入的圖像流,則類似我們說的多機位.
  • 如果是自定義的UI界面, 想疊加到圖像中,則我們也支援的. 我們提供了一個UI控件容器, 你把您的各種控件增加到此容器中即可. 比如android, 我們提供了LSORelativeLayout, ios提供了UIView, 可以讓您把很多文本/按鈕,動畫等繪制到此根view中. 繪制後, 會在推流的時候, 合并為同一個圖像輸出;

3. 綠色物體不想被摳去怎麼辦?

  • 有兩個方法. 1. 背景用藍布或紅布; 2. 區域保護.
  • 背景用藍布或紅布: 步驟是把背景換成一塊藍布或紅布, 然後在SDK裡設定摳藍色或紅色即可.
  • 區域保護: 可設定圖像畫面中某個區域,不被摳去. 比如産品是固定在左下方,則把圖像的左下方設定為不被摳去的地方即可.

4. 如何推流

  • 我們提供了引出圖像的方法, android可引出NV21格式或RGBA格式的圖像, ios引出的圖像格式是:bgra或CVImageBufferRef, 并均支援在引出過程中,設定圖像的寬高.
  • 輸出的圖像資料, 是在内部已經疊加成一幀圖像;
  • 拿到這些圖像資料後, 可設定到推流SDK或外部使用.

5. 如何外接美顔

  • 我們示範demo裡已經接入了相芯的美顔SDK,
  • 如果你要接入别家SDK,也支援的, android的圖像以紋理的形式引出, ios以sampeBuffer形式引出.
  • 可參考我們的代碼, 把輸入的圖像,經過别家SDK,把美顔的結果一紋理或資料的格式傳回即可.

6. 如何自定義界面.

  • 我們提供了最簡單的摳綠工程:
  • android 下載下傳:https://github.com/LanSoSdk/android_green_matting
  • ios下載下傳位址:https://github.com/LanSoSdk/ios_green_matting
  • 以上工程, 是以最少的代碼,示範了摳綠的效果. 您可以把示範代碼拷貝過去, 然後在此基礎上開發您的界面.
  • 最簡單的示範和我們完整工程的示範, 用的是同一份SDK, 隻是一個簡單易讀, 一個功能示範豐富.

7. 預置點和 藍牙鍵盤支援嗎?

  • 全面支援
  • 具體是: 你可以拿到每一層畫面的控制對象, 根據此對象, 你可以設定此畫面在任意位置/任意寬高/任意角度顯示,并可以設定是否摳圖等;
  • 我們示範demo裡有藍牙鍵盤的控制代碼, 這些都是開源的, 修改對應的判斷語句即可自定義

8.實際直播場景要注意哪些?

  • 不要距離綠布太近, 如果太近,綠布在燈光的照射下,會反光到人或物體上, SDK的摳綠原理可想象為判斷每個像素是否是綠色, 如果是綠色則摳去, 這樣的話,一些反射到人或物體上的綠色,就會被摳去.
  • 調節辦法是: 先關閉綠幕摳圖功能, 一個人或物體站在綠布前面, 另一個人調節燈光強弱和調節距離綠幕的遠近, 以人或物體的表面沒有反光為好. 可配合我們的摳綠強度調節.