如何解决您如何有效地提取Amazon Kinesis Video Stream进行自定义python处理?
我有一个RTSP流流到Amazon Kinesis Video Streams。我希望能够在流的每个帧上运行自定义图像处理。我有用python编写的自定义图像处理算法,因此自然而然地我希望能够使用python拉出KVS,并将其输入到图像处理算法中。首先,我尝试通过遵循this post的建议,制作一个仅显示KVS流的python应用程序(但是,本文将Amazon Rekognition用于自定义处理,但是我的用例(自定义python处理)略有不同)。
我的问题是:
-
我的HLS python KVS播放器为何显得迟钝/断断续续(偶尔暂停,然后很快播放过去几秒钟)?但是,HLS拖缆available here看起来还不错。
-
如何有效地提取Amazon Kinesis Video Stream进行自定义python处理?使用HLS与Amazon的GetMedia API的利弊是什么?
- 我还研究了使用Amazon的GetMedia API,发现this post有人尝试使用GetMedia,但最终使用了HLS。
- 我找到了使用GetMedia进行自定义处理explained here (python)和here (c++)的方法。
-
为此值得使用Sagemaker吗?对于图像处理,我只想执行推理,不需要训练网络,它已经训练了。
kvs_player.py
的代码:
import boto3
import cv2
STREAM_NAME = "ExampleStream"
STREAM_ARN = "MY_STREAM_ARN"
AWS_REGION = 'us-east-1'
def hls_stream():
kv_client = boto3.client("kinesisvideo",region_name=AWS_REGION)
endpoint = kv_client.get_data_endpoint(
StreamName=STREAM_NAME,APIName="GET_HLS_STREAMING_SESSION_URL"
)['DataEndpoint']
print(endpoint)
# # Grab the HLS Stream URL from the endpoint
kvam_client = boto3.client("kinesis-video-archived-media",endpoint_url=endpoint,region_name=AWS_REGION)
url = kvam_client.get_hls_streaming_session_url(
StreamName=STREAM_NAME,PlaybackMode="LIVE"
)['HLsstreamingSessionURL']
vcap = cv2.VideoCapture(url)
while(True):
# Capture frame-by-frame
ret,frame = vcap.read()
if frame is not None:
# display the resulting frame
cv2.imshow('frame',frame)
# Press q to close the video windows before it ends if you want
if cv2.waitKey(22) & 0xFF == ord('q'):
break
else:
print("Frame is None")
break
# When everything done,release the capture
vcap.release()
cv2.destroyAllWindows()
print("Video stop")
if __name__ == '__main__':
hls_stream()
解决方法
一些通用答案
- 您可能需要对应用程序进行一些调试,以了解“延迟”的含义。可能只是网络延迟,传输时出错,也可能只是解码,python处理以及稍后重新编码时出现的性能问题。
- GetMedia是一种快速的API,解析器库https://github.com/aws/amazon-kinesis-video-streams-parser-library可用于进行实时解析。您可能需要对视频流进行解码,这比CPU和IO密集型操作多两个数量级,因此您可能需要使用一些硬件加速解码器(或至少使用SIMD / SSE2指令集的基于软件的良好解码器)。 JCodec当然不是一个。
- 这实际上取决于您的应用程序。无论如何,在实际运行Sagemaker之前,您需要检索片段,解析和解码它们。有一个KVS Sagemaker KIT示例可用于更严格的推理应用。
对于范围更广,针对性更强的问题,您可以直接转至GitHub页面以获取适当的项目/资产,并剪切包括详细说明和详细日志的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。