// 3️⃣ Build GetMedia request getMediaInput := &kvmedia.GetMediaInput StreamARN: aws.String(streamARN), StartSelector: &kvmedia.StartSelector StartSelectorType: kvmedia.StartSelectorTypeNow, // live , resp, err := mediaClient.GetMedia(ctx, getMediaInput) if err != nil panic(err) defer resp.Payload.Close()
// 1️⃣ Get data endpoint for GET_MEDIA kvClient := kv.NewFromConfig(cfg) epOut, err := kvClient.GetDataEndpoint(ctx, &kv.GetDataEndpointInput APIName: kv.APINameGetMedia, StreamARN: aws.String(streamARN), ) if err != nil panic(err) mediaCfg := cfg.Copy() mediaCfg.EndpointResolver = aws.EndpointResolverFromURL(*epOut.DataEndpoint)
// 4️⃣ Write to file (streamed) f, err := os.Create(output) if err != nil panic(err) defer f.Close() kvs player downloader
written, err := io.Copy(f, resp.Payload) if err != nil panic(err) fmt.Printf("✅ Downloaded %d bytes to %s\n", written, output)
// Build the GetMedia request (you can pass StartSelector for specific timestamps) const getMediaCmd = new GetMediaCommand( StreamARN: STREAM_ARN, StartSelector: StartSelectorType: "NOW" , // start at the latest fragment // Optional: FragmentNumber or Timestamp for exact start point ); // 3️⃣ Build GetMedia request getMediaInput := &kvmedia
session = boto3.session.Session() cred = session.get_credentials().get_frozen_credentials() request = AWSRequest(method=method, url=url) SigV4Auth(ReadOnlyCredentials(cred.access_key, cred.secret_key, cred.token), "kinesisvideo", REGION).add_auth(request) return dict(request.headers)
const ( region = "us-east-1" streamARN = "arn:aws:kinesisvideo:us-east-1:123456789012:stream/my-stream/1580000000000" output = "downloaded_stream.mp4" ) err := mediaClient.GetMedia(ctx
async def get_data_endpoint(): kv = boto3.client("kinesisvideo", region_name=REGION) resp = kv.get_data_endpoint( APIName="GET_MEDIA", StreamARN=STREAM_ARN ) return resp["DataEndpoint"]