亚洲精品无码一区二区三区久久久,长春欧亚卖场是哪个区,美熟女一区二区三区,亚洲中文字幕无码一区二区三区 ,欧美人与动牲交zooz男人,日本黄h兄妹h动漫一区二区三区,亚洲国产综合久久天堂,四虎成人影视免费在线站长,小黄片午夜视频在线播放,久久久日韩精品一区二区三区

廣告招募

當前位置:歐亞貿易網 > 技術中心 > 所有分類

ARM平臺基于嵌入式Linux Gstreamer 使用

2023年03月14日 10:33:27      來源:武漢華和機電技術有限公司 >> 進入該公司展臺      閱讀量:29

分享:

隨著ARM平臺性能的日益*和嵌入式設備的發展,對于多媒體處理如音視頻播放,攝像頭,流媒體處理等需求也日益增多,本文就通過幾個基于嵌入式Linux下多媒體應用的示例來簡單展示下使用Gstreamer框架進行多媒體處理的方法。

1). 簡介
隨著ARM平臺性能的日益*和嵌入式設備的發展,對于多媒體處理如音視頻播放,攝像頭,流媒體處理等需求也日益增多,本文就通過幾個基于嵌入式Linux下多媒體應用的示例來簡單展示下使用Gstreamer框架進行多媒體處理的方法.
Gstreamer是一個基于Pipeline的多媒體框架,基于GObject,以C語言寫成,目前是嵌入式Linux常用的處理多媒體應用框架. Element是Gstreamer最重要和基本的對象類,通過Plugin的形式提供,多個Elements可以組合為bin,并進一步聚合形成一個Pipeline完成一個多媒體應用處理.
2). 硬件準備
./ 本文測試所使用平臺為ToradexColibri i.MX6 ARM計算機核心板模塊, 基于NXP i.MX6 SoC, 配合Colibri開發板.
./ 攝像頭作為多媒體輸入源使用Logitech720P USB攝像頭
3). 軟件準備
./ OS為ToradexYcotoproject兼容嵌入式Linux發布 V2.5 beta3.
./ Gstreamer-0.10, 系統自帶
./ 安裝gstreamer相關插件包
----------------
root@colibri-imx6:~# opkg update
root@colibri-imx6:~# opkg installgst-plugins-base-meta gst-plugins-good-meta
root@colibri-imx6:~# wget /feeds/v2015.06/ipk/glibc/armv7ahf-vfp-neon/base/libavcodec54_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# wget/feeds/v2015.06/ipk/glibc/armv7ahf-vfp-neon/base/libswscale2_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# wget/feeds/v2015.06/ipk/glibc/armv7ahf-vfp-neon/base/libavutil52_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# wget/feeds/v2015.06/ipk/glibc/armv7ahf-vfp-neon/base/libavformat54_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# opkg installlibavutil52_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# opkg installlibavcodec54_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# opkg installlibswscale2_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# opkg installlibavformat54_9.16-r0.9_armv7ahf-vfp-neon.ipk
root@colibri-imx6:~# opkg installgst-ffmpeg
----------------
4). 測試gstreamer
Gstreamer提供了兩個非常方便的工具gst-launch和gst-inspect,在真正將Gstreamerpipeline集成到你的程序里面前,可以使用這兩個工具在命令行下面進行pipeline的準備和測試,本文也主要基于這種模式進行演示,而詳細的關于Gstreamer在程序中使用方法請參考這里.
gst-inspect可以用來查看當前系統已經安裝的plugin或者具體查看某個element的屬性來判定pipeline中elements互聯兼容性,詳細說明請見這里.
gst-launch 用于編譯和運行一個pipeline,可以方便的對pipeline進行不同組合嘗試并測試,如下面用來顯示一個視頻測試圖案.
----------------
root@colibri-imx6:~# gst-launch videotestsrc! 'video/x-raw-rgb, width=(int)640,height=(int)480' ! ximagesink

5). 應用示例
a). 播放攝像頭

使用v4l2src元件采集攝像頭視頻,視頻格式為YUY2/幀率30/分辨率640x480; 使用imxv4l2sink元件利用GPU加速播放采集的視頻; 如果使用ximagesink元件來播放則沒有硬件加速.
----------------
root@colibri-imx6:~# gst-launch v4l2srcdevice=/dev/video0 ! 'video/x-raw-yuv, framerate=30/1, width=(int)640,height=(int)480, format=(fourcc)YUY2' ! imxv4l2sink disp-width=640disp-height=480
----------------
目標板CPU占用率: 37.5%

b). 采集攝像頭保存為文件
同樣使用v4l2src元件采集攝像頭視頻; ffmpegcolorspace元件轉換顏色格式為I420; vpuenc元件調用硬件VPU進行H.264編碼; matroskamux元件進行mkv mux; filesink元件輸出到文件
----------------
root@colibri-imx6:~# gst-launch -v v4l2srcdevice=/dev/video0 ! ffmpegcolorspace ! 'video/x-raw-yuv, framerate=30/1,width=(int)640, height=(int)480, format=(fourcc)I420' ! queue max-size-buffers=2! vpuenc codec=6 ! matroskamux ! filesink location=output.mkv
----------------
目標板CPU占用率: 40%

c). 回放視頻文件
使用filesrc元件讀取視頻文件; aiurdemux元件進行demux; vpudec元件通過硬件VPU進行H.264解碼; imxv4l2sink元件播放.
----------------
root@colibri-imx6:~# gst-launch filesrclocation=/home/root/output.mkv typefind=true ! aiurdemux ! queue ! vpudec !imxv4l2sink disp-width=640 disp-height=480
----------------
目標板CPU占用率: 3.5%

d).RTP攝像頭流媒體到遠程主機
使用v4l2src元件采集攝像頭; ffmpegcolorspace轉換顏色格式; vpuenc元件調用硬件VPU進行H.264編碼;rtph264pay元件進行h264流rtp封裝; udpsink元件進行udp傳輸.
----------------
//Ubuntu主機IP: 10.20.1.116
//Colibri i.MX6目標板IP: 10.20.1.122
/* Colibri i.MX6 */
gst-launch -v v4l2src device=/dev/video0 !ffmpegcolorspace! 'video/x-raw-yuv, framerate=30/1, width=(int)640,height=(int)480, format=(fourcc)I420' ! vpuenc codec=6 ! rtph264pay ! udpsinkhost=10.20.1.116 port=5000
/* Ubuntu 主機 */
//Ubuntu 14.04, 安裝gstreamer-ffmpeg
wget/mc3man/gstffmpeg-keep/ubuntu/pool/main/g/gstreamer0.10-ffmpeg/gstreamer0.10-ffmpeg_0.10.13-5ubuntu1~trusty2.1_amd64.deb&& sudo dpkg -igstreamer0.10-ffmpeg_0.10.13-5ubuntu1~trusty2.1_amd64.deb
//播放流媒體, caps設置從目標板獲得
gst-launch-0.10 udpsrc port=5000caps="application/x-rtp, media=(string)video, clock-rate=(int)90000,encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0JAHqaAoD2QAA==,aM44gAA=\",payload=(int)96, ssrc=(uint)1172839120, clock-base=(uint)784846202,seqnum-base=(uint)58343" ! rtph264depay ! ffdec_h264 ! ximagesink
----------------
目標板CPU占用率: 35%

6). Gstreamer1.0應用示例
Colibri i.MX6 Linux發布版本V2.6beta1已經支持gstreamer1.0,升級方法請見這里
./ 軟件準備
安裝相關插件包
----------------
opkg update
opkg install gstreamer1.0-plugins-base-meta
opkg install gstreamer1.0-plugins-good-meta
opkg remove --force-dependslibgstimxcompositor0 //目前版本中需要移除否則無法使用gstreamer
----------------
./ 應用示例
a). 播放攝像頭
----------------
root@colibri-imx6:~# gst-launch-1.0 imxv4l2srcdevice=/dev/video0 ! 'video/x-raw, framerate=30/1, width=(int)640,height=(int)480, format=(string)YUY2' ! imxv4l2sink overlay-width=640 overlay-height=480
----------------
目標板CPU占用率: 30%

b). 采集攝像頭保存為文件
----------------
root@colibri-imx6:~# gst-launch-1.0 imxv4l2srcdevice=/dev/video0 ! videoconvert ! 'video/x-raw, framerate=30/1,width=(int)640, height=(int)480, format=(string)I420' ! queue max-size-buffers=2! vpuenc_h264 ! matroskamux ! filesink location=output.mkv
----------------
目標板CPU占用率: 16%

c). 回放視頻文件
----------------
root@colibri-imx6:~# gst-launch-1.0 filesrclocation=/home/root/output.mkv typefind=true ! matroskademux ! queue ! vpudec !imxv4l2sink overlay-width=640 overlay-height=480
----------------
目標板CPU占用率: 4%

d).RTP攝像頭流媒體到遠程主機
----------------
//Ubuntu主機IP: 10.20.1.116
//Colibri i.MX6目標板IP: 10.20.1.122
/* Colibri i.MX6 */
gst-launch-1.0 imxv4l2srcdevice=/dev/video0 ! videoconvert ! 'video/x-raw, framerate=30/1,width=(int)640, height=(int)480, format=(string)I420' ! queue max-size-buffers=2! vpuenc_h264 ! rtph264pay ! udpsink host=10.20.1.116 port=5000
/* Ubuntu 主機 */
//Ubuntu 14.04, 安裝libav (同0.10 ffmpeg)
sudo apt-get install gstreamer1.0-libav
//播放流媒體
gst-launch-1.0 udpsrc port=5000caps="application/x-rtp, media=(string)video, clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! avdec_h264 ! videoconvert ! ximagesink
----------------
目標板CPU占用率: 13%

e). 攝像頭連接到遠程主機tcp視頻流到目標版再rtp回遠程主機播放
----------------
//Ubuntu主機IP: 10.20.1.116
//Colibri i.MX6目標板IP: 10.20.1.122
/* Ubuntu 主機 */
//采集攝像頭并建立tcp server
gst-launch-1.0 v4l2src device=/dev/video0 !videoconvert ! 'video/x-raw, framerate=30/1, width=(int)640, height=(int)480,format=(string)I420' ! jpegenc ! tcpserversink host=10.20.1.116 port=5000
/* Colibri i.MX6 */
//從tcp server獲取攝像頭視頻流,并進行H.264壓縮后rtp回遠程主機
gst-launch-1.0 tcpclientsrchost=10.20.1.116 port=5000 ! jpegdec ! queue max-size-buffers=2 ! vpuenc_h264 !rtph264pay ! udpsink host=10.20.1.116 port=5001
/* Ubuntu 主機 */
//播放rtp視頻流
gst-launch-1.0 udpsrc port=5001caps="application/x-rtp, media=(string)video, clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtph264depay ! avdec_h264 ! videoconvert ! ximagesink
----------------
目標板CPU占用率: 31%

7). 總結
由上面示例可見Gstreamer是一個非常*且配置靈活的多媒體處理框架,并且配合相應的plugin,也可以充分調用硬件GPU/VPU加速,使其能夠在嵌入式設備上面利用有限的資源高效的實現廣泛的多媒體應用.

關于我們


華和技術(WONHERE)順應市場發展趨勢,作為智能硬件一站式解決方案提供者,基于低功耗嵌入式平臺專注采集、控制、通訊一站式解決智能硬件研發,堅持以持續)創新為客戶不斷創造價值。成功案例遍布檢測監測儀器、環境工程與自然、工業控制與自動化、智能交通能源、北斗位置服務、國防及醫療電子等領域。致力于通過方案開發幫助客戶:縮短開發周期,降低開發成本,提高投資效率。致力于通過技術服務、項目管理和集成化的采購、生產幫助客戶提高供貨質量和降低企業運營成本。

華和技術(WONHERE)有十余年的嵌入式項目研發及管理經驗,團隊致力于平臺級產品的研發和檢測、監測、控制類系統方案的項目定制。華和技術是武漢大學研究生培養基地、湖北省儀器儀表學會理事單位,擁有嵌入式系統開發領域的多項知識產權。華和技術以打造中國低功耗嵌入式平臺、物聯網智能硬件開發及技術支持中心為使命。我們的產品有:ARM335x嵌入式板卡、ARM3530嵌入式板卡、ARM3730嵌入式板卡,X86嵌入式平臺、Power PC嵌入式平臺,以及儀器儀表、環境工程、智能裝備、智能交通、行業嵌入式系統方案。產品咨詢請與華和技術(WONHERE)聯系。

版權與免責聲明:
1.凡本網注明"來源:歐亞貿易網"的所有作品,版權均屬于歐亞貿易網,轉載請必須注明歐亞貿易網。違反者本網將追究相關法律責任。
2.企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
3.本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。 4.如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系。