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:多个 GStreamer 管道问题

Guru**** 2616675 points

Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658514/linux-am5728-multiple-gstreamer-pipelines-issues

器件型号:AM5728

工具/软件:Linux

我遇到了以下问题:有时我无法创建 gstreamer 流水线:

考虑简单的流水线:

P="videotestsrc! ducatih264enc! h264parse! 排队! 杜拉蒂哈264decvpe! 排队!   运水槽"

当它只运行一次时。

GST_DEBUG=3 GST-LAUNCH-1.0美元

但是、当您像下面那样并行运行两个管道时、有时会收到以下错误消息、或者随附的错误日志 e2e.ti.com/.../e.txt 失败

GST_DEBUG=3 GT-LAUNCH-1.0 P $P

gstducatividdec:c:1642:gst_ducati_vidd_dec_change_state: 无法创建编解码器 ivahd_h264dec、不受支持

使用独立进程时仍然存在问题,例如运行包含以下内容的脚本:

GST_DEBUG=3 GT-LAUNCH-1.0 $P&
GST_DEBUG=3 GT-LAUNCH-1.0 $P&
GST_DEBUG=3 GT-LAUNCH-1.0 $P&

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

    您在这里使用的是 PSDK 版本?
    是否可以尝试设置 inter-interval=1?

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

    您好!
    我在评估板上的最新预编译二进制 SDK 中重复了这一点。

    当我尝试向编码器中添加 Intreval=1时、我还在上面观察到错误、并且有时会在第一个帧上出现一个窗口冻结。

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

    忘记添加它最初是解码器问题、我在使用来自摄像头的 h264流时遇到相同的错误、然后我简化了这种情况的管道。  

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

    您可以添加--gst-debug=1或3并检查错误。

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

    器件型号:AM5728

    工具/软件:Linux

    我在测试中发现的另一个问题是、在我启动下面的管线'bad'后、系统会指出只有一个 gstreamer 管线正常工作、尝试启动两个(甚至两个 h264管线)会导致 GST_DEBUG=3出现以下错误

    ducati gstducatividdec:c:147:engine_open: 无法创建引擎

    复制命令如下所示:

    X=320
    Y=200
    gst-launch-1.0 -e videotestsrc is -live=true! 视频/x-raw、width=$X、height=$Y! AVENC_MJPEG! 救世主! filesink location=/tmp/test ${X}_${Y}.avi # Generate avi,几秒钟后按 Ctrl-c

    p="filesrc location=/tmp/test320_200.avi! 救世主! jpegparse! 极好的体验! VPE! 运水槽"
    GST-LAUNCH-1.0 P $P #工作
    GST-LAUNCH-1.0美元 P 美元 P 美元 P 美元 P 美元 P 美元 P $P $P #错误
    GST-LAUNCH-1.0 $P $P #不再起作用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GST_DEBUG=3已完成、这是相同的、由于初始化失败、因此只打印错误消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 user="Ondrej Bilka]P="filesrc location=/tmp/test320_200.avi! 救世主! jpegparse! 极好的体验! VPE! 运水槽"
    GST-LAUNCH-1.0 P $P #工作
    GST-LAUNCH-1.0美元 P 美元 P 美元 P 美元 P 美元 P 美元 P $P $P #错误
    GST-LAUNCH-1.0 $P $P #不再起作用[/quot]


    如果 ENGINE_OPEN 出现故障、您应重新启动电路板。
    我还建议您在 dce.c 中检查此定义:
    #define NUM_Instance

    BR
    玛格丽塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我读取源代码、找不到涉及 NUM_Instance 的任何检查、只找到一些数组。 因此、当在单个进程中有6个解码器时、它只会覆盖数据、并且损坏仍然存在、因为它是 libdce 共享存储器。
    在解码器中执行这些检查的基本做法、否则可能会在生产中遇到硬错误。
    例如、两个人可以编写库 A、B、每个都使用最多3个解码器。
    然后、有人在应用程序中同时使用这两种方法、但没有意识到这个问题、因为库与多个级别的反向链接在一起。
    测试将通过、因为它们会测试各个组件。 但在生产中、当两个库的请求同时发生时、会出现一次随机冻结。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    GST-LAUNCH-1.0 P $P $P $P $P (5倍)的工作方式是否正确?

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

    您好!

    此 e2e 线程包含2个问题。
    1.编码器错误:不支持的参数
    2.编解码器错误:open_engine
    第一个没有与运行多个管道连接。
    您能否打开第一个主题的新 e2e 线程?
    谢谢!

    BR
    玛格丽塔