为什么Kinesis视频流中的某些片段中的“ FragmentLengthInMilliseconds”为零

问题描述

在我通过其gstreamer插件流式传输到KVS的片段中,我看到数百个片段-超过55%-在“ FragmentLengthInMilliseconds”字段中为0(通过LIST_FRAGMENTS api获取)。它们都有相同的时间戳。我观察到的另一件事是,在这些情况下,“ FragmentSizeInBytes”的值几乎始终为12265。

我想知道为什么这些碎片甚至存在吗?我在gstreamer插件配置中是否缺少某些东西-摆脱它们(如果它们无用)?这是我在C ++中配置的方式:

   g_object_set(kvs_sink,"stream-name",stream_name.c_str(),"storage-size",1024,"retention-period",168,// in hours
        "aws-region",AWS_REGION,NULL);

这是我正在使用的插件https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp

解决方法

您的配置看起来不错。片段持续时间是在后端通过添加整个片段的帧持续时间来计算的。某些媒体管道无法指定帧持续时间,因此片段持续时间将计算为最后一帧的时间戳减去第一帧的时间戳。如果是单个帧片段且未指定持续时间,则它将评估为0。持续时间0表示上游的媒体管道存在问题。您可能需要仔细检查您的配置。如果您实际上正在流式传输视频,请确保编码器产生常规的节奏I帧。查看存储库中的多个示例并浏览文档。