问题标签 [amazon-kinesis-video-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
362 浏览

ios - 在 Swift 项目中使用 AWS Kinesis Video Streams WebRTC 开发工具包 C

我想在 MacOS 应用程序中使用 AWS 的Kinesis Video Streams for WebRTC。我在 AWS 实验室的 Github 上遇到了一个名为amazon-kinesis-video-streams-webrtc-sdk-c的 C 库,这听起来像是我想要的,但我不确定如何在 Swift 中使用它。

我已经使用他们的自述文件从源代码构建了这个库——在构建之后,我得到了一些示例可执行文件以及两个.dylib文件:

在此处输入图像描述

接下来,我将libkvsWebrtcClient.dyliband添加libkvsWebrtcSignalingClient.dylib到我的 MacOS Xcode 项目中:

在此处输入图像描述

我不确定下一步——如何从 Swift 引用/使用这些库?

0 投票
1 回答
510 浏览

webrtc - WebRTC 信号成功,但没有视频通过

我正在尝试使用 WebRTC 设置来自机器人的视频流。

据我所知,信号成功建立了连接,但是没有视频流。

我使用 AWS Kinesis Video 作为信号服务器,并使用AWS Kinesis 视频流 WebRTC sdk作为主节点。

对于查看器,我使用Kinesis WebRTC 测试页面,唯一的变化是查看器不请求任何音频。

我相信信号是有效的。至少查看器正在发送和接收 ICE 候选,并且没有错误。

主节点也开始按预期发送数据,但视频从未显示在查看器上。

我的问题是如何调试问题出在哪里?

我查看了 Chrome 的 webrtc 内部结构,它生成了这些图表。这向我显示 chrome 正在接收包,但没有帧被解码。那是对的吗?

在此处输入图像描述

在机器人上,我将 RoS 作为中间层运行,并且我正在尝试流式传输 USB 网络摄像头。
为此,我正在运行h264_video_encoder 节点。当节点启动时,它告诉我它具有以下设置:

264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=3 sliced_threads=1 slices=3 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1 keyint=30 keyint_min=16 scenecut=40 intra_refresh=0 rc=abr mbtree=0 bitrate=2048 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00

我怀疑最可能的问题是编码,但我不知道如何继续调试这个问题。

0 投票
0 回答
138 浏览

amazon-web-services - AWS cognito 访问被拒绝异常

我正在尝试在本地网页上查看 AWS kinesis 视频流。但是,我不断收到此错误。

这是用于关联 IAM 角色的策略。

我正在使用未经身份验证的 Cognito 角色。

对于 sts:assumeRole,我也有类似的例外。

我究竟做错了什么?

0 投票
1 回答
82 浏览

amazon-web-services - 为什么 Kinesis Video Streams 中的某些片段中的“FragmentLengthInMilliseconds”为零

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

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

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

0 投票
1 回答
103 浏览

amazon-kinesis-video-streams - 从单个设备组织多个记录的正确方法是什么:AWS Kinesis 视频流

从单个 Raspberry PI 类型设备创建可搜索视频存档的正确方法是什么?

我是否应该为每个设备创建一个流,然后每当该设备开始广播时,它就会添加到该流中?然后我会创建一个客户端,列出流中这些单独记录的时间戳?我一直在尝试这样做,但我只得到了 ListFragments 和 GetClip。两者似乎都没有完成这项工作。使用片段的用例是什么?我想获得由不同时间戳分隔的部分流。例如,如果我有一个从下午 2 点到 2:10 的录音,那将是与下午 3 点到 3:10 之间的录音分开的列表项。

或者我应该每次广播做一个流?我会创建一个客户端来列出流,然后允许用户在流之间进行选择以查看每个视频。这似乎是对平台的低效使用,如果我在几天内用同一设备录制了 5 个 10 秒的录音,它会创建 5 个单独的存档流。

我意识到这里存在与数据保留相关的影响,但我也不确定如果流的一部分过期但另一部分没有过期,这将如何发挥作用。

我一直在挖掘文档以尝试推断与此相关的最佳实践,但没有找到任何直接回答它的东西。

谢谢!

0 投票
2 回答
900 浏览

amazon-sagemaker - Kinesis Video Streams 使用 KIT 与 Amazon SageMaker 集成

我正在开展一个项目,我需要将视频从我的 IP 摄像机发送到 Kinesis Video Stream,并使用 Sagemaker 托管我的 ML 模型,然后该模型将实时分析来自 Kinesis Video Stream 的视频。
我点击了这个链接:https ://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon -sagemaker/
我已经完成了这些事情-

  1. 设置 IP 摄像机和 kinesis 视频流以将视频从 IP 摄像机发送到 KVS
  2. 为 KIT 设置云形成模板(如链接中所述)

我被这个特别的东西困住了 -

  1. 如何从 sagemaker 笔记本中的 aws fargate 获取视频帧作为输入(如下图所示,步骤 3)?在链接中提到,KIT 预先捆绑了一个自定义 Lambda 函数,该函数被编写用于使用对象检测算法处理 Amazon SageMaker 示例之一的预测输出。我不确定这个算法是如何从 KVS 获取输入的。

    在此处输入图像描述

请如果有人可以帮助我解决这个问题。

0 投票
1 回答
776 浏览

python - 您如何有效地提取 Amazon Kinesis Video Stream 以进行自定义 python 处理?

我有一个流式传输到 Amazon Kinesis Video Streams 的 RTSP 流。我希望能够在流的每一帧上运行自定义图像处理。我有用python编写的自定义图像处理算法,所以我自然希望能够用python拉取KVS,并将其输入到图像处理算法中。首先,我尝试按照这篇文章的建议制作一个只显示 KVS 流的 python 应用程序但是这篇文章使用 Amazon Rekognition 进行自定义处理,我的用例(自定义 python 处理)略有不同)。

我的问题是:

  1. 为什么我的 HLS python KVS 播放器卡顿/断断续续(随机暂停,然后很快播放过去几秒钟)?但是,此处可用的 HLS 流媒体看起来相当不错。

  2. 您如何有效地提取 Amazon Kinesis Video Stream 以进行自定义 python 处理?使用 HLS 与 Amazon 的 GetMedia API 的优缺点是什么?

    • 我还研究了使用 Amazon 的 GetMedia API,发现这篇文章有人尝试使用 GetMedia,但最终选择了 HLS。
    • 我发现使用 GetMedia 进行自定义处理的方法在此处 (python)此处 (c++)进行了说明。
  3. 值得为此使用 Sagemaker 吗?对于我的图像处理,我只想进行推理,我不需要训练网络,它已经训练好了。

代码kvs_player.py

0 投票
2 回答
550 浏览

c++ - 为 amazon-kinesis-video-streams-producer-sdk-cpp 构建依赖项时出错

在尝试编译 amazon-kinesis-video-stream-producer-sdk-cpp Repo时,我遇到了依赖项,说文件路径太长。

我可能做错了什么。让我知道这是否可能是回购的问题,我会在那里将其作为问题提出。提前致谢。

0 投票
0 回答
375 浏览

python - 使用“PutMedia”API 将 USB 摄像头实时流式传输到 AWS Kinesis-Video-Stream

我正在使用 python 将 USB 摄像头直接直播到 kinesis-video-stream。在尝试'PutMedia'从 aws (链接) 实现 API 时,虽然我能够上传本地存储的视频,参考以下代码here
这是我稍作修改的代码:

另外,请帮助我理解这个类gen_request_parameters

0 投票
0 回答
468 浏览

python - 无法通过 Python 中 boto3 中的 kinesis 视频客户端从 Amazon Connect 恢复音频

我正在尝试从 AWS-Lambda 实例中的 Python 中的 kinesis 视频流中获取音频文件。

要获取音频,我正在使用这段代码:

要使用它,您只需要streamARM在调用开始流式传输和停止流式传输时由 Amazon connect 创建一个有效的,相关的 Amazon connect 集成是这样的:

亚马逊连接集成

致电呼叫中心并在 AWS Lambda 中处理流后,我可以获得一个文件foo.flv. 根据Amazon Kinesis Video Streams PUT_MEDIA 文档,它是 Matroska (MKV) 容器格式,带有 AAC 格式的音频轨道。

使用 OpenSource 之类的工具,MKVToolNix我无法播放文件来收听音频,我不知道为什么不这样做。如果我将文件强制为 wav(不解码),我会听到录制的音频非常嘈杂(信息在那里)。解析的有效负载包含 AWS 标签和一些信息,作为输出提供:GStreamervlcmkvinfo test_03s_current.mkv

理论上(这个 GStreamer 管道与一个有效的 mkv 文件和轨道 0 音频一起工作)应该可以工作,因为它可以工作:

gst-launch-1.0 filesrc location=test.mkv ! queue ! matroskademux name=dmux dmux.audio_0 ! queue ! aacparse ! faad ! audioconvert ! alsasink

您可以使用 GStreamer 和以下命令生成一个脉冲来测试它:gst-launch-1.0 -v audiotestsrc num-buffers=100 ! audioconvert ! voaacenc ! matroskamux ! filesink location=foo.mkv

GStreamer 似乎是一个很好的候选者,因为它有一个 Python 包装器,在这个问题中,流解析器库lherman-cs解释了二进制格式是如何到达的。

使用mkvextract test_03s_current.mkv tracks 0:audio.aac我能够生成 aac 文件(它检测容器格式:带有 ADTS 标头的原始 AAC 文件),但它也不起作用。

如何解析 MKV 块以正确生成一个或多个 AAC/WAV 文件而不使用脏黑客?