《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > 嵌入式Linux下Gstreamer編程示例

嵌入式Linux下Gstreamer編程示例

2017-08-03
關鍵詞: Linux下Gstreamer ARM

  1). 簡介

  Gstreamer多媒體開發框架是當前嵌入式Linux設備最為常用的多媒體應用處理平臺,關于Gstreamer開發框架的介紹請參考我們過往發表的其他相關文章,這里不再贅述而是直接展示使用C語言基于Gstreamer進行攝像頭處理的示例程序開發。

  本文所演示的平臺來自于Toradex Aaplis iMX6D嵌入式平臺,這個平臺是基于NXP iMX6系列ARM處理器,支持雙核心Cortex-A9。

  2). 準備

  a). ApalisiMX6D ARM核心版配合ApalisIxora載板,連接調試串口到開發主機,具體操作方法可以參考這里。

  b). Apalis iMX6D操作系統使用Toradex LinuxRelease V2.7b2,下載和更新方法請參考這里。

  c). 連接一個USB Camera到Ixora載板X8靠上的USB接口,這里使用Logitech 720P攝像頭。

  3). 配置Ubuntu開發主機

  a). 安裝Toradex提供的交叉編譯SDK,可以基于OpenEmbedded環境自行編譯,也可以從這里下載我們已經編譯好的進行測試使用,下載后執行下面命令進行安裝,并根據提示設置安裝目錄。

  --------------------

  $ ./angstrom-glibc-x86_64-armv7at2hf-neon-v2016.12-toolchain.sh-S

  --------------------

  b). 本文使用Eclipse IDE進行開發,請參考這里的文章說明在Eclipse配置基本的SDK交叉編譯相關設置。

  c). 啟動Eclipse并創建Gstreamer新項目

  ./ 在啟動Eclipse之前,首先打開Terminal并執行下面命令配置SDK,配置在Terminal關閉時候失效,下次使用要重新配置。

  --------------------

  $ source SDK Path/environment-setup-armv7at2hf-vfp-neon-angstrom-linux-gnueabi

  --------------------

  ./ 然后在同一Terminal下啟動Eclipse IDE

  ./ 創建新的Cross GCC項目,這里為gstest

  d). 設置Gstreamer編譯選項

  ./gstest –> Properties-> C/C++ Build -> Settings –> Tool Settings -> Cross GCC Compiler-> Miscellaneous -> Other flags 添加下面內容

  --------------------

  `pkg-config --cflags gstreamer-1.0` -fPIC

  --------------------

  ./ ./gstest –> Properties -> C/C++Build -> Settings –> Tool Settings -> Cross GCC Linker ->Miscellaneous -> Linker flags添加下面內容

  --------------------

  `pkg-config --libs gstreamer-1.0 gobject-2.0 glib-2.0`

  --------------------

  4). C程序開發示例

  a). 本文演示C程序main程序中主要實現三種Gstreamer應用示例,第一種是捕獲USB攝像頭輸入圖像并顯示在桌面上,第二種是捕獲USB攝像頭輸入圖像并進行H.264編碼后保存為MKV視頻文件,第三種是讀取上面第二種保存的視頻文件并播放顯示在桌面上面。

  b). 程序完整代碼如下,分別說明如下:

  https://github.com/simonqin09/gstest/blob/master/gstest.c

  ./ Main函數首先創建所需要使用的Elements和bus等,然后初始化gstreamer并創建main loop。

  ./ 然后通過程序輸入參數做三個選項,分別對應上面提到的三個子應用。

  ./ 應用1 - 捕獲USB攝像頭輸入圖像并顯示在桌面

  // 首先在iMX6上面可以通過命令行先測試好要使用的pipeline,如下:

  --------------------

  $ gst-launch-1.0 imxv4l2src device=/dev/video3 ! 'video/x-raw,width=1280, height=720, format=(string)YUY2' ! videoconvert ! imxv4l2sink overlay-width=640 overlay-height=480

  --------------------

  // 然后按照上面測試的pipeline在程序中先創建pipeline,然后再分別調用”gst_element_factory_make”函數匹配實際使用的elements,最后創建pipeline message bus和monitor。

  // 然后調用”gst_bin_add_many”函數將剛才生成的elements添加到pipeline中。

  // 最后調用”gst_element_link_many”函數順序鏈接各個elements

  ./ 應用2 - 捕獲USB攝像頭輸入圖像并進行H.264編碼后保存為MKV視頻文件

  // 首先同樣在iMX6上面通過命令行先測試好要使用的pipeline,如下:

  --------------------

  $ gst-launch-1.0 imxv4l2src device=/dev/video3 ! 'video/x-raw,width=1280, height=720, format=(string)YUY2' ! videoconvert ! vpuenc_h264 ! matroskamux ! filesink location=output.mkv

  --------------------

  // 后面的程序和上面應用1是類似的方法配置

  ./ 應用3 - 讀取上面第二種保存的視頻文件并播放顯示在桌面

  // 首先同樣在iMX6上面通過命令行先測試好要使用的pipeline,如下:

  --------------------

  gst-launch-1.0 filesrc location=output.mkv typefind=true ! matroskademux ! vpudec ! imxv4l2sink overlay-width=640overlay-height=480

  --------------------

  // 后面的程序基本上和上面應用1是類似的方法配置,只是有一個元件需要注意,就是”matroskademux”,通過”gst-inspect”查看可以得知其sink pad是根據src數據情況動態產生的,這樣導致在上面測試piepeline的時候沒有問題,但是做C程序開發的時候就需要我們來處理這個事件,因此我們添加了”on_pad_added”函數,并在main函數中調用”g_signal_connect”函數來動態鏈接pipeline中的demux元件和decoder元件。

  ./ main函數最后通過”gst_element_set_state”函數play pipeline,并通過” g_main_loop_run”函數開始循環。

  c). 測試上述c程序代碼運行請見如下:

  ./ 應用1:

  --------------------------------

  root@apalis-imx6:~# ./gstest 1 /dev/video3

  [ 3689.676941] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  [ 3689.682806] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  [ 3689.688697] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  ====== IMXV4L2SRC: 4.1.4 build on Apr 102017 02:13:12. ======

  ====== IMXV4L2SINK: 4.1.4 build on Apr 102017 02:13:12. ======

  display(/dev/fb0) resolution is (1920x1080).

  Running

  v4l2sink need allocate 3 buffers.

  --------------------------------

  顯示如下:

35acab90a6966dec6207314dc921c555.png

  ./ 應用2:

  --------------------------------

  root@apalis-imx6:~# ./gstest 2 /dev/video3 output.mkv

  [ 9096.456753] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  [ 9096.462704] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  [ 9096.468553] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE

  ====== IMXV4L2SRC: 4.1.4 build on Apr 102017 02:13:12. ======

  [INFO]  Product Info: i.MX6Q/D/S

  ====== VPUENC: 4.1.4 build on Apr 10 201702:13:17. ======

  wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Apr  4 2017 17:47:13)

  vpulib: 5.4.35

  firmware: 3.1.1.46072

  Running

  [INFO]  ringBufferEnable 0, chromaInterleave 1, mapType 0, linear2TiledEnable 0

  --------------------------------

  查看生成文件如下:

89d3669113750692ba1615389b37effc.png

  ./ 應用3:

  --------------------------------

  root@apalis-imx6:~# ./gstest 3 output.mkv

  [INFO]  Product Info: i.MX6Q/D/S

  ====== IMXV4L2SINK: 4.1.4 build on Apr 102017 02:13:12. ======

  display(/dev/fb0) resolution is (1920x1080).

  [INFO]  Product Info: i.MX6Q/D/S

  ====== VPUDEC: 4.1.4 build on Apr 10 201702:13:17. ======

  wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Apr  4 2017 17:47:13)

  vpulib: 5.4.35

  firmware: 3.1.1.46072

  Running

  Dynamic pad created, linking demux/decoder

  [INFO]  bitstreamMode 1, chromaInterleave 1, mapType 0, tiled2LinearEnable 0

  v4l2sink need allocate 3 buffers.

  --------------------------------

  顯示如下:

c2392ba9297d63c3c668edb0ee7f9d62.png

  5). 總結

  Gstreamer框架是非常強大的多媒體處理工具,本文只是做了一些簡單的應用示例,更多詳細說明和示例請參考其官方網站。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          美玉足脚交一区二区三区图片| 欧美xart系列高清| 亚洲视频每日更新| 国产精品v欧美精品v日韩精品| 国产精品一级在线| 久久综合99re88久久爱| 伊人精品在线| 国内成+人亚洲| 欧美精品少妇一区二区三区| 国产日韩欧美一区| 欧美激情国产日韩精品一区18| 久久久久久穴| 午夜在线观看免费一区| 裸体女人亚洲精品一区| 在线日韩精品视频| 欧美电影在线观看| 欧美高清在线视频观看不卡| 欧美日韩91| 欧美伊人精品成人久久综合97| 在线观看欧美视频| 亚洲激情一区二区| 亚洲一区日本| 午夜宅男久久久| 亚洲日本乱码在线观看| 久久激情五月丁香伊人| 激情偷拍久久| 狼人天天伊人久久| 亚洲视频一二| 激情综合色综合久久| 国产精品视频专区| 亚洲精品婷婷| 欧美一区二区免费| 夜久久久久久| 国产一区二区精品丝袜| 欧美精品色一区二区三区| 欧美三级视频在线观看| 欧美另类在线观看| 欧美色欧美亚洲另类二区| 18成人免费观看视频| 国产一区二区日韩| 久久精品国产一区二区电影| 午夜精品久久久久99热蜜桃导演| 亚洲欧美激情一区二区| 欧美日韩一卡二卡| 一区二区三区免费看| 91久久精品日日躁夜夜躁欧美| 日韩视频在线你懂得| 国产日韩一区二区三区| 欧美三级乱人伦电影| 久久成人国产| 性久久久久久久久| 欧美日韩国产另类不卡| 免费高清在线一区| 亚洲精品一区二区三区婷婷月| 亚洲精选国产| 狠狠狠色丁香婷婷综合久久五月| 国产午夜亚洲精品理论片色戒| 国产精品久久久久久久浪潮网站| 国产一区二区观看| 久久久精品国产免费观看同学| 亚洲三级影片| 在线观看视频日韩| 国产精品久久久久久亚洲毛片| 国产精品福利在线| 亚洲一区二区三区精品在线| 亚洲日本aⅴ片在线观看香蕉| 欧美午夜www高清视频| 国产日韩欧美电影在线观看| 国产精品久久久久av免费| 欧美日韩国产一中文字不卡| 久久久久九九视频| 亚洲第一网站免费视频| 国产麻豆精品在线观看| 浪潮色综合久久天堂| 亚洲制服av| 国产目拍亚洲精品99久久精品| 亚洲欧美大片| 一区二区三区黄色| 国产主播一区| 亚洲自拍偷拍网址| 亚洲综合第一| 亚洲一区二区高清视频| 亚洲国产日韩综合一区| 亚洲精美视频| 国产精品久久网站| 国产伦精品一区二区三区免费迷| 欧美日韩国产成人在线观看| 亚洲欧美自拍偷拍| 99视频一区二区三区| 国产精品免费观看在线| 欧美精品日韩一区| 亚洲激情视频在线播放| 亚洲一区国产一区| 久久久久久久网| 久久综合婷婷| 欧美另类专区| 国产精品永久免费观看| 亚洲一区免费| 久久精品官网| 欧美亚洲一区二区三区| 欧美一区二区三区啪啪| 欧美在线视频免费| 国产日韩欧美日韩| 一区二区三区在线观看国产| 制服诱惑一区二区| 久热爱精品视频线路一| 久久亚洲影院| 久久亚洲精品视频| 在线精品视频一区二区三四| 亚洲精品久久久久久久久久久久久| 欧美视频一区二区在线观看| 国产毛片久久| 美女日韩在线中文字幕| 欧美一区三区三区高中清蜜桃| 国产日韩精品一区二区| 国产一区二区三区观看| 国产精品一级久久久| 欧美日韩在线免费视频| 欧美日韩在线亚洲一区蜜芽| 久久久人成影片一区二区三区| 久久亚洲春色中文字幕久久久| 久久精品一区二区三区不卡牛牛| 亚洲欧美精品suv| 国产精品成人va在线观看| 欧美三级免费| 欧美一级日韩一级| 欧美精品在线免费观看| 怡红院av一区二区三区| 欧美色区777第一页| 一区二区三区在线免费播放| 亚洲第一区色| 欧美国产视频在线观看| 一区二区三区回区在观看免费视频| 国产精品免费看久久久香蕉| 久久这里有精品15一区二区三区| 性色av一区二区怡红| 日韩视频一区二区三区在线播放免费观看| 久久综合久色欧美综合狠狠| 久久伊人一区二区| 国产主播精品在线| 欧美激情一区二区三区高清视频| 日韩亚洲在线观看| 久久久精品网| 久久久久国产一区二区三区| 欧美一区二区三区四区在线| 欧美午夜视频在线观看| 欧美一区二区三区免费看| 国产精品视频999| 久久精品日韩一区二区三区| 麻豆久久久9性大片| 国产专区一区| 欧美日韩麻豆| 亚洲高清久久网| 女同性一区二区三区人了人一| 91久久精品久久国产性色也91| 欧美精品 日韩| 欧美成人官网二区| 欧美日韩国产首页在线观看| 一区在线视频观看| 亚洲三级免费电影| 中文成人激情娱乐网| 亚洲国产精品尤物yw在线观看| 新67194成人永久网站| 136国产福利精品导航网址应用| 日韩手机在线导航| 亚洲欧美日韩国产中文| 久久久99精品免费观看不卡| 亚洲精品久久久久久下一站| 国产偷国产偷精品高清尤物| 韩国av一区二区三区| 国产精品激情偷乱一区二区∴| 狠狠v欧美v日韩v亚洲ⅴ| 欧美性猛交一区二区三区精品| 欧美网站在线观看| 欧美日韩一区二区欧美激情| 国产免费亚洲高清| 亚洲视频在线一区观看| 在线观看91精品国产入口| 亚洲一区二区综合| 91久久夜色精品国产网站| 国内精品视频666| 国产精品成人在线| 国产日产亚洲精品系列| 欧美精品一区二区三区在线看午夜| 香蕉免费一区二区三区在线观看| 欧美日韩视频在线| 91久久香蕉国产日韩欧美9色| 国产永久精品大片wwwapp| 欧美顶级艳妇交换群宴| 欧美一级免费视频| 亚洲激情不卡| 一区二区三区精品久久久| 欧美成人a∨高清免费观看| 欧美激情一区二区三区全黄| 国产精品福利网| 欧美一级日韩一级| 日韩视频在线观看国产| 亚洲视频免费在线| 国模私拍视频一区| 欧美日韩国产限制| 国产精品国产三级国产专播精品人| 99热精品在线观看| 亚洲手机视频| 激情亚洲一区二区三区四区| 国产精品成人一区二区三区夜夜夜| 久热精品视频在线观看一区| 久久精品国产2020观看福利| 一区二区久久久久久| 国产精品v片在线观看不卡| 亚洲深夜影院| 一本大道久久a久久精品综合| 亚洲专区一区二区三区| 欧美日韩情趣电影| 亚洲视频中文| 久久精品国产96久久久香蕉| 六月天综合网| 欧美黑人国产人伦爽爽爽| 亚洲天堂网在线观看| 欧美日韩精品二区第二页| 亚洲视频视频在线| 亚洲一区观看| 久久久久久欧美| 国产目拍亚洲精品99久久精品| 亚洲男人第一av网站| 国产日韩精品视频一区二区三区| 午夜国产精品视频免费体验区| 国产精品毛片a∨一区二区三区|国| 亚洲欧美国产精品桃花| 欧美日本国产视频| 欧美一区成人| 亚洲国产日韩欧美综合久久| 午夜一区不卡| 国产精品成人免费精品自在线观看| 久久亚洲综合网| 国产精品一区二区在线观看不卡| 久久久综合香蕉尹人综合网| 久久aⅴ国产欧美74aaa| 国产精品夫妻自拍| 亚洲日本欧美在线| 亚洲国产二区| 亚洲午夜一二三区视频| 国产日韩精品视频一区| 久久伊人精品天天| 一本综合久久| 午夜精品一区二区三区在线视| 先锋影音国产一区| 亚洲国产精品一区二区www| 快播亚洲色图| 欧美日韩免费看| 欧美大片第1页| 亚洲人成毛片在线播放女女| 国产亚洲精品资源在线26u| 欧美黄色大片网站| aa成人免费视频| 狠狠久久亚洲欧美专区| 亚洲福利在线视频| 狂野欧美性猛交xxxx巴西| 国产亚洲va综合人人澡精品| 夜夜嗨av一区二区三区网站四季av| 久久久精品久久久久| 国产精品乱码人人做人人爱| 亚洲国产91精品在线观看| 亚洲乱码视频| 亚洲韩国日本中文字幕| 国产视频观看一区| 在线观看免费视频综合| 欧美视频久久| 制服丝袜亚洲播放| 欧美黄网免费在线观看| 最新中文字幕亚洲| 久久久999精品视频| 久久综合色播五月| 亚洲欧美日韩天堂| 小嫩嫩精品导航| 欧美日韩一区视频| 欧美成人精品三级在线观看| 国产精品一区视频| 国产一区二区三区直播精品电影| 免费一区二区三区| 亚洲人久久久| 欧美日韩激情小视频| 久久人人爽爽爽人久久久| 亚洲人成网站影音先锋播放| 欧美深夜影院| 久久精品国产亚洲一区二区三区| 欧美成人免费网站| 久久精品国产亚洲一区二区| 亚洲精品一品区二品区三品区| 欧美日韩三级一区二区| 国产免费观看久久| 午夜精品成人在线视频| 日韩亚洲视频在线| 亚洲网站啪啪| 亚洲精品久久久久久久久久久久久| 亚洲欧美日韩中文视频| 国产精品你懂的在线欣赏| 激情视频亚洲| 久久精品国产免费看久久精品| 亚洲一二三四久久| 伊人久久婷婷| 欧美日韩精品国产| 欧美日韩1080p| 亚洲精品123区| 久久婷婷国产综合尤物精品| 亚洲免费视频一区二区| 国产亚洲精品一区二555| 欧美日本乱大交xxxxx| 欧美伊人久久久久久午夜久久久久| 另类酷文…触手系列精品集v1小说| 亚洲国产精品久久久久久女王| 国产亚洲欧洲一区高清在线观看| 国产精品男女猛烈高潮激情| 久久精品视频99| 韩日精品在线| 国产精品高清一区二区三区| 久久久国产精品一区二区三区| 激情综合中文娱乐网| 久久精品一本| 日韩视频在线你懂得| 在线欧美日韩国产| 欧美日韩在线三级| 伊人狠狠色j香婷婷综合| 亚洲一区二区三区精品在线观看| 亚洲国产日韩一级| 亚洲欧美综合国产精品一区| 欧美有码视频| 国产精品久久9| 在线视频成人|