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.

[参考译文] 管道的 mpegtsmux 阻塞位速率

Guru**** 2595805 points
Other Parts Discussed in Thread: TVP5146

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581398/mpegtsmux-choking-bitrate-of-a-pipeline

主题中讨论的其他器件:TVP5146

你好!

我 正在尝试使用 RidgeRun SDK 对 Leopard 板 dm368上复合源的 PAL 视频(576x720)进行编码。 我使用的是 DVSDK 04_02_00_06。 我正在运行以下流水线

gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=6! 'VIDEO/x-RAWE-YUV、身高=576、宽=720、格式=(fourcc) NV12'! 太棒了! 排队! dmaienc_h264 ratecontrol = 2编码 preset = 2 targetbitrate=6000000 maxbitrate=1250000 level=30! 排队! 太棒了! udpsink 主机=192.168.8.12端口=6666 SYNC=false 最后一个字节-enable=false

 我将从该流水线获取25帧的输出。

 

gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=6! 'VIDEO/x-RAWE-YUV、身高=576、宽=720、format=(fourcc) NV12'、dmaiaccel! 排队! dmaienc_h264 ratecontrol = 2编码 preset = 2 targetbitrate=6000000 maxbitrate=1250000 level=30! 排队! 太棒了 ! 太棒了! udpsink 主机=192.168.8.12端口=6666 SYNC=false 最后一个字节-enable=false

但是、一旦我将 mpegtsmux 引入流水线、帧就会减少到每秒13~14帧。

请介绍由于 mpegtsmux 而导致流水线比特率阻塞的原因以及如何将其删除。

阿萨德

 

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

    您好、Asad、


    这是一个巨大的下降,不是因为 mpegtsmux,请在您的电容器中添加帧速率(25-30fps)。 我之所以建议这样做、是因为多路复用器将严格限制电容器、因此流水线中的任何元件都有可能下降。 请在两种情况下检查您的 CPU 负载,以 消除对 mpegtsmux 所做的工作超出预期的怀疑。

    谢谢 、此致、

    Vishwanath Patil

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

    正如您说过的、我执行了以下操作
    gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=6! 'VIDEO/x-RAWE-YUV、身高=576、宽=720、格式=(fourcc) NV12、帧速率=25/1'! 太棒了! 排队! dmaienc_h264 ratecontrol = 2编码预设= 2 targetbitrate=6000000 maxbitrate
    排队! dmaiperf print-arm-load=true! udpsink 主机=192.168.8.12端口=6666 SYNC=false

    输出是的

    时间戳:0:30:40.036200262;bps:0;fps:0.0CPU:20;
    信息:
    时间戳:0:30:41.042818266;bps:915904;fps:27.83CPU:31;
    信息:
    时间戳:0:30:42.081311726;bps:792199;fps:25.4CPU:27;
    信息:
    时间戳:0:30:43.082474893;bps:768294;fps:24.97CPU:27;
    信息:
    时间戳:0:30:44.121160519;bps:793752;fps:25.4CPU:26;
    信息:
    时间戳:0:30:45.121196352;bps:753041;fps:25.0CPU:27;
    信息:
    时间戳:0:30:46.161295477;bps:760304;fps:25.0CPU:26;
    信息:
    时间戳:0:30:47.1629477;bps:775192;fps:25.0CPU:27;
    信息:
    时间戳:0:30:48.201452727;bps:684037;fps:25.2CPU:25;
    信息:
    时间戳:0:30:49.241161268;bps:767527;fps:25.2CPU:26;
    信息:
    时间戳:0:30:50.281099226;bps:736149;fps:25.2CPU:27;
    信息:
    时间戳:0:30:51.281743393;bps:776923;fps:25.0CPU:28;
    信息:
    时间戳:0:30:52.322030392;bps:821547;fps:25.0CPU:26;
    信息:
    时间戳:0:30:53.360652308;bps:734000;fps:25.4CPU:25;
    信息:
    时间戳:0:30:54.401917183;bps:735879;fps:24.97CPU:25;

    可以看出 CPU 负载约为25%。

    后来、我将 mpegtsmux 引入到了流水线中、CPU 负载增加了100%。

    gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=6! 'VIDEO/x-RAWE-YUV、身高=576、宽=720、格式=(fourcc) NV12、帧速率=25/1'! 太棒了! 排队! dmaienc_h264 ratecontrol = 2编码预设= 2 targetbitrate=6000000 maxbitrate
    排队! dmaiperf print-arm-load=true! 太棒了! udpsink 主机=192.168.8.12端口=6666 SYNC=false
    时间戳:0:31:20.474591678;bps:0;fps:0.0CPU:20;
    信息:
    时间戳:0:31:21.494500144;bps:309716;fps:7.85CPU:100;
    信息:
    时间戳:0:31:22.501808478;bps:362778;fps:9.93CPU:100;
    信息:
    时间戳:0:31:23.556593146;bps:399973;fps:14.23CPU:100;
    信息:
    时间戳:0:31:24.622269688;bps:400848;fps:14.8CPU:100;
    信息:
    时间戳:0:31:25.647185063;bps:386408;fps:12.69CPU:100;
    信息:
    时间戳:0:31:26.742010063;bps:271740;fps:7.31CPU:100;
    信息:
    时间戳:0:31:27.791693396;bps:255161;fps:9.53CPU:100;
    信息:
    时间戳:0:31:28.915096018;bps:200795;fps:7.12CPU:100;
    信息:
    时间戳:0:31:29.925275935;bps:263110;fps:7.92CPU:100;
    信息:
    时间戳:0:31:31.031480772;bps:230718;fps:8.13CPU:100;
    信息:
    时间戳:0:31:32.131945939;bps:203615;fps:7.27CPU:100;
    信息:
    时间戳:0:31:33.134023148;bps:247527;fps:7.98CPU:100;
    信息:
    时间戳:0:31:34.183609314;bps:259404;fps:5.71CPU:100;
    信息:
    时间戳:0:31:35.303858979;bps:218963;fps:8.3CPU:100;
    信息:
    时间戳:0:31:36.426437353;bps:220148;fps:8.2CPU:100;
    ^CCaT 中断--处理中断。
    中断:正在停止管道...
    EOS on shutdown enabled --强制 EOS 在管线上
    正在等待 EOS...
    信息:
    时间戳:0:31:37.462853852;bps:274028;fps:6.75CPU:100;
    信息:
    时间戳:0:31:38.574681187;bps:227660;fps:5.40CPU:100;


    供参考、我正在运行 RidgeRun SDK 提供的内核的 RidgeRun 默认映像、并从 SD 卡引导我的 Leopard 板。

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

    您好、Asad、

    请共享使用的 gstreamer 版本。 我很快就能看到,出现了性能问题 https://lists.freedesktop.org/archives/gstreamer-bugs 上的 mpegtsmux 故障

    1)请尝试使用 avimux 一次,即使 avimux 的标题较少,所有 Muxers 都使用 collectpad 来收集涉及额外复制和累加的数据,稍后如果 avimux (GST-Good )不存在问题,您可以详细分析 mpegsmux 插件。

    2) 2)在 CodecParams 中、您可以将 TargetFramerate 设置为10、将 cap 设置为10、然后只需检查至少10fps 是否获得所需的比特率、如果是这样、您就可以使用15fps 重复相同的操作。

    我假设 DM368在 ARM-432、DDR - 343上运行。

    谢谢、此致、

    Vishwanath Patil

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

    您好 、Patil、

    我执行了以下操作来查找 gstreamer 版本

    /# GST 发布-版本

    GST-LAUNCH-0.10版本0.10.32

    GStreamer 0.10.32

    未知的包来源

    尝试使用与 avimux 建议的相同流水线、并提供以下结果

    # vi abc.

    gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=3! 'VIDEO/x-RAWE-YUV、高度=576、宽度=720、格式=(fourcc) NV12、间距=736、 帧速率=25/1'! 太棒了! dmaiperf print-arm-load=true! 排队! dmaienc_h264 targetbitrate= 8000000 maxbitrate=8000000 ratecontrol = 2编码 preset=2 single-NALU=true! 排队!  救世主! udpsink host=199.200.15.61端口=6666 enable-last-buffer=true

    第13条 b 款

    编号./abc.

    正在将管道设置为暂停...

    DaVinci_reszer DaVinci_reszer.2:RSZ_G_CONFIG:0:1:124

    VPFE 捕获 VPFE 捕获:IPIPE 链接

    VPFE 捕获 VPFE 捕获:存在调整器

    管道处于活动状态,不需要 PREROLL...

    警告:来自元素/GstPipeline:流水 线0/GstDmaiperf:dmaiperf0:无法从资源获取/设置设置设置。

    其他调试信息:

    ./../src/src/gsttidmaiperf.c (273):gst_dmaiperf_start ():/GstPipeline:fipine0/GstDmaiperf:dmaiperf0:

    未指定引擎名称、未打印 DSP 信息

    警告:来自元素/GstPipeline:lipine0/GstV4l2Src:v4l2src0:视频输入设备不接受新的帧速率设置。

    其他调试信息:

    ./../../src/sys/v4l2/v4l2src_calls.c (342):gst_v4l2src_set_capture ():/GstPipeline:lipine0/GstV4l2Src:v4l2src0:

    系统错误:参数无效

    正在将管道设置为正在播放...

    新时钟:GstSystemClock

    信息:

    时间戳:0:03:11.933006093;bps:0;fps:0.0CPU:6;

    信息:

    时间戳:0:03:12.963839055;bps:14199798;fps:22.33CPU:17;

    信息:

    时间戳:0:03:14.003802932;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:15.043766099;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:16.083773225;bps:15897600;fps:25.0CPU:0;

    信息:

    时间戳:0:03:17.123733349;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:18.163717850;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:19.203700224;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:20.243680349;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:21.283665974;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:22.323645140;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:23.3614931;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:24.3616014;bps:15897600;fps:25.0CPU:1;

    信息:

    时间戳:0:03:25.403581889;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:26.44355639;bps:15912900;fps:25.2CPU:1;

    信息:

    时间戳:0:03:27.483526891;bps:15912900;fps:25.2CPU:0;

    信息:

    时间戳:0:03:28.523531309;bps:15897600;fps:25.0CPU:0;

    信息:

    时间戳:0:03:29.563517684;bps:15912900;fps:25.2CPU:0;

    我尝试减小帧速率、但未能这样做

    gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=3! 'vedo/x-rax-yUV、高度=576、宽度=720、格式=(fourcc) NV12、间距=736、 帧速率=10/1'! 太棒了! dmaiperf print-arm-load=true! 排队! dmaienc_h264 targetbitrate= 8000000 maxbitrate=8000000 ratecontrol = 2编码 preset=2 single-NALU=true! 排队! 太棒了! udpsink host=199.200.15.61端口=6666 enable-last-buffer=true

    第13条 b 款

    正在将管道设置为暂停...

    DaVinci_reszer DaVinci_reszer.2:RSZ_G_CONFIG:0:1:124

    VPFE 捕获 VPFE 捕获:IPIPE 链接

    VPFE 捕获 VPFE 捕获:存在调整器

    tvp514x 1-005D:TVP5146 (版本- 0x03)位于0xba (达芬奇 I2C 适配器)

    错误:管道不想暂停。

    警告:来自元素/GstPipeline:流水 线0/GstDmaiperf:dmaiperf0:无法从资源获取/设置设置设置。

    其他调试信息:

    ./../src/src/gsttidmaiperf.c (273):gst_dmaiperf_start ():/GstPipeline:fipine0/GstDmaiperf:dmaiperf0:

    未指定引擎名称、未打印 DSP 信息

    错误:来自元素/GstPipeline:流水 线0/GstV4l2Src:v4l2src0:无法协商格式

    其他调试信息:

    ./../../../src/libs/gst/base/gstbasesrc.c (2778):gst_base_src_start ():/GstPipeline0/GstV4l2Src:v4l2src0:

    检查过滤的电容器(如果有)

    正在将管道设置为 NULL ...

    正在释放管道...

    请提供指导。

    阿萨德

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

    如果您看到使用 avimux 可以获得更好的性能,请在所有实验中保持相同的参数(如队列大小)。 现在是时候使用 mpegtsmux 插件(配置文件)了。 同时、我将尝试探索 mpegtsmux 与 aviux 的主要区别、如果我有任何关键调试点、我将与您分享。

    您可能无法尝试所有帧速率,因为 v4l2设备(因为它取决于硬件功能)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,谢谢 Patil!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    针对上述问题、

    我尝试了以下提到的压电线、

    gst-launch -e v4l2src input-src=复合 always-copy=false queue-size=3! 'VIDEO/x-RAWE-YUV、高度=576、宽度=720、格式=(fourcc) NV12、间距=736、 帧速率=25/1'! 太棒了! dmaiperf print-arm-load=true! 排队! dmaienc_h264 targetbitrate= 8000000 maxbitrate=8000000 ratecontrol = 2编码 preset=2 single-NALU=true! 排队! rtph264支付! udpsink host=199.200.15.61端口=6666 enable-last-buffer=true

    流水线在没有任何延迟或数据包丢失的情况下工作得非常好、因此问题似乎出在 mpegtsmux 上。  

    除上述内容外、我还有关于视频质量的问题。 请检查下图  

    边线不会被共享。 哪些属性控制边线? 编解码器 dmai_ench264对帧或字段(偶数为575i 的奇数字段)进行编码吗?  

    我使用 SDP 文件在 VLC 中流式传输视频。 VLC 未显示编解码器和统计设置中接收到的每秒帧数。  

    我每秒需要25帧、但我不确定我是否收到帧或字段?

    阿萨德