環(huán)境準(zhǔn)備
ubuntu發(fā)行版22.04,該發(fā)行版內(nèi)置Gstreamer1.20.1,gstreamer源碼最新版本為1.20.3,差距不大
下載gstreamer源碼
下載gstreamer源碼
安裝git
sudo apt install -y git
fuqiang@fuqiang-VivoBook:~/Workspace/gstreamer$ git --version
git version 2.34.1
下載gstreamer
git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git
git checkout --track -b 1.20 origin/1.20 --->1.20是目前最新版本的穩(wěn)定分支,最新的小版本號為1.20.3
準(zhǔn)備編譯環(huán)境
安裝meson
gstreamer1.60以后(不包含1.60),使用meson+ninja來構(gòu)建
sudo apt install -y meson
fuqiang@fuqiang-VivoBook:~/Workspace/gstreamer$ meson --version
0.61.2
安裝glib
gstreamer是基于glib-gobject來實現(xiàn)的
sudo apt install -y libglib2.0-dev
安裝libsoup
sudo apt install -y libsoup2.4-dev
安裝libunwind
1.下載包,http://download.savannah.nongnu.org/releases/libunwind/
2. ./configure
3.make
4.sudo make install
安裝libdw
sudo apt install -y libdw-dev
安裝g-ir-scanner
系統(tǒng)中搜索g-ir-scanner,然后將其copy到/usr/lib/下,給予執(zhí)行權(quán)限
安裝gobject-introspection-1.0
sudo apt-get install -y libgirepository1.0-dev
安裝gtk+-3.0
sudo apt-get install -y libgtk-3-dev
安裝hotdoc
sudo apt-get install -y libjson-glib-devsudo apt install -y cmake python3-pip
sudo pip3 install hotdoc
安裝xgettext
系統(tǒng)中搜索xgettext,復(fù)制到/usr/bin/下,并給予執(zhí)行權(quán)限
安裝alsa
sudo apt-get install -y libasound2-dev
安裝cdda_paranoia
sudo apt install -y cdparanoia
還不行將cdparanoia先注釋掉
安裝libvisual-0.4
sudo apt install libvisual-0.4-dev
安裝xv
打開終端輸入 sudo snap install xv --edge,如果不能正常安裝則按照提示輸入 sudo snap install xv --edge --devmode即可安裝成功
安裝SDL2
sudo apt-get install -y libsdl2-2.0 libsdl2-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev
安裝qt5
sudo apt-get install -y clang qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtcreator
sudo apt-get install -y qt5*
安裝bz2
sudo apt install -y libbz2-dev
安裝nasm/yasm
sudo apt install -y nasm yasm
安裝gettext
sudo apt-get install -y gettext
編譯安裝
創(chuàng)建out目錄
cd gstreamer
mkdir out
編譯
meson out
cd out
ninja
sudo ninja install
帶參數(shù)編譯示例
meson --reconfigure -Dauto_features=enabled -Dgst-plugins-base:opus=disabled -Dgst-plugins-base:ogg=disabled out
異常處理
異常1
subprojects/gstreamer/gst/parse/meson.build:7:0: ERROR: Program 'flex win_flex' not found or not executable
解決方案:
sudo apt install -y flex
異常2
subprojects/gstreamer/gst/parse/meson.build:34:0: ERROR: Program 'bison win_bison' not found or not executable
解決方案:
sudo apt install -y bison
異常3
fuqiang@fuqiang-VivoBook:~/Workspace/gstreamer/gstreamer/out$ninja
ninja: error: 'subprojects/gst-plugins-bad/gst-libs/gst/transcoder/transcoder-enumtypes.h', needed by 'subprojects/gst-devtools/validate/tools/gst-validate-transcoding-1.0.p/gst-validate-transcoding.c.o', missing and no known rule to make it
解決方案:
meson --reconfigure
異常4
fuqiang@ubuntu:~/workspace/gstreamer$ meson out
The Meson build system
Source dir: /home/fuqiang/workspace/gstreamer
Build dir: /home/fuqiang/workspace/gstreamer/out
Build type: native build
meson.build:81:15: ERROR: lexer
['gstreamer', {'build-hotdoc': true}],
解決方案:更新meson版本,ubuntu18.04會出現(xiàn)這個問題,原因是其meson版本過低,使用pip3來安裝meson
sudo pip3 install meson
如果版本還是低的話,可能/usr/bin有原始的meson,/usr/local/bin中是新安裝的meson,將/usr/local/bin下面的copy到/usr/bin下面即可文章來源:http://www.zghlxwxcb.cn/news/detail-449598.html
異常5
msgfmt: command not found
解決方案:文章來源地址http://www.zghlxwxcb.cn/news/detail-449598.html
sudo apt-get -y install gettext
測試命令
基本虛擬測試
gst-launch-1.0 videotestsrc ! autovideosink
gst-launch-1.0 -v videotestsrc pattern=ball name=left ! autovideosink
gst-launch-1.0 audiotestsrc ! autoaudiosink
黑洞fakesink
gst-launch-1.0 videotestsrc ! fakesink
音頻播放
gst-launch-1.0 filesrc location='/home/fuqiang/音樂/audio.mp3' ! decodebin ! audioconvert ! audioresample ! autoaudiosink
視頻播放
gst-launch-1.0 filesrc location='/home/fuqiang/視頻/1080P.mov' ! decodebin ! autovideosink
分離MP4的音視頻并分別播放
gst-launch-1.0 filesrc location='/home/fuqiang/視頻/1080P.mov' ! qtdemux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! autoaudiosink demux.video_0 ! queue ! decodebin ! videoconvert ! videoscale ! autovideosink
gst-launch-1.0 filesrc location='/home/fuqiang/視頻/1080P.mov' ! qtdemux name=demux demux.video_0 ! queue ! decodebin ! videoconvert ! videoscale ! autovideosink
視頻播放并設(shè)置videobox
gst-launch-1.0 filesrc location='/home/fuqiang/視頻/1080P.mov' ! qtdemux name=demux demux.video_0 ! decodebin ! videoscale ! video/x-raw,width=100,height=100 ! videobox border-alpha=0 top=-70 bottom=-70 right=-220 ! videoconvert ! autovideosink
攝像頭采集播放(編碼輸出文件)
gst-launch-1.0 v4l2src ! videoconvert ! autovideosink
gst-launch-1.0 v4l2src ! videoconvert ! x264enc ! filesink location='/home/fuqiang/視頻/xx.mp4'
gst-launch-1.0 v4l2src ! video/x-raw,width=1280,height=720 ! videoconvert ! openh264enc ! h264parse ! flvmux ! filesink location=aaa.flv
采集音頻到文件
gst-launch-1.0 alsasrc ! audioresample ! audioconvert ! wavenc ! filesink location=/home/fuqiang/Videos/xx.wav
mp3轉(zhuǎn)碼ogg
gst-launch-1.0 filesrc location='/home/fuqiang/音樂/audio.mp3' ! decodebin ! audioconvert ! vorbisenc ! oggmux ! filesink location='/home/fuqiang/音樂/audio.ogg'
timeoverlay
gst-launch-1.0 videotestsrc ! timeoverlay ! xvimagesink
到了這里,關(guān)于ubuntu22.04編譯安裝使用gstreamer指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!