ubuntu下Qt5無法啓用攝像頭的問題

最近的項目需要使用設備的攝像頭拍照,原來的方案是使用opencv,因爲是使用Qt開發,就計劃使用Multimedia模塊簡化項目的庫依賴,參考官方示例:

https://doc.qt.io/qt-5/qtmultimedia-multimediawidgets-camera-example.html

開發環境是xubuntu 16.04.5,編譯完運行示例程序輸出:

defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.camera"

接着示例程序報錯:

camera service is missing

搜索後發現這篇文章:

https://forum.qt.io/topic/57924/camera-service-is-missing/4

在終端中設置:

export QT_DEBUG_PLUGINS=1

再次運行程序,觀察輸出:

Found metadata in lib /mnt/data/dev_libs/qt_5.5.1/5.5/gcc/plugins/mediaservice/libqtmedia_audioengine.so, metadata=
{
    "IID": "org.qt-project.qt.mediaserviceproviderfactory/5.0",
    "MetaData": {
        "Keys": [
            "audiocapture"
        ],
        "Services": [
            "org.qt-project.qt.audiosource"
        ]
    },
    "className": "AudioCaptureServicePlugin",
    "debug": false,
    "version": 328961
}
 

通過查看Qt的安裝目錄/mnt/data/dev_libs/qt_5.5.1/5.5/gcc/plugins/mediaservice/,裏面只有libqtmedia_audioengine.so,看起來缺少視頻相關插件(這個很奇怪,是使用官方的程序安裝的),一番搜索這樣解決:

1.安裝本版本的多媒體插件,比如我安裝的是Qt5 

sudo apt-get install libqt5multimedia5-plugins

2. 將安裝後的多媒體插件鏈接庫copy到Qt的安裝目錄,比如我的系統是這樣:

cp   /usr/lib/i386-linux-gnu/qt5/plugins/mediaservice/* /mnt/data/dev_libs/qt_5.5.1/5.5/gcc/plugins/mediaservice/

如果不清楚第一步安裝的文件到哪裏了,可以通過 find /usr/lib -name libqtmedia_* 來定位,通常不會跑出/usr/lib這個目錄,要是系統安裝了dpkg,可以使用 dpkg -L libqt5multimedia5-plugins,比如在我的環境輸出:

saga@zzz:/$ dpkg -L libqt5multimedia5-plugins 
/.
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/qt5
/usr/lib/i386-linux-gnu/qt5/plugins
/usr/lib/i386-linux-gnu/qt5/plugins/playlistformats
/usr/lib/i386-linux-gnu/qt5/plugins/playlistformats/libqtmultimedia_m3u.so
/usr/lib/i386-linux-gnu/qt5/plugins/audio
/usr/lib/i386-linux-gnu/qt5/plugins/audio/libqtaudio_alsa.so
/usr/lib/i386-linux-gnu/qt5/plugins/audio/libqtmedia_pulse.so
/usr/lib/i386-linux-gnu/qt5/plugins/mediaservice
/usr/lib/i386-linux-gnu/qt5/plugins/mediaservice/libgstcamerabin.so
/usr/lib/i386-linux-gnu/qt5/plugins/mediaservice/libgstmediacapture.so
/usr/lib/i386-linux-gnu/qt5/plugins/mediaservice/libgstmediaplayer.so
/usr/lib/i386-linux-gnu/qt5/plugins/mediaservice/libgstaudiodecoder.so
/usr/share
/usr/share/doc
/usr/share/doc/libqt5multimedia5-plugins
/usr/share/doc/libqt5multimedia5-plugins/copyright
/usr/share/doc/libqt5multimedia5-plugins/changelog.Debian.gz
 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章