Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
Forum Updated to NodeBB v4.3 + New Features

GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed

Scheduled Pinned Locked Moved Japanese
18 Posts 2 Posters 11.6k Views 1 Watching
  • 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.
  • C Offline
    C Offline
    chung.k
    wrote on 5 Nov 2014, 09:24 last edited by
    #4

    videosinkを見つけられず動画が出力されないようです。(デコードはしている)

    このエラーはそういう意味なのか調べて見ます。
    (player:937): GStreamer-CRITICAL **: gst_object_ref_sink: assertion ‘GST_IS_OBJECT (object)’ failed

    1 Reply Last reply
    0
    • C Offline
      C Offline
      chung.k
      wrote on 15 Dec 2014, 05:07 last edited by
      #5

      調べましたが、原因がわかりません。音は出ますが映像表示しません。
      以下、実行時のコンソールの内容です。


      ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/player/player
      QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
      QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

      (player:897): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
      This plugin does not support setParent!
      This plugin does not support setParent!
      This plugin does not support setParent!
      This plugin does not support setParent!
      [INFO] Product Info: i.MX53
      VPU Version: firmware 1.4.48; libvpu: 5.3.2
      MFW_GST_VPU_DECODER_PLUGIN 2.0.3 build on Dec 12 2014 15:46:44.
      BLN_MAD-MMCODECS_AACD_ARM_03.06.00 buildUnhandled fault: external abort on non-linefetch (0x1018) at 0x31f0e054
      on May 9 2011 17:11:11.
      MFW_GST_AAC_PLUGIN 2.0.3 build on Dec 12 2014 15:46:55.

      VPU_DEC: State: Ready to Null
      [--->FINALIZE vpu_dec


      gst-launch でパイプラインを組んで動作させた場合、下記のプラグインが表示されて正常に動作します。
      MFW_GST_V4LSINK_PLUGIN

      ~ # gst-launch filesrc location=720p_30sec.mp4 ! qtdemux name=demuxer demuxer. !
      queue ! mfw_vpudecoder ! mfw_v4lsink demuxer. ! queue ! mfw_aacdecoder ! alsasink

      Qtアプリ がこのプラグインを見つけられないと思うのですが、
      認識させる為に何か必要でしょうか?

      以上、よろしくお願いします。

      1 Reply Last reply
      0
      • C Offline
        C Offline
        chung.k
        wrote on 15 Dec 2014, 05:07 last edited by
        #6

        調べましたが、原因がわかりません。音は出ますが映像表示しません。
        以下、実行時のコンソールの内容です。


        ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/player/player
        QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
        QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

        (player:897): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
        This plugin does not support setParent!
        This plugin does not support setParent!
        This plugin does not support setParent!
        This plugin does not support setParent!
        [INFO] Product Info: i.MX53
        VPU Version: firmware 1.4.48; libvpu: 5.3.2
        MFW_GST_VPU_DECODER_PLUGIN 2.0.3 build on Dec 12 2014 15:46:44.
        BLN_MAD-MMCODECS_AACD_ARM_03.06.00 buildUnhandled fault: external abort on non-linefetch (0x1018) at 0x31f0e054
        on May 9 2011 17:11:11.
        MFW_GST_AAC_PLUGIN 2.0.3 build on Dec 12 2014 15:46:55.

        VPU_DEC: State: Ready to Null
        [--->FINALIZE vpu_dec


        gst-launch でパイプラインを組んで動作させた場合、下記のプラグインが表示されて正常に動作します。
        MFW_GST_V4LSINK_PLUGIN

        ~ # gst-launch filesrc location=720p_30sec.mp4 ! qtdemux name=demuxer demuxer. !
        queue ! mfw_vpudecoder ! mfw_v4lsink demuxer. ! queue ! mfw_aacdecoder ! alsasink

        Qtアプリ がこのプラグインを見つけられないと思うのですが、
        認識させる為に何か必要でしょうか?

        以上、よろしくお願いします。

        1 Reply Last reply
        0
        • C Offline
          C Offline
          chung.k
          wrote on 16 Dec 2014, 05:34 last edited by
          #7

          mediaplayer について調べて見たのですが、
          mediaplayer は、最終的に Gstreamer の playbin を呼び出しているのでしょうか?

          現状、下記のようにパイプラインを組んで実行させた場合、正常に動作するのですが、
          $ gst-launch filesrc location=xxx.mp4 ! qtdemux name=demuxer demuxer. ! queue ! mfw_vpudecoder ! autovideosink demuxer. ! queue ! mfw_aacdecoder ! autoaudiosink

          $ gst-launch playbin uri="file:xxx.mp4" を実行させた場合、パフォーマンスが悪い状況です。(sinkは選択されている)
          videowidget や player と少し状況は違いますが、このあたりに何か原因がないかと考えております。

          playbin を呼び出しているのであれば、ソースを確認したいのですが、どのソースになるでしょうか? qgstreamerplayersession.cpp でしょうか?

          ソース確認後、ソースを変更するか、playbin を作り直すか、どちらかを試そうと思っております。

          以上、よろしくお願いします。

          1 Reply Last reply
          0
          • C Offline
            C Offline
            chung.k
            wrote on 16 Dec 2014, 05:34 last edited by
            #8

            mediaplayer について調べて見たのですが、
            mediaplayer は、最終的に Gstreamer の playbin を呼び出しているのでしょうか?

            現状、下記のようにパイプラインを組んで実行させた場合、正常に動作するのですが、
            $ gst-launch filesrc location=xxx.mp4 ! qtdemux name=demuxer demuxer. ! queue ! mfw_vpudecoder ! autovideosink demuxer. ! queue ! mfw_aacdecoder ! autoaudiosink

            $ gst-launch playbin uri="file:xxx.mp4" を実行させた場合、パフォーマンスが悪い状況です。(sinkは選択されている)
            videowidget や player と少し状況は違いますが、このあたりに何か原因がないかと考えております。

            playbin を呼び出しているのであれば、ソースを確認したいのですが、どのソースになるでしょうか? qgstreamerplayersession.cpp でしょうか?

            ソース確認後、ソースを変更するか、playbin を作り直すか、どちらかを試そうと思っております。

            以上、よろしくお願いします。

            1 Reply Last reply
            0
            • T Offline
              T Offline
              takumiasaki
              wrote on 16 Dec 2014, 07:39 last edited by
              #9

              playbin2 を使用して途中の経路を決定した上で、Qt 内で作成した videosink に繋ぎます。
              @qgstreamerplayersession.cpp: m_playbin = gst_element_factory_make("playbin2", NULL);@

              この辺りは GStreamer 側の問題である可能性が大きいですが、デコーダが出力する画像の形式が Qt の videosink と合わない為に問題が出ることがあります。
              videosink 周りは qtmultimedia/src/gsttools にあります。

              1 Reply Last reply
              0
              • T Offline
                T Offline
                takumiasaki
                wrote on 16 Dec 2014, 07:39 last edited by
                #10

                playbin2 を使用して途中の経路を決定した上で、Qt 内で作成した videosink に繋ぎます。
                @qgstreamerplayersession.cpp: m_playbin = gst_element_factory_make("playbin2", NULL);@

                この辺りは GStreamer 側の問題である可能性が大きいですが、デコーダが出力する画像の形式が Qt の videosink と合わない為に問題が出ることがあります。
                videosink 周りは qtmultimedia/src/gsttools にあります。

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  chung.k
                  wrote on 17 Dec 2014, 00:46 last edited by
                  #11

                  ①Qt 内で作成した videosink が正常にビルドできているか確認したいのですが、gst-inspect コマンドの実行で確認できますか?sink名を教えて下さい。

                  ②playbin2 を使用して最後(videosink)まで経路を決定させる事は可能ですか?

                  以上、よろしくお願いします。

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    chung.k
                    wrote on 17 Dec 2014, 00:46 last edited by
                    #12

                    ①Qt 内で作成した videosink が正常にビルドできているか確認したいのですが、gst-inspect コマンドの実行で確認できますか?sink名を教えて下さい。

                    ②playbin2 を使用して最後(videosink)まで経路を決定させる事は可能ですか?

                    以上、よろしくお願いします。

                    1 Reply Last reply
                    0
                    • C Offline
                      C Offline
                      chung.k
                      wrote on 17 Dec 2014, 02:43 last edited by
                      #13

                      Qt で fakesink に繋げられているようです。
                      Qt の videosink がビルドできていなかったり、形式が合わない場合、fakesink に繋げられるでしょうか?
                      形式は、NV12 です。

                      以上、よろしくお願いします。

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        chung.k
                        wrote on 17 Dec 2014, 02:43 last edited by
                        #14

                        Qt で fakesink に繋げられているようです。
                        Qt の videosink がビルドできていなかったり、形式が合わない場合、fakesink に繋げられるでしょうか?
                        形式は、NV12 です。

                        以上、よろしくお願いします。

                        1 Reply Last reply
                        0
                        • T Offline
                          T Offline
                          takumiasaki
                          wrote on 22 Dec 2014, 11:15 last edited by
                          #15
                          1. Qt内のvideosinkはQt Multimediaのプラグイン内で作成されるもので、GStreamerの環境にインストールされるものではありません。そのため gst-inspect 等の Qt Multimedia を使用しないコマンドからは確認できません。

                          GStreamer内のクラス名は "QVideoSurfaceGstSink" になるはずです。

                          1. 質問の意図を正確に把握しているかは不明ですが、
                            GStreamerの各プラグインがその情報も含めて正しくインストールされている場合、playbin2は最後までその経路をちゃんと計算できるはずです。
                            これは通常 gst-launch で playbin2 だけを指定して確認できます。

                          Qtではplaybin2で計算した後にvideosinkを置き換えています。(入力系も置き合える場合もあり得ます)
                          この置き換えを行わないようにするには qtmultimedia の変更が必要です。

                          1. fakesink について
                            互いに形式のハンドシェークは行っていますが、それがうまくいかない場合は接続できずに映像が出力できないような場合があり得ます。
                            エラーメッセージが出たかなどは覚えていませんが GST_DEBUG 環境変数などを用いて確認することは出来たと思います。GStreamer のデバッグ方法を調べてみてください。

                          Qt 側で対応している形式については qtmultimedia/src/gsttools/qvideosurfacegstsink.cpp の QVideoSurfaceGstSink::get_caps() を見てみてください。

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            takumiasaki
                            wrote on 22 Dec 2014, 11:15 last edited by
                            #16
                            1. Qt内のvideosinkはQt Multimediaのプラグイン内で作成されるもので、GStreamerの環境にインストールされるものではありません。そのため gst-inspect 等の Qt Multimedia を使用しないコマンドからは確認できません。

                            GStreamer内のクラス名は "QVideoSurfaceGstSink" になるはずです。

                            1. 質問の意図を正確に把握しているかは不明ですが、
                              GStreamerの各プラグインがその情報も含めて正しくインストールされている場合、playbin2は最後までその経路をちゃんと計算できるはずです。
                              これは通常 gst-launch で playbin2 だけを指定して確認できます。

                            Qtではplaybin2で計算した後にvideosinkを置き換えています。(入力系も置き合える場合もあり得ます)
                            この置き換えを行わないようにするには qtmultimedia の変更が必要です。

                            1. fakesink について
                              互いに形式のハンドシェークは行っていますが、それがうまくいかない場合は接続できずに映像が出力できないような場合があり得ます。
                              エラーメッセージが出たかなどは覚えていませんが GST_DEBUG 環境変数などを用いて確認することは出来たと思います。GStreamer のデバッグ方法を調べてみてください。

                            Qt 側で対応している形式については qtmultimedia/src/gsttools/qvideosurfacegstsink.cpp の QVideoSurfaceGstSink::get_caps() を見てみてください。

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              chung.k
                              wrote on 24 Dec 2014, 05:56 last edited by
                              #17

                              Qtではplaybin2で計算した後にvideosinkを置き換えています。

                              正しく置換えられず?fakesink が繋がれているようなのですが、
                              置換え処理は、QGstreamerPlayerSession::setVideoRenderer でしょうか?

                              サンプルのvideowidget起動時の出力です。再生後もfakesinkのままです。

                              ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/videowidget/videowidget
                              QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
                              QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
                              void QGstreamerPlayerSession::setVideoRenderer(QObject*)

                              (videowidget:985): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
                              Set video output: QGstreamerVideoWidgetControl(0xd2668)
                              Current sink: fakesink0 0xba568 pending: 0x0 new sink: fakesink0 0xba568
                              Video sink has not changed, skip video output reconfiguration
                              This plugin does not support setParent!
                              This plugin does not support setParent!
                               :

                              Qt sink側で対応している形式はこのテーブルでしょうか?

                              static const YuvFormat qt_yuvColorLookup[] =
                              {
                              { QVideoFrame::Format_YUV420P, GST_MAKE_FOURCC('I','4','2','0'), 8 },
                              { QVideoFrame::Format_YV12, GST_MAKE_FOURCC('Y','V','1','2'), 8 },
                              { QVideoFrame::Format_UYVY, GST_MAKE_FOURCC('U','Y','V','Y'), 16 },
                              { QVideoFrame::Format_YUYV, GST_MAKE_FOURCC('Y','U','Y','2'), 16 },
                              { QVideoFrame::Format_NV12, GST_MAKE_FOURCC('N','V','1','2'), 8 },
                              { QVideoFrame::Format_NV21, GST_MAKE_FOURCC('N','V','2','1'), 8 },
                              { QVideoFrame::Format_AYUV444, GST_MAKE_FOURCC('A','Y','U','V'), 32 }
                              };

                              videowidget を起動/再生させても、get_caps()は呼ばれていないようなのですが、
                              何か呼び出すコマンドのようなものがありますか?

                              以上、よろしくお願いします。

                              1 Reply Last reply
                              0
                              • C Offline
                                C Offline
                                chung.k
                                wrote on 24 Dec 2014, 05:56 last edited by
                                #18

                                Qtではplaybin2で計算した後にvideosinkを置き換えています。

                                正しく置換えられず?fakesink が繋がれているようなのですが、
                                置換え処理は、QGstreamerPlayerSession::setVideoRenderer でしょうか?

                                サンプルのvideowidget起動時の出力です。再生後もfakesinkのままです。

                                ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/videowidget/videowidget
                                QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
                                QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
                                void QGstreamerPlayerSession::setVideoRenderer(QObject*)

                                (videowidget:985): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
                                Set video output: QGstreamerVideoWidgetControl(0xd2668)
                                Current sink: fakesink0 0xba568 pending: 0x0 new sink: fakesink0 0xba568
                                Video sink has not changed, skip video output reconfiguration
                                This plugin does not support setParent!
                                This plugin does not support setParent!
                                 :

                                Qt sink側で対応している形式はこのテーブルでしょうか?

                                static const YuvFormat qt_yuvColorLookup[] =
                                {
                                { QVideoFrame::Format_YUV420P, GST_MAKE_FOURCC('I','4','2','0'), 8 },
                                { QVideoFrame::Format_YV12, GST_MAKE_FOURCC('Y','V','1','2'), 8 },
                                { QVideoFrame::Format_UYVY, GST_MAKE_FOURCC('U','Y','V','Y'), 16 },
                                { QVideoFrame::Format_YUYV, GST_MAKE_FOURCC('Y','U','Y','2'), 16 },
                                { QVideoFrame::Format_NV12, GST_MAKE_FOURCC('N','V','1','2'), 8 },
                                { QVideoFrame::Format_NV21, GST_MAKE_FOURCC('N','V','2','1'), 8 },
                                { QVideoFrame::Format_AYUV444, GST_MAKE_FOURCC('A','Y','U','V'), 32 }
                                };

                                videowidget を起動/再生させても、get_caps()は呼ばれていないようなのですが、
                                何か呼び出すコマンドのようなものがありますか?

                                以上、よろしくお願いします。

                                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