1

Amazon Kinesis Video Streams にストリーミングする RTSP ストリームがあります。ストリームの各フレームでカスタム画像処理を実行できるようにしたいと考えています。私はPythonで書かれたカスタム画像処理アルゴリズムを持っているので、当然、KVSをPythonでプルして、画像処理アルゴリズムに入力できるようにしたいと考えています。まず、この投稿のアドバイスに従って、KVS ストリームを表示するだけの python アプリを作成してみました(ただし、この投稿ではカスタム処理に Amazon Rekognition を使用していますが、私のユースケース (カスタム python 処理) は少し異なります)。

私の質問は次のとおりです。

  1. 私の HLS python KVS プレーヤーはどうしてラグがあったり途切れたりするのですか? ただし、ここで入手できるHLS ストリーマーはかなり良さそうです。

  2. カスタム Python 処理のために Amazon Kinesis Video Stream を効果的にプルするにはどうすればよいですか? HLS と Amazon の GetMedia API の使用の長所と短所は何ですか?

  3. これに 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()

4

1 に答える 1