This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM4378:使用 gstreamer 播放视频文件

Guru**** 2894990 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1640964/am4378-video-file-playing-with-gstreamer

器件型号: AM4378

您好、

我已在基于 AM437x-gp-EVM 的定制 AM437x 板上移植了 Linux kerenl。

我正在尝试使用 GStreamer 播放视频。 我使用 SDK 文件系统中的示例视频对其进行了测试。

当我运行:'gst-launch-1.0 playbin uri=file://www.cl'时/usr/share/ti/video/TearOfSteel-AV-Short-720x406.mp4 ,它似乎在 Wayland 上播放,并且播放流畅。

然而,我想在没有 Wayland 的情况下玩它,所以当我运行:'gst-launch-1.0 filesrc location=/usr/share/ti/video/TearOfSteel-AV-Short-720x406.mp4 ! 汤底鱼! kmssink '时、将打印以下日志。

Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: Could not open DRM module (NULL)
Additional debug info:
../gst-plugins-bad-1.20.7/sys/kms/gstkmssink.c(850): gst_kms_sink_start (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
reason: No such file or directory (2)
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../gstreamer-1.20.7/libs/gst/base/gstbasesink.c(5878): gst_base_sink_change_state (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
Failed to start
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...


此问题是否与 Wayland 有关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您能否在目标板上进行 GST-CHECK 以查看是否存在 kmssink?

    此外、如果不是、您可能必须下载 gst-plugins-bad、以便可以使用 kmssink。

    此致

    Suren

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    输入“GST-CHECK-1.0“后、会打印以下日志。

    accurip:  accurip: AccurateRip(TM) CRC element
    adder:  adder: Adder
    adpcmdec:  adpcmdec: ADPCM decoder
    adpcmenc:  adpcmenc: ADPCM encoder
    aes:  aesdec: aesdec
    aes:  aesenc: aesenc
    aiff:  aiffmux: AIFF audio muxer
    aiff:  aiffparse: AIFF audio demuxer
    alaw:  alawdec: A Law audio decoder
    alaw:  alawenc: A Law audio encoder
    alpha:  alpha: Alpha filter
    alphacolor:  alphacolor: Alpha color filter
    alsa:  alsadeviceprovider (GstDeviceProviderFactory)
    alsa:  alsamidisrc: AlsaMidi Source
    alsa:  alsasink: Audio sink (ALSA)
    alsa:  alsasrc: Audio source (ALSA)
    apetag:  apedemux: APE tag demuxer
    app:  appsink: AppSink
    app:  appsrc: AppSrc
    asfmux:  asfmux: ASF muxer
    asfmux:  asfparse: ASF parser
    asfmux:  rtpasfpay: RTP ASF payloader
    audiobuffersplit:  audiobuffersplit: Audio Buffer Split
    audioconvert:  audioconvert: Audio converter
    audiofx:  audioamplify: Audio amplifier
    audiofx:  audiochebband: Band pass & band reject filter
    audiofx:  audiocheblimit: Low pass & high pass filter
    audiofx:  audiodynamic: Dynamic range controller
    audiofx:  audioecho: Audio echo
    audiofx:  audiofirfilter: Audio FIR filter
    audiofx:  audioiirfilter: Audio IIR filter
    audiofx:  audioinvert: Audio inversion
    audiofx:  audiokaraoke: AudioKaraoke
    audiofx:  audiopanorama: Stereo positioning
    audiofx:  audiowsincband: Band pass & band reject filter
    audiofx:  audiowsinclimit: Low pass & high pass filter
    audiofx:  scaletempo: Scaletempo
    audiofx:  stereo: Stereo effect
    :
    alsa:  alsasrc: Audio source (ALSA)
    apetag:  apedemux: APE tag demuxer
    app:  appsink: AppSink
    app:  appsrc: AppSrc
    asfmux:  asfmux: ASF muxer
    asfmux:  asfparse: ASF parser
    asfmux:  rtpasfpay: RTP ASF payloader
    audiobuffersplit:  audiobuffersplit: Audio Buffer Split
    audioconvert:  audioconvert: Audio converter
    audiofx:  audioamplify: Audio amplifier
    audiofx:  audiochebband: Band pass & band reject filter
    audiofx:  audiocheblimit: Low pass & high pass filter
    audiofx:  audiodynamic: Dynamic range controller
    audiofx:  audioecho: Audio echo
    audiofx:  audiofirfilter: Audio FIR filter
    audiofx:  audioiirfilter: Audio IIR filter
    audiofx:  audioinvert: Audio inversion
    audiofx:  audiokaraoke: AudioKaraoke
    audiofx:  audiopanorama: Stereo positioning
    audiofx:  audiowsincband: Band pass & band reject filter
    audiofx:  audiowsinclimit: Low pass & high pass filter
    audiofx:  scaletempo: Scaletempo
    audiofx:  stereo: Stereo effect
    

    我认为 GST 检查已经安装。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kim:

    想知道运行 GST-CHECK 时 kmssink 是否显示。

    如果不是、您需要在默认 SDK 映像中包含 gstreamer bad-plugins 才能看到它。  

    此致

    Suren

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您提到的内容已经安装。

    当我运行时:  

    gst-launch-1.0 filesrc location=/usr/share/ti/video/TearOfSteel-AV-Short-720x406.mp4! 汤底鱼! 视频转换! kmssink driver-name=omapdrm connector-id=52 plane-id=32

    这个问题被激怒了。

    我还有一个问题。

    我尝试在 Qt 中播放视频。  

    当我运行: gst-launch-1.0 playbin uri=file:///usr/share/ti/video/TearOfSteel-AV-Short-720x406.mp4 时,视频播放最流畅。

    在 Qt 中玩它的最佳方式是什么? 我在 eglfs 平台上运行 Qt 应用程序。 请建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kim:

    很高兴你能够得到它与 kmssink 工作.

    对于使用 QT、您是否已查看 QMediaplayer 和 QVideowidget 类的实施和验证。

    简单示例 QT 6 方法如下所示:

    #include <QApplication>
    #include <QMediaPlayer>
    #include <QVideoWidget>
    #include <QAudioOutput>
    
    int main(int argc, char *argv[]) {
        QApplication app(argc, argv);
        
        QVideoWidget *videoWidget = new QVideoWidget;
        QMediaPlayer *player = new QMediaPlayer;
        QAudioOutput *audioOutput = new QAudioOutput;
        
        player->setVideoOutput(videoWidget);
        player->setAudioOutput(audioOutput);
        player->setSource(QUrl::fromLocalFile("/path/to/video.mp4"));
        
        videoWidget->resize(800, 600);
        videoWidget->show();
        player->play();
        
        return app.exec();
    }

      如需更多信息、请参阅:doc.qt.io/.../qvideowidget.html。

    此致

    Suren