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.

[参考译文] SK-AM62P-LP:编码器对五个图像进行编码、但帧速率无法达到每秒30帧

Guru**** 2468610 points
Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1461574/sk-am62p-lp-the-encoder-encodes-five-images-but-the-frame-rate-cannot-reach-30-frames-per-second

器件型号:SK-AM62P-LP
主题中讨论的其他器件:AM62P

工具与软件:

目前,我们正在使用四个视频流,分辨率分别为1216*864,640640*864,448*608和1920*1080。 通过编码器进行编码后、帧速率可达到30帧。 但是、当添加分辨率为1920*1080的新视频流时、总共生成五个视频流、编码器的输出帧速率降至最多25帧。 进一步的验证测试表明,可以控制两个1920*1080视频流在25帧,而其他三个可以达到30帧,反之亦然。 因此、我们想确认编码器是否存在用于控制帧速率的软件限制、如果存在、如何消除该限制? 我们的目标是以30帧的速度输出所有帧。 还有其他解决方案吗?

相应的设置参数如下:

分辨率、比特率:
{1216,864,8000000}、
{640,864,8000000}、
{448,608,8000000}、
{1,920,10810808000000}、
{1,920,10810808000000}、

GOP:30
输入格式:NV12
输出格式:H265 (HEVC)

VBR
2级

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

    李泉

    希望您能提供用于验证5个编码器实例的 GStreamer 流水线吗?  

    这将有助于为您提供更好的支持、我将能够在我的 AM62P EVM 上重现此问题。

    此致、

    Suren

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

    尊敬的 Quan:

    我使用 am62a 测试了5个编码流水线、这与 am62p 几乎相同、但 am62a 的编码速度为240Mp/s (低于 am62p 300Mp/s)、并且 fps 大于40。

    GST_DEBUG_FILE=/run/trace.log GST_DEBUG_NO_COLOR=1 GST_DEBUG="GST_TRACER:7" GST_TRACERS="latency(flags=element)" gst-launch-1.0 -v v4l2src device=/dev/video-imx623-cam0 io-mode=dmabuf-import ! video/x-bayer, width=1920, height=1536, framerate=60/1, format=rggb12 ! queue leaky=2 ! \
    tiovxisp sink_0::device=/dev/v4l-imx623-subdev0 sensor-name=SENSOR_IMX623 wdr-enabled=true dcc-isp-file=/opt/imaging/imx623/dcc_viss_wdr.bin \
    sink_0::dcc-2a-file=/opt/imaging/imx623/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src_0::pool-size=8 ! queue ! \
    video/x-raw, format=NV12, width=1920, height=1536, framerate=60/1 ! tiovxmultiscaler name=split \
    split. ! queue ! video/x-raw, format=NV12, width=1216, height=864, framerate=60/1 !  v4l2h265enc extra-controls="enc,prepend_sps_and_pps_to_idr=(int)30, video_gop_size=(int)30, video_bitrate=8000000" ! capsfilter caps="video/x-h265, profile=(string)main, level=(string)2.1" ! fakesink \
    split. ! queue ! video/x-raw, format=NV12, width=640, height=864, framerate=60/1 ! v4l2h265enc extra-controls="enc,prepend_sps_and_pps_to_idr=(int)30, video_gop_size=(int)30, video_bitrate=8000000" ! capsfilter caps="video/x-h265, profile=(string)main, level=(string)2.1" ! fakesink \
    split. ! queue ! video/x-raw, format=NV12, width=608, height=448, framerate=60/1 ! v4l2h265enc extra-controls="enc,prepend_sps_and_pps_to_idr=(int)30, video_gop_size=(int)30, video_bitrate=8000000" ! capsfilter caps="video/x-h265, profile=(string)main, level=(string)2.1" ! fakesink \
    split. ! queue ! video/x-raw, format=NV12, width=1920, height=1080, framerate=60/1 ! v4l2h265enc extra-controls="enc,prepend_sps_and_pps_to_idr=(int)30, video_gop_size=(int)30, video_bitrate=8000000" ! capsfilter caps="video/x-h265, profile=(string)main, level=(string)2.1" ! fakesink \
    split. ! queue ! video/x-raw, format=NV12, width=1920, height=1080, framerate=60/1 ! v4l2h265enc extra-controls="enc,prepend_sps_and_pps_to_idr=(int)30, video_gop_size=(int)30, video_bitrate=8000000" ! capsfilter caps="video/x-h265, profile=(string)main, level=(string)2.1" ! fakesink

    此致、

    Adam

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

    你(们)好  

    还有一个信息。 设置 width=608、height=448将起作用、但  width=448、height=608将不起作用。  

    此致、

    Adam

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

    您好、Adam、

    您能否确认您在 AM62P 上看到与 AM62A 相比 FPS 更低?

    请允许我在几天时间内对 AM62P 进行测试、并在下周早些时候重新进行分析。  

    此致、

    Suren

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

    尊敬的 Suren:

    我不是说 am62p 比 am62a 慢。 我使用 am62a 进行测试、只是因为 am62a 具有硬件定标器。 在 am62p 上测试相同的分辨率将需要更多的 CPU 消耗、因为我们需要视频测试源或多个 TEE 和 tiscaler、这将是达到 fps 的瓶颈。  

    我想如果 am62a 编码器能够以高 fps 处理这些分辨率、am62p 只能提高性能。

    此致、

    Adam

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

    您好、Adam、

    客户是否仍面临5个编码流的问题? 此外、您是否可以在尝试使用  width=448、height=608时与日志共享管道?

    此致、

    Suren

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

    尊敬的 Suren:

    是的、客户仍面临5个编码流的问题。 将硬件组合在一起以得到宽度=448和高度= 608的日志需要一些时间。  

    此致、

    Adam

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

    您好、Adam、

    我曾尝试使用 SDK 10.1中的这个简单流水线:

    gst-launch-1.0 -v videotestsrc ! video/x-raw、width=448、height=608、format=NV12! kmssink driver-name=tidss、能够在我在电路板上连接的 HDMI 显示器上显示颜色模式。

    我们还尝试了编码/解码、工作正常。  

    [2025-02-05 14:45:37.483] root@am62pxx-evm:/home# gst-launch-1.0 -v videotestsrc ! video/x-raw, width=448, height=608,format=NV12 ! v4l2h264enc ! filesink location=448.h264
    [2025-02-05 14:54:04.412] Setting pipeline to PAUSED ...
    [2025-02-05 14:54:04.428] Pipeline is PREROLLING ...
    [2025-02-05 14:54:04.428] /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fr1
    [2025-02-05 14:54:04.460] /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fracti1
    [2025-02-05 14:54:04.477] /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)1, profile=(string)baseline, width=(int)448, height=(int)608, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, intero
    [2025-02-05 14:54:04.524] /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)1, profile=(string)baseline, width=(int)448, height=(int)608, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlao
    [2025-02-05 14:54:04.572] Redistribute latency...
    [2025-02-05 14:54:04.572] /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fracti1
    [2025-02-05 14:54:04.604] /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fract1
    [2025-02-05 14:54:04.619] Pipeline is PREROLLED ...
    [2025-02-05 14:54:04.620] Setting pipeline to PLAYING ...
    [2025-02-05 14:54:04.620] Redistribute latency...
    [2025-02-05 14:54:04.636] New clock: GstSystemClock
    ^Chandling interrupt.636] 0:00:00.3 / 99:99:99.
    [2025-02-05 14:54:08.427] Interrupt: Stopping pipeline ...
    [2025-02-05 14:54:08.443] Execution ended after 0:00:03.959760125
    [2025-02-05 14:54:08.443] Setting pipeline to NULL ...
    [2025-02-05 14:54:08.443] Freeing pipeline ...
    [2025-02-05 14:54:08.459] root@am62pxx-evm:/home# gst-launch-1.0 -v filesrc location=448.h264 ! h264parse ! v4l2h264dec ! kmssink driver-name=tidss sync=false          
    [2025-02-05 14:54:44.537] Setting pipeline to PAUSED ...
    [2025-02-05 14:54:44.665] Pipeline is PREROLLING ...
    [2025-02-05 14:54:44.681] /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 1920
    [2025-02-05 14:54:44.681] /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 1200
    [2025-02-05 14:54:44.683] Redistribute latency...
    [2025-02-05 14:54:44.683] /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)448, height=(int)608, framerate=(fraction)0/1, coded-picture-structure=(string)frame, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, s1
    [2025-02-05 14:54:44.714] /GstPipeline:pipeline0/v4l2h264dec:v4l2h264dec0.GstPad:sink: caps = video/x-h264, width=(int)448, height=(int)608, framerate=(fraction)0/1, coded-picture-structure=(string)frame, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true,1
    [2025-02-05 14:54:44.761] /GstPipeline:pipeline0/v4l2h264dec:v4l2h264dec0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-fli1
    [2025-02-05 14:54:44.793] /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)448, height=(int)608, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped1
    [2025-02-05 14:54:44.826] Pipeline is PREROLLED ...
    [2025-02-05 14:54:44.826] Setting pipeline to PLAYING ...
    [2025-02-05 14:54:44.841] Redistribute latency...
    [2025-02-05 14:54:44.841] New clock: GstSystemClock
    ^Chandling interrupt. (0.0 %)0:00.0 / 99:99:99.
    [2025-02-05 14:54:46.777] Interrupt: Stopping pipeline ...
    [2025-02-05 14:54:46.777] Execution ended after 0:00:02.038549846
    [2025-02-05 14:54:46.777] Setting pipeline to NULL ...
    [2025-02-05 14:54:46.841] [  888.305406] vdec 30210000.video-codec: wave5_vpu_firmware_command_queue_error_check: result not ready: 0x800
    [2025-02-05 14:54:46.841] [  888.315357] vdec 30210000.video-codec: wave5_vpu_firmware_command_queue_error_check: result not ready: 0x800
    [2025-02-05 14:54:46.857] [  888.325235] vdec 30210000.video-codec: wave5_vpu_dec_finish_decode: could not get output info.
    [2025-02-05 14:54:46.859] [  888.325273] vdec 30210000.video-codec: wave5_vpu_firmware_command_queue_error_check: result not ready: 0x800
    [2025-02-05 14:54:46.905] Freeing pipeline ...
    [2025-02-05 14:54:46.921] root@am62pxx-evm:/home#