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.

[参考译文] TDA4VM:J721S2 V4L2 H264编码器问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1169387/tda4vm-j721s2-v4l2-h264-encoder-issue

器件型号:TDA4VM
主题中讨论的其他器件:TDA4VL

我们使用 J721S2和 SDK8.4

我们使用编码器示例代码。

我们设置  driver_name ="wave5-enc "。

我们希望将 NV12视频编码为 H264。

但检查帧速率功能将失败。(VIDIOC_ENUM_FRAMEINTERVALS 失败 )

如何解决此问题?

这是失败日志:

/tienc.out -i /run/media/sda1/2022_11_08_15_35_55_Data_0_ch6.yuv -h 1920 -w 1080 -f NV12 -c H264
tienc:主 Enter
tienc:找到格式 NV12
tienc:找到格式 H264
tienc:打开的输入文件:/run/media/sda1/2022_11_08_15_35_55_Data_0_ch6.yuv
tienc:发现文件中的帧数
tienc:在输入文件中找到141个帧
tienc:找到141帧
FD = 5
VIDIOC_QUERYCAP 启动
VIDIOC_QUERYCAP 结束
strcmp 启动波形5编码
tienc:未指定器件、使用/dev/video1
tienc:query_device Enter
tienc:Querycaps:ff=0x5 driver=wave5-enc card=wave5-enc bus_info=platform:wave5-enc
tienc:Querycaps: device_caps=0x4204000 Capabilities =0x84204000
tienc:在捕获时调用 VIDIOC_ENUM_FMT
tienc:desc.index = 0、像素格式= HEVC、除垢= HEVC
tienc:desc.index = 1、像素格式= H264、除垢= H.264
tienc:在输出上调用 VIDIOC_ENUM_FMT
tienc:desc.index = 0、像素格式= YU12、除法=平面 YUV 4:2:0
tienc:desc.index = 1、像素格式= NV12、除法= Y/CbCr 4:2:0
tienc:desc.index = 2、像素格式= NV21、除法= Y/CRCB 4:2:0
tienc:desc.index = 3、像素格式= YM12、除法=平面 YUV 4:2:0 (N-C)
tienc:desc.index = 4、像素格式= NM12、除法= Y/CbCr 4:2:0 (N-C)
tienc:desc.index = 5、像素格式= NM21、除法= Y/CRCB 4:2:0 (N-C)
tienc:调用 VIDIOC_ENUM_FRAMESIZES
tienc:VIDIOC_ENUM_FRAMESIZES 为连续
tienc:frmsizes min_width=0 max_width=0 step_width=1
tienc:框架尺寸 min_height = 0 max_height = 0 step_height = 1
tienc:调用 VIDIOC_ENUM_FRAMEINTERVALS
VIDIOC_ENUM_FRAMEINTERVALS 失败25不适合器件的 ioctl
未找到请求的帧间隔、正在退出

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

    我们正在处理此问题、下周初将有更新。  

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

    Karthik、 Nikshith、

    您是否有任何调查结果?

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

    尊敬的 James:  

     J721S2目前不支持 ioctl VIDIOC_ENUM_FRAMEINTERVALS。

    以下是 J721e (TDA4VM)、J721S2 (TDA4VL)上 ioctls 相对于 SDK 8.4的 V4L2合规性

    "是"表示 V4L2合规性。

    ioctl 类别
    ioctl
    TDA4VM (vxe-vxd)

    TDA4VL

    (波形5)

    所需的 ioctls VIDIOC_QUERYCAP 是的 是的
    允许多次打开 VIDIOC_QUERYCAP 是的 是的
    VIDIOC_G/S_PRIORITY 是的 是的
    调试 ioctls VIDIOC_DBG_G/S_REGISTER 不支持 不支持
    VIDIOC_LOG_STATUS 是的 不支持
    输入 ioctls VIDIoc_G/S_TUNE/ENUM_FREQ_BAND 不支持 不支持
    VIDIOC_G/S_FREQUENCY 不支持 不支持
    VIDIOC_S_HW_FREQ_SEEK 不支持 不支持
    VIDIOC_ENUMAUDIO 不支持 不支持
    VIDIoc_G/S/ENUMIPDUT 不支持 不支持
    VIDIOC_G/S_AUDIO 不支持 不支持
    输出 ioctls VIDIOC_G/S_MODIC 不支持 不支持
    VIDIOC_G/S_FREQUENCY 不支持 不支持
    VIDIoc_ENUMAUDOUT 不支持 不支持
    VIDIOC_G/S/ENUMOUTPUT 不支持 不支持
    VIDIOC_G/S_AUDOUT 不支持 不支持
    输入/输出配置 ioctls VIDIOC_ENUM/G/S/QUEST_STD 不支持 不支持
    VIDIOC_ENUM/G/S/QUEST_DV_TIMing 不支持 不支持
    VIDIOC_DV_TIMing_CAP 不支持 不支持
    VIDIOC_G/S_EDID 不支持 不支持
    控制 ioctls VIDIOC_QUEST_EXT_CTRL 是的 是的
    VIDIOC_QUERYCTRL 是的 是的
    VIDIOC_QUERYMENU

    不支持

    不支持
    VIDIOC_G/S_CTRL 实现  符合 v4l2标准 是的
    VIDIOC_G/S/TRIE_EXT_CTRLS 实现  符合 v4l2标准 是的
    VIDIoc_(联合国) SUBSCRIN_EVENT 实现  符合 v4l2标准 是的
    VIDIOC_DQEVENT 不支持 不支持
    VIDIOC_G/S_JPEGCOMP 不支持 不支持
    格式化 ioctl VIDIOC_ENUM_FMT/FRAMESIZES 是的 是的
    VIDIOC_ENUM_FRAMEINTERVALS 是的 不支持
    VIDIOC_G/S_parm 是的 不支持
    VIDIOC_G_FBUF 不支持 不支持
    VIDIOC_G_FMT 是的 是的
    VIDIOC_TEST_FMT 是的 是的
    VIDIOC_S_FMT 是的 是的
    VIDIOC_G_C切片_VBI_CAP 不支持 不支持
    编解码器 ioctl VIDIoc_(尝试_)编码器_CMD 不支持 不支持
    VIDIOC_G_ENC_INDEX 不支持 不支持
    VIDIoc_(尝试_)解码器_CMD 不支持 不支持
    缓冲区 ioctl VIDIOC_REQBUFS/CREASE_BUFS/QUERYBUF 实现  符合 v4l2标准 是的
    VIDIOC_EXPBUF 实现  符合 v4l2标准 是的

    此致

    Nikshith

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

    您好 Nikshith:

    J721S2 SDK8.4上不支持 ioctl VIDIOC_(Try)_ENCODER_CMD

    但我们需要执行 NV12 H264编码器。

      J721S2 SDK8.4上是否有 NV12 H264编码器示例

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

    Joe、您好!

    您可以使用以下 gstreamer 示例将 Nv12帧转换为 H264。

    Fullscreen
    1
    gst-launch-1.0 videotestsrc pattern=ball num-buffers=100 ! video/x-raw, format=NV12, width=852, height=480, framerate=30/1 ! v4l2h264enc ! h264parse ! filesink location=./demo.264
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致

    Nikshith

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

     您好 Nikshith:

    我们可以使用脚本成功地将模式编码为 demo.h264。

    但我们希望同时对 OPENVX 捕获节点8通道数据(1920x1080)进行编码。

    我们该怎么做?

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

    Joe、您好!

    有一个视觉应用演示、用于使用硬件加速器进行基于多通道 OpenVX 的编码。 您可以在以下链接中查看演示。

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/vision_apps/docs/user_guide/group_apps_basic_demos_app_multi_cam_codec.html

    此致

    Nikshith

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

    我们使用 multi_cam_codec 示例代码

    我们可以对2通道1920x1080摄像头源30 FPS 进行编码。

    但 A72 CPU 负载将100%。

    此编码使用硬件或软件编码?

                               Joe

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

    您好 Nikshith、

    进行2CH 1920x1080@30FPS 编码时、A72负载为100%。

    您能否与我们分享如何改进这一点?

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

    你(们)好 James

    [引用 userid="338525" URL"~/support/processors-group/processors/f/processors-forum/1169387/tda4vm-j721s2-v4l2-h264-encoder-issue/4419921 #4419921"]但 A72 CPU 负载将达到100%。

    我们可以在我们一方重复这个问题,目前正在努力解决这个问题。  

    对于 TI 内部基准: https://jira.itg.ti.com/browse/LCPD-29781

    此致

    Nikshith

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

    您好 Nikshith、

    有任何进展吗? 我没有看到任何有关 LCPD-29781的更新。

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

    尊敬的 James:

    对 Jira 进行了更新。 请使用: https://jira.itg.ti.com/browse/ADASVISION-5726

    此致

    Nikshith

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

    此问题与编解码器或多媒体插件无关。 我们已经能够使用 appsrc、appsink 或 videotestsrc 复制此问题。

    Joe、

    您能否分享不使用 appsrc/appsink/videotestsrc 的最终用例的详细信息?

    此致

    Karthik

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

    您好、Karthik:

    我们的最终用例:

    p_gst_pipe_obj->params.m_cmdString = appsrc format=gst_format_time is-live=true do-timestimate=true block=false name=myAppSrc0! 队列
    !! VIDEO /x-RAW、width=(int) 1280、height=(int) 800、framerate=(fraction) 30/1、format=(string) NV12、 隔行模式=(字符串)逐行、比色法=(字符串) bt601
    !! v4l2h264enc bitrate = 10000000 iPeriod=1
    !! h264parse
    !! appsink 名称=myAppSink0最大值-缓冲区=50 drop=true

    a72负载:10%

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

    大家好、Karthik 和 James、

    我们测试了以下命令以检查 I 周期配置。

    gst-launch-1.0 -vv videotestsrc pattern=ball num-buffers=100! VIDEO/x-RAW、FORMAT=NV12width=852height=480framerate=30/1! v4l2h264enc gop-size=10! h264parse! filesink location=./demo.264
    gst-launch-1.0 -vv videotestsrc pattern=ball num-buffers=100! VIDEO/x-RAW、FORMAT=NV12width=852height=480framerate=30/1! v4l2h264enc I-period=10! h264parse! filesink location=./demo.264
     
    下面介绍了如何检查帧类型。
    ffprobe -v error -show_streams -select_streams v:0 -show_frames demo.264 | grep pto_type
    我们在 demo.264文件中只看到一个 I-frame、即每10帧有一个 I-frame。
    -----电子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Edthan、  

    尚不支持 I 周期和 GOP 大小。 它将是 SDK 8.6的一部分。

    请使用以下命令了解支持的控件。

    Fullscreen
    1
    v4l2-ctl -d 1 -l
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    此致

    Nikshith