器件型号: TDA4VH-Q1
Thread 中讨论的其他器件: TDA4VH
您好:
我正在使用基于 TI TDA4VH (J784S4) 的电路板和 Processor SDK RTOS 开发实时视频流应用。
该项目基于:
vision_apps→demo_apps→multi_cam_codec (multi_cam_codec.c)
系统配置:
- SoC: TDA4VH (J784S4 )
- SDK:Processor SDK RTOS
-摄像机输入: GMSL→CSI.
-分辨率: 1920x1080
-帧速率:30 FPS
-编码: H.264 硬件编码器
-输出: UDP 流式传输到远程目标
-框架: vision_apps 与 Gstreamer 流水线
当前情况:
我测量了端到端延迟(从摄像机捕获到远程接收器侧显示)、我观察到大约:
110ms–150ms 延迟
系统稳定在 1080p30 下、但我的目标是尽可能将延迟降低到 100ms 以下。
问题:
1) 在采用 1080p30 H.264 流的 TDA4VH 上实现小于 100ms 的端到端延迟是否现实?
2) 是否有针对低延迟用例的推荐编码器参数设置?
- GOP 大小
-期间内
- B 帧已禁用
-低延迟模式
-速率控制配置
3) 内部是否存在已知的缓冲阶段:
- vision_apps 框架
- H.264 硬件编码器
- Gstreamer 流水线
通常会引入额外的延迟?
4) TI 是否有任何建议的配置来实现 J784S4 上的超低延迟流?
以下是我正在使用的 GStreamer 流水线:
static void construct_gst_strings(app_codec_wrapper_params_t *params)
{
int32_t i = 0;
for (uint8_t ch = 0; ch < params->in_num_channels; ch++)
{
int rtp_port = 5002 + ch * 2;
snprintf(params->m_AppSrcNameArr[ch], CODEC_MAX_LEN_ELEM_NAME, "myAppSrc%d", ch);
i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i,
"appsrc format=GST_FORMAT_TIME is-live=true do-timestamp=true block=false name=%s ! "
"queue max-size-buffers=1 max-size-bytes=0 max-size-time=0 leaky=downstream ! \n",
params->m_AppSrcNameArr[ch]);
i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i,
"video/x-raw, width=(int)%d, height=(int)%d, framerate=(fraction)30/1, format=(string)%s, "
"interlace-mode=(string)progressive, colorimetry=(string)bt601 ! \n",
params->in_width, params->in_height, params->in_format);
i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i,
"v4l2h264enc capture-io-mode=dmabuf output-io-mode=dmabuf "
"extra-controls=\"controls, frame_level_rate_control_enable=0, "
"tune=zerolatency, video_bitrate=12000000, iframe_period=30, insert-sps-pps=1, h264_profile=0\" ! "
"h264parse config-interval=1 ! \n");
i += snprintf(¶ms->m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i,
"rtph264pay pt=96 config-interval=1 aggregate-mode=none mtu=1100 timestamp-offset=0 ! "
"udpsink host=%s port=%d sync=false async=false qos=false buffer-size=65536 \n", g_stream_host, rtp_port);
}
}
控制台中的接收器侧:
gst-launch-1.0 \
udpsrc port=5002 caps="application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96" \
! rtpjitterbuffer latency=100 do-lost=true \
! rtph264depay \
! h264parse \
! avdec_h264 \
! videoflip method=horizontal-flip \
! videoconvert \
! autovideosink sync=false
如果有人使用 vision_apps 或 GStreamer 在 J784S4/TDA4VH 上优化延迟的经验、请您给予指导。
谢谢你。