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 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

                            15/18

                            22 Dec 2014, 11:15

                            • Login

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