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.

[参考译文] Linux/AM5728:解码 JPEG 时出现 GStreamer 插件错误

Guru**** 2589275 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/590337/linux-am5728-gstreamer-plugin-error-while-decoding-jpeg

器件型号:AM5728

工具/软件:Linux

您好!

我正在使用 SDK 03.02.00.05、并尝试使用 GStreamer 流水线解码 JPEG 流、并遇到以下错误。

错误:管道不想暂停。
./git/libdce_linux.c:70:DCE_init 错误:OmapDrm_FD >0错误 val -7将流水线设置为 NULL。

我在这个上面遗漏了什么吗?

谢谢、

Nirav

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

    您使用的是什么管道?
    请查看本指南:
    processors.wiki.ti.com/.../Processor_Training:_Multimedia

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我正在使用以下管道。
    gst-launch-1.0文件 rc location=testmjpeg.mov! qtdemux name=Demux Demux.video_0! 排队! jpegparse! 极好的体验! fakesink

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

    您能否查看我上一篇文章中的指南、尤其是有关 playbin 的示例?
    playbin 元素将自动识别并播放该文件。
    如果您尝试使用 playbin 来添加-v -gst-debug=3以获得更多调试打印、我也建议您这样做。

    请告诉我结果。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    以下是启用调试时显示的结果。


    root@am57xx-EVM:~# gst_debug=3 gst-launch-1.0文件 rc location=testmjpeg.mov! qtdemux name=Demux Demux.video_0! 排队! jpegparse! 极好的体验! fakesink
    正在将管道设置为暂停...
    0:00:00.200158009 1016 0x74e0错误 ducati gstducatividdec:c:138:engine_open: DCE_init()失败
    0:00:00.200236088 1016 0x74e0错误 ducati gstducatividdec:1634:gst_ducati_vidd_dec_change_state: 无法打开
    错误:管道不想暂停。
    /git/libdce_linux.c:70: DC3_init 错误:失败的 OmapDrm_FD >0错误 val -7将流水线设置为 NULL ...
    正在释放管道...
    root@am57xx-EVM:~#

    root@am57xx-EVM:~ gst_debug=3 gst-launch-1.0 -v playbin UI=file:///home/root/testmjpeg.mov video-sink=kmssink audio-sink=alsasink
    正在将管道设置为暂停...
    [748.907860] omapdss_hdmi5 58040000编码器:ASOC:无法打开接口58040000。编码器:-1
    0:00:00.102107949 1032 0x13fc80警告 ALSA PCM_HW.c:1590:snd_PCM_HW_open:alsalib 错误:open '/dev/snd/pcmC0D0p 失败(-1):不允许操作
    0:00:00.102236620 1032 0x13fc80警告 alsa gstalsasink.c:846:gst_alsasink_open: 错误-1 (不允许操作)调用 snd_pcm_open (&alsa->handle、alsa->device、snd_pcm_stream_replaying、snd_pcm_nonblock)
    0:00:00.102301524 1032 0x13fc80警告 ALSA gstalsasink.c:863:GST_alsasink_open: 错误:无法打开音频设备进行播放。
    0:00:00.102334872 1032 0x13fc80警告 ALSA gstalsasink.c:863:GST_alsasink_open: 错误:设备“默认”上的回放打开错误:不允许操作
    0:00:00.102513807 1032 0x13fc80错误 playbin gstplaybin2.c:5391:active_group: 无法激活接收器
    错误:管道不想暂停。
    错误:从元素/GstAlsaSink:alsasink0:无法打开音频设备进行回放。
    其他调试信息:
    ./../../gst-plugins-base-1.6.3/ext/alsa/gstalsasink.c (863):gst_alsasink_open ():/GstAlsaSink:alsasink0:
    设备"默认"上的回放打开错误:不允许操作
    正在将管道设置为 NULL ...
    正在释放管道...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请尝试:
    gst_debug=3 gst-launch-1.0 -v playbin UI=file:///home/root/testmjpeg.mov video -sink=kmssink



    gst_debug=3 gst-launch-1.0 -v playbin Uy=file:///home/root/testmjpeg.mov video-sink=kmssink audio-sink=fakesink

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    下面是命令的输出。

    root@am57xx-EVM:~ gst_debug=3 gst-launch-1.0 -v playbin UI=file:///home/root/testmjpeg.mov video-sink=kmsink
    正在将管道设置为暂停...
    0:00:00.089321929 1047 0x13fa80警告 kmssink gstkmssink.c:544:gst_kms_sink_start: 错误:OMAP-DEVICE_NEW 失败
    0:00:00.089530959 1047 0x13fa80错误 playbin gstplaybin2.c:5391:active_group: 无法激活接收器
    错误:管道不想暂停。
    错误:从元素/GstKMSSink:kmssink0: GStreamer 遇到常规资源错误。
    其他调试信息:
    ./../../git/sys/kms/gstkmssink.c (544):gst_kms_sink_start ():/GstKMSSink:kmssink0:
    OMAP-DEVICE_NEW 失败
    /git/libdce_linux.c:70: DC3_init 错误:失败的 OmapDrm_FD >0错误 val -7将流水线设置为 NULL ...


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

    您好!

    很抱歉耽误你的时间。 我在 EVM 上运行了一些测试。
    以下是我的观察结果:
    我使用这些管道来创建 MJPEG 流。

    gst-launch-1.0 videotestsrc num-buffers=100! jpegenc! 真棒! 文件链接位置= 1.mov
    gst-launch-1.0 videotestsrc num-buffers=100! jpegenc! 多部分多路复用! 文件链接位置=2.multipart -v
    在这种情况下、您还可以设置具有分辨率的电容器滤波器。

    以下是日志的一部分:
    /GstPipeline0/GstJpegEnc:jpegenc0.GstPad:接收器:cap ="VIDEO/x-RAW\、\ width\=\(int\) 320\、\ height\=(int\) 240\、\帧速率\=(分数\) 30/1\、\宽幅\=(int\) 20、高宽/像素1、Ibers-string 比率= 1 (x)
    /GstPipeline0/GstJpegEnc:jpegenc0.GstPad:src:cap ="image/jpeg、\ sof-marker\=(int\) 0\、\ width\=(int\) 320\、\ height\=(int\) 240\、\像素纵横比\= 1) 30\(framex)比例1)

    正如您在编码器的输出(src)上看到的、我们有 image/jpeg。


    2.我播放了测试文件:
    gst-launch-1.0 -v 文件 rc location=1.mov! qtdemux! jpegparse! 极好的体验! kmsink
    gs-launch-1.0 playbin uri =文件:///usr/share/ti/video/1.mov video -sink=kmssink

    使用此管道时、仅显示第一个帧:
    gst-launch-1.0 -v -m filesrc location=1.mov! jpegparse! 极好的体验! 想象中的空气清新剂! kmsink

    gst-launch-1.0 -v -m 文件 rc location=2.multipart! 多部分多路复用! jpegparse! 极好的体验! kmsink

    以下是用于解码的日志的一部分:
    /GstPipeline0/GstJpegParse:jpegparse0.GstPad:src:cap ="image/jpeg\、\已解析\=(布尔\) true、\格式\=(string \) I420\、\ width\==(int\) 320\、\ height\=(try\) try\(int\) 240、frate\(frame\) 1)
    /GstPipeline0/GstDucatiJpegDec:ducatijpegdec0.GstPad:src:cap ="VIDEO/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 320\、\ height\=(int\) 240\、\、\(frame\) m\(try\) 1) me/tryboleum= 1
    /GstPipeline0/GstKMSSink:kmssink0.GstPad:SINK:SINK:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ FORMAT\=(STRING\) NV12\、\ width\=(int\) 320\、\ height\=(int\) 240\、\、\ frame\=(try\) m\(try\) m\(traby\) 1)布尔值1)
    /GstPipeline0/GstDucatiJpegDec:ducatijpegdec0.GstPad:灌电流:cap ="image/jpeg、\\=(已解析\) true\、\格式\\(string\) I420\、\宽\\(int\) 320\、\高度= 1) 240 (布尔值/帧速率1)

    jpegparser 解析 image/jpeg。 在 ducatijpegdec 的输入(灌电流)上、我们有 image/jpeg。 在输出(src)原始 NV12上。

    我没有发现问题。

    例如、我建议您检查是否能够在使用 gstreamer 或 VLC 的 PC 上播放测试文件?

    希望这对您有所帮助。

    BR
    玛格丽塔