【Tuyaos SDK】APP视频首帧问题

IPC/NVR/可视门铃等具备多媒体能力的设备,扫地机/AGV等机器人设备


hellokernel
Posts: 59

问题描述:

我们在测试预览出图的时候或者门铃呼叫视频弹窗的时候,发现首帧经常异常

1.门铃呼叫视频弹窗的时候,APP 视频窗口会显示“构建加密通道失败,点击重试”,点击 重试,就可以出图了

//发起呼叫
[20250918_19:49:14]2025/09/18 19:49:14.235 !INFO [doorbell_set_processing][0164]doorbell processing status changed: 0 -> 1

显示“构建加密通道失败,点击重试”

//点击重试后出图
[20250918_19:49:28][09-18 19:49:28 ty E][14a4][tuya_ipc_p2p.c:4753] session[65537] open_stream video success

2.预览唤醒设备出图的时候,预览窗口会显示“设备状态异常,请稍后重试(-39),点我重试”

//点击重试,设备预览才会出图
[20250918_19:33:51][09-18 19:33:50 ty E][ed64][tuya_ipc_p2p.c:4753] session[65537] open_stream video success

设备id为uuid1fe33b2c69fe2673,APP日志已上传,麻烦帮忙看看

谢谢各位。

Attachments
预览首帧异常.txt
(172.92 KiB) Downloaded 15 times
门铃呼叫首帧出现异常.txt
(219.82 KiB) Downloaded 12 times

Tags:
hellokernel
Posts: 59

Re: 【Tuyaos SDK】APP视频首帧问题

有没有哪位大佬帮忙看看的,谢谢各位了。

User avatar
Passat
Posts: 120

Re: 【Tuyaos SDK】APP视频首帧问题

  1. 使用 tuya_ipc_ring_buffer_append_data_with_timestamp,其中入参最后一个参数时间用 tal_time_get_posix_ms 赋值。需要在 .c 文件中包含 "tal_time_service.h" 头文件。
  2. 增加音/视频帧写入信息打印
User avatar
Passat
Posts: 120

Re: 【Tuyaos SDK】APP视频首帧问题

门铃呼叫视频弹窗, 需要在发送门铃消息前,初始化 p2p 交互模块 “ty_sdk_media_stream_init”

hellokernel
Posts: 59

Re: 【Tuyaos SDK】APP视频首帧问题

Passat 2025年 Sep 22日 15:32

门铃呼叫视频弹窗, 需要在发送门铃消息前,初始化 p2p 交互模块 “ty_sdk_media_stream_init”

之前的log 打印显示呼叫是在ty_sdk_media_stream_init完成之后的

//p2p初始化
[20250918_19:49:12][01-01 08:00:02 ty E][e644][ty_sdk_media_callback.c:724] media stream init result is 0

//doorbell
[20250918_19:49:14][09-18 19:49:13 ty D][8914][mqc_app.c:800] Send MQTT Msg.P:43 N:45460 Q:1 Data:{"etype":"ac_doorbell","edata":"d8e45a6a1758196153","devId":"6c47edb3faf6f5845apotj","filename":"1758196153.jpeg","time":"1758196153"}

hellokernel
Posts: 59

Re: 【Tuyaos SDK】APP视频首帧问题

Passat 2025年 Sep 22日 15:17
  1. 使用 tuya_ipc_ring_buffer_append_data_with_timestamp,其中入参最后一个参数时间用 tal_time_get_posix_ms 赋值。需要在 .c 文件中包含 "tal_time_service.h" 头文件。
  2. 增加音/视频帧写入信息打印

log 如附件所示,谢谢各位。

Attachments
预览窗口显示设备状态异常,请稍后重试.log
(224.8 KiB) Downloaded 3 times
门铃呼叫视频窗口显示构建加密通道失败.log
(864.89 KiB) Downloaded 4 times
User avatar
Passat
Posts: 120

Re: 【Tuyaos SDK】APP视频首帧问题

  1. 检查写入 ringbuf 的逻辑,日志中很多帧时间戳相同,理论上编码器会按照设定帧率输出,不应出现大批量帧时间戳相同的情况。

    Code: Select all

    [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:3718 pts:12278154 ts:1758528967591 tal_time:1758528967018
     [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:3409 pts:12328149 ts:1758528967641 tal_time:1758528967018
    [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:6059 pts:12428165 ts:1758528967739 tal_time:1758528967018
    
  2. 日志中仍会出现 "can't find free mqmde" 的报错,之前有回复过此类问题。
    viewtopic.php?t=5207

  3. APP拉流失败报错的问题,从当前日志上看应该是设备未及时回复p2p信令导致的,猜测应该是调用SDK初始化顺序的问题,具体原因需要用以下调试库集成复现。再次收集debug日志(可先去掉写入ringbuf的日志输出)。

    TuyaOS.zip
    (5.47 MiB) Downloaded 4 times
hellokernel
Posts: 59

Re: 【Tuyaos SDK】APP视频首帧问题

Passat 2025年 Sep 24日 11:14
  1. 检查写入 ringbuf 的逻辑,日志中很多帧时间戳相同,理论上编码器会按照设定帧率输出,不应出现大批量帧时间戳相同的情况。

    Code: Select all

    [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:3718 pts:12278154 ts:1758528967591 tal_time:1758528967018
     [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:3409 pts:12328149 ts:1758528967641 tal_time:1758528967018
    [20250922_16:16:08][09-22 16:16:07 ty E][ba54][ty_sdk_media_callback.c:803] Put Frame. type:0 size:6059 pts:12428165 ts:1758528967739 tal_time:1758528967018
    
  2. 日志中仍会出现 "can't find free mqmde" 的报错,之前有回复过此类问题。
    viewtopic.php?t=5207

  3. APP拉流失败报错的问题,从当前日志上看应该是设备未及时回复p2p信令导致的,猜测应该是调用SDK初始化顺序的问题,具体原因需要用以下调试库集成复现。再次收集debug日志(可先去掉写入ringbuf的日志输出)。
    TuyaOS.zip

1.实际写入ring buffer的帧时间戳是ts:1758528967591 这种,tal_time:1758528967018是“使用 tuya_ipc_ring_buffer_append_data_with_timestamp,其中入参最后一个参数时间用 tal_time_get_posix_ms 赋值”的打印输出;

2.我们已经排查且修改过了,上线后不会在出现can't find free mqmde,log 里出现的 推测是和开了写入ringbuf的日志输出有关系;预览首帧异常.txt 和 门铃呼叫首帧出现异常.txt 里面是没有出现的;

3.好的,我们复现一下;

谢谢各位。

User avatar
Passat
Posts: 120

Re: 【Tuyaos SDK】APP视频首帧问题

SDK内部使用ringbuf的时间戳以 tuya_ipc_ring_buffer_append_data_with_timestamp 最后一个参数为准。 多数帧时间戳相同,说明你并没有按照实际帧率调用 append

hellokernel
Posts: 59

Re: 【Tuyaos SDK】APP视频首帧问题

Passat 2025年 Sep 25日 10:40

SDK内部使用ringbuf的时间戳以 tuya_ipc_ring_buffer_append_data_with_timestamp 最后一个参数为准。 多数帧时间戳相同,说明你并没有按照实际帧率调用 append

1.实际写入ring buffer的帧时间戳是ts:1758528967591 这种,tal_time:1758528967018是“使用 tuya_ipc_ring_buffer_append_data_with_timestamp,其中入参最后一个参数时间用 tal_time_get_posix_ms 赋值”的打印输出;

我的意思是说,在没有改 “tuya_ipc_ring_buffer_append_data_with_timestamp,其中入参最后一个参数时间用 tal_time_get_posix_ms 赋值” 这个之前, tuya_ipc_ring_buffer_append_data_with_timestamp 这个函数的最后一个参数就是用的帧数据的时间戳,类似 ts:1758528967591 这种打印,这肯定是不同的;

tal_time:1758528967018 这个相同 应该是正常的,直接在调用tuya_ipc_ring_buffer_append_data_with_timestamp的时候,直接tal_time_get_posix_ms 赋值给他的最后一个参数,和调度有关

谢谢各位。

Post Reply