Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. [Solved] Qt5 media service について
Forum Update on Monday, May 27th 2025

[Solved] Qt5 media service について

Scheduled Pinned Locked Moved Japanese
29 Posts 2 Posters 21.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    takumiasaki
    wrote on last edited by
    #15

    @main.cpp:44:21: error: gst/gst.h: No such file or directory@

    とあるので、インストールしたGStreamerのヘッダーファイルが見つけられていないようです。

    /home/vaio/workspace/rootfs/build/rootfs/usr/include/gst/gst.h はありますか。
    GStreamer のヘッダーファイルをそこに置いて qmake を再度実行してください。

    1 Reply Last reply
    0
    • C Offline
      C Offline
      chung.k
      wrote on last edited by
      #16

      /home/vaio/workspace/rootfs/build/rootfs/usr/include/gstreamer-0.10/gst になっていましたので、ディレクトリ構成を
      /home/vaio/workspace/rootfs/build/rootfs/usr/include/gst にしました。
      が、結果は同じでした。
      gst には、gst.h や、多くの gstxxx.h があります。

      ① libは、
      /home/vaio/workspace/rootfs/build/rootfs/usr/lib/gstreamer-0.10 になっていますが、
      /home/vaio/workspace/rootfs/build/rootfs/usr/lib にする必要がありますか?

      ② .qmake.cache が生成されるとき、alsa 以外は、no になっています。
      Info: creating cache file /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/.qmake.cache
      Checking for openal... no
      Checking for alsa... yes
      Checking for pulseaudio... no
      Checking for gstreamer... no
      Checking for resourcepolicy... no
      Checking for gpu_vivante... no

      これは、まだ環境が正しくないという事ですね?
      ここで、Checking for gstreamer... yes になるのが正解?

      ③ .qmake.cache を削除するタイミングがわからないのですが、make前に常にするのでしょうか?

      よろしくお願いします。

      1 Reply Last reply
      0
      • T Offline
        T Offline
        takumiasaki
        wrote on last edited by
        #17

        config.log は変化していると思います。チェックしてみてください。
        qt-everywhere-opensource-src-5.3.1/qtmultimedia/config.tests/gstreamer
        に Makefile が出来ていると思うので、そこでmakeが成功すれば環境が整ったということになります。

        1. 設定次第ですが、usr/lib 以下にある方がリンクは通りやすいと思います。

        2. openal や pulseaudio などは no でかまいませんが、gstreamer が yes になる必要があります。 qtmultimedia/config.tests/gstreamer での make が成功する場合、yes になります。

        3. qmake の実行前に消してください。make 時には必要なファイルなので消さないでください。

        1 Reply Last reply
        0
        • C Offline
          C Offline
          chung.k
          wrote on last edited by
          #18

          qtmultimedia/config.tests/gstreamer で make しました。
          足りないファイルがいろいろあるようです。
          glib.h glib-object.h などが必要ですが、
          これらは、Glib のソースをダウンロードし、ビルドしてインストールすればいいですか?

          In file included from main.cpp:44:
          /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gst.h:27:18: error: glib.h: No such file or directory
          In file included from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gst.h:31,
          from main.cpp:44:
          /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstenumtypes.h:7:25: error: glib-object.h: No such file or directory
          In file included from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstelement.h:55,
          from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstbin.h:27,
          from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gst.h:34,
          from main.cpp:44:
          /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstconfig.h:197:28: error: libxml/parser.h: No such file or directory
          In file included from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstelementfactory.h:33,
          from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstelement.h:60,
          from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gstbin.h:27,
          from /home/chung/workspace/rootfs/build/rootfs/usr/include/gst/gst.h:34,
          from main.cpp:44:

          1 Reply Last reply
          0
          • T Offline
            T Offline
            takumiasaki
            wrote on last edited by
            #19

            それらのファイルは GStreamer のビルド時に使用しているはずです。
            新たなインストールは要らないと思いますが、その時に利用したものを rootfs にコピーしてみてください。

            1 Reply Last reply
            0
            • C Offline
              C Offline
              chung.k
              wrote on last edited by
              #20

              glib関連のパスが通ってなかったようです。
              必要なファイルをrootfsにおいてqmake したところ
              gstreamer... yes になりました。

              Info: creating cache file /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/.qmake.cache
              Checking for openal... no
              Checking for alsa... yes
              Checking for pulseaudio... no
              Checking for gstreamer... yes
              Checking for gstreamer_photography... no
              Checking for gstreamer_encodingprofiles... no
              Checking for gstreamer_appsrc... yes
              Checking for resourcepolicy... no
              Checking for gpu_vivante... no

              これでビルドしなおしてみます。
              ありがとうございました。

              1 Reply Last reply
              0
              • C Offline
                C Offline
                chung.k
                wrote on last edited by
                #21

                gstreamer関連は全て yes になりました。

                Info: creating cache file /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/.qmake.cache
                Checking for openal... no
                Checking for alsa... yes
                Checking for pulseaudio... no
                Checking for gstreamer... yes
                Checking for gstreamer_photography... yes
                Checking for gstreamer_encodingprofiles... yes
                Checking for gstreamer_appsrc... yes
                Checking for resourcepolicy... no
                Checking for gpu_vivante... no

                ビルドすると多くのエラーがでますが、これはライブラリが無いというエラーでしょうか?
                qtmultimedia$ rm .qmake.cache
                qtmultimedia$ ../qtbase/bin/qmake -r
                qtmultimedia$ make
                 :
                rm -f libgstaudiodecoder.so
                /usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-cortex_a8-linux-gnueabi-g++ -Wl,-rpath-link,/home/chung/workspace/rootfs/build/rootfs/usr/lib -Wl,--no-undefined -Wl,-O1 -Wl,-rpath,/usr/local/QtEmbedded-5.3.1/lib -Wl,-rpath-link,/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/lib -shared -o libgstaudiodecoder.so .obj/qgstreameraudiodecodercontrol.o .obj/qgstreameraudiodecoderservice.o .obj/qgstreameraudiodecodersession.o .obj/qgstreameraudiodecoderserviceplugin.o .obj/moc_qgstreameraudiodecodercontrol.o .obj/moc_qgstreameraudiodecoderservice.o .obj/moc_qgstreameraudiodecodersession.o .obj/moc_qgstreameraudiodecoderserviceplugin.o -L/home/chung/workspace/rootfs/build/rootfs/usr/lib -lqgsttools_p -lgstapp-0.10 -L/home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/lib -lQt5MultimediaWidgets -L/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/lib -lQt5Multimedia -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGLESv2 -lEGL -lpthread
                .obj/qgstreameraudiodecodersession.o: In function QGstreamerAudioDecoderSession::updateDuration()': qgstreameraudiodecodersession.cpp:(.text+0xc8): undefined reference to gst_element_query_duration'
                .obj/qgstreameraudiodecodersession.o: In function QGstreamerAudioDecoderSession::removeAppSink()': qgstreameraudiodecodersession.cpp:(.text+0x1c0): undefined reference to gst_element_get_type'
                qgstreameraudiodecodersession.cpp:(.text+0x1cc): undefined reference to g_type_check_instance_cast'  : qgstreameraudiodecoderserviceplugin.cpp:(.text+0xe54): undefined reference to gst_type_find_factory_get_type'
                collect2: ld returned 1 exit status
                make[4]: *** [../../../../plugins/mediaservice/libgstaudiodecoder.so] エラー 1
                make[4]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins/gstreamer/audiodecoder' から出ます make[3]: *** [sub-audiodecoder-make_first] エラー 2 make[3]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins/gstreamer' から出ます
                make[2]: *** [sub-gstreamer-make_first] エラー 2
                make[2]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins' から出ます make[1]: *** [sub-plugins-make_first] エラー 2 make[1]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src' から出ます
                make: *** [sub-src-make_first] エラー 2

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  takumiasaki
                  wrote on last edited by
                  #22

                  リンクするライブラリが少ないようです。

                  デスクトップ用のビルド時のログですが、gstreamer関連で他にも多くのライブラリをリンクしています。

                  @g++ -Wl,--no-undefined -Wl,-O1 -Wl,-rpath,/opt/qt/5.3/lib -Wl,-rpath-link,/home/asaki/qt-project/build/qt5-build-5.3/qtbase/lib -shared -o libgstaudiodecoder.so .obj/qgstreameraudiodecodercontrol.o .obj/qgstreameraudiodecoderservice.o .obj/qgstreameraudiodecodersession.o .obj/qgstreameraudiodecoderserviceplugin.o .obj/moc_qgstreameraudiodecodercontrol.o .obj/moc_qgstreameraudiodecoderservice.o .obj/moc_qgstreameraudiodecodersession.o .obj/moc_qgstreameraudiodecoderserviceplugin.o -lqgsttools_p -lgstaudio-0.10 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstpbutils-0.10 -pthread -lgstapp-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lglib-2.0 -L/home/asaki/qt-project/build/qt5-build-5.3/qtmultimedia/lib -lQt5MultimediaWidgets -L/home/asaki/qt-project/build/qt5-build-5.3/qtbase/lib -lQt5Multimedia -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread@

                  qmake 時にこれらのライブラリが決定されると思いますので、一度 qtmultimedia 以下の Makefile をすべて削除して qmake からやり直してみてはどうでしょうか。

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    chung.k
                    wrote on last edited by
                    #23

                    ありがとうございます。

                    qmake 時にこれらのライブラリが決定されると思いますので、一度 qtmultimedia 以下の Makefile をすべて削除して qmake からやり直してみてはどうでしょうか。

                    やってみましたが、下記のライブラリーは追加されませんでした。
                    -lqgsttools_p -lgstaudio-0.10 -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstpbutils-0.10 -pthread -lgstapp-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lglib-2.0

                    これらは、環境が整っていればqmake時にMakefileに自動生成されるものでしょうか?
                    それとも手動でオプションとして追加するのもでしょうか?

                    自動生成されなかったので、手動で追加したところ
                    下記の3つは、エラーにならずビルドできました。
                    audiodecoder mediacapture mediaplayer

                    最後の camerabin で、"gst_date_time_new_local_time"でエラーになりました。

                    /usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/bin/arm-cortex_a8-linux-gnueabi-g++ -c -pipe -mfloat-abi=softfp -O2 -O2 -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -Wno-psabi -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DHAVE_WIDGETS -DHAVE_GST_APPSRC -DHAVE_GST_PHOTOGRAPHY -DGST_USE_UNSTABLE_API -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_MULTIMEDIAWIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/mkspecs/devices/linux-imx53qsb-g++ -I. -I. -I/src/multimedia -Icamerabin -I../../../../include/QtMultimediaWidgets/5.3.1 -I../../../../include/QtMultimediaWidgets/5.3.1/QtMultimediaWidgets -I../../../../include -I../../../../include/QtMultimediaWidgets -I../../../../include/QtMultimedia/5.3.1 -I../../../../include/QtMultimedia/5.3.1/QtMultimedia -I../../../../include/QtMultimedia -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtWidgets -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtCore/5.3.1 -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtCore/5.3.1/QtCore -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtNetwork -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtGui -I/home/chung/qt-everywhere-opensource-src-5.3.1/qtbase/include/QtCore -I.moc -I/home/chung/workspace/rootfs/build/rootfs/usr/include -o .obj/camerabinsession.o camerabinsession.cpp
                    camerabinsession.cpp: In member function 'void CameraBinSession::setMetaData(const QMap<QByteArray, QVariant>&)':
                    camerabinsession.cpp:802: error: 'gst_date_time_new_local_time' was not declared in this scope
                    make[4]: *** [.obj/camerabinsession.o] エラー 1
                    make[4]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins/gstreamer/camerabin' から出ます make[3]: *** [sub-camerabin-make_first] エラー 2 make[3]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins/gstreamer' から出ます
                    make[2]: *** [sub-gstreamer-make_first] エラー 2
                    make[2]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src/plugins' から出ます make[1]: *** [sub-plugins-make_first] エラー 2 make[1]: ディレクトリ /home/chung/qt-everywhere-opensource-src-5.3.1/qtmultimedia/src' から出ます
                    make: *** [sub-src-make_first] エラー 2

                    調べたところ、gstreamer.ffi に含まれているようです。
                    このgstreamer.ffi はどのように指定すればよいでしょうか?

                    よろしくお願いします。

                    1 Reply Last reply
                    0
                    • C Offline
                      C Offline
                      chung.k
                      wrote on last edited by
                      #24

                      gst/gstdatetime.h に定義されていました。
                      camerabinsession.cpp に、#include <gst/gstdatetime.h> を追加したらエラーがとれました。
                      ありがとうございました。

                      1 Reply Last reply
                      0
                      • T Offline
                        T Offline
                        takumiasaki
                        wrote on last edited by
                        #25

                        解決したようなので、こちらだけ。

                        これらは、環境が整っていればqmake時にMakefileに自動生成されるものでしょうか?
                        それとも手動でオプションとして追加するのもでしょうか?

                        環境によります。pkg-configを使ってビルドする場合にはその情報を元に自動的に追加されるはずです。
                        そうでは無い場合は手動で追加が必要なようです。

                        手動で追加する場合、qtmultimedia/src/plugins/gstreamer/common.pri を編集して LIBS に追加するのが良さそうです。

                        ps. 解決したと思われるやりとりは Subject を "[Solved]" で始まるように編集してもらえるとどれに返信が必要かが分かりやすいので助かります。

                        1 Reply Last reply
                        0
                        • C Offline
                          C Offline
                          chung.k
                          wrote on last edited by
                          #26

                          ありがとうございました。

                          ~/qtmultimedia$ env PKG_CONFIG_PATH=/usr/local/DigiEL-5.9/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/sysroot/usr/lib/pkgconfig ../qtbase/bin/qmake -r

                          qmake 時に、PKG_CONFIG_PATH を指定する事で自動的に追加されました。

                          PKG_CONFIG_PATH を指定するタイミングですが、
                          ./configure のオプションの-pkg-config と違いがありますか?

                          また、一般的には、export PKG_CONFIG_PATH=・・・ で環境変数を設定しておくものでしょうか?

                          よろしくお願いします。

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            takumiasaki
                            wrote on last edited by
                            #27

                            configureで-pkg-configを指定する場合、クロスコンパイルではsysrootの指定などを確認した上でpkg-configが有効になります。適切に構成されたsysrootの場合は問題はありませんが、自分でビルドしたライブラリなどがあるとsysroot内のパスでは無く、ホストの絶対パスで .pc ファイルが生成されていたりして、うまく動かないこともあります。

                            クロスコンパイルでpkg-configを使用する場合、うまく設定しないとホストの環境とターゲットの環境が混ざってしまうため注意が必要です。
                            通常クロスコンパイルでは PKG_CONFIG_PATH 以外に PKG_CONFIG_LIBDIR や PKG_CONFIG_SYSROOT_DIR を組み合わせて使うと思います。

                            sysrootの作り方なども含めて総合的に検討するべきことなので、pkg-configを使わないケースも含めていろいろな考え方があります。

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              chung.k
                              wrote on last edited by
                              #28

                              [Solved]
                              ありがとうございます。
                              いろいろ試して見ます。

                              1 Reply Last reply
                              0
                              • C Offline
                                C Offline
                                chung.k
                                wrote on last edited by
                                #29

                                [Solved]
                                gstreamer関連のライブラリが全て生成されました。ありがとうございます。
                                *.pcファイルの"prefix=" の部分が/usr で始まっていたり、/home/user/install/usr で始まっていたりバラバラだった為、正しくインストールが出来ていませんでした。
                                *.pcの"prefix="を編集しながらビルドを進める事(alsa→pa→gst→Qt)で解決できました。

                                1 Reply Last reply
                                0

                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved