### kvs起動
gst-launch-1.0 avfvideosrc device-index=0 ! videoconvert ! video/x-raw,format=I420,width=1280,height=720 ! vtenc_h264_hw allow-frame-reordering=FALSE realtime=TRUE max-keyframe-interval=45 bitrate=512 ! h264parse ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name=MyKinesisVideoStream storage-size=512 access-key=”YourAccessKeyId” secret-key=”YourSecretAccessKey” aws-region=”ap-northeast-1″
### node.js側
const fs = require('fs'); const AWS = require('aws-sdk') AWS.config.update({accessKeyId: "***", secretAccessKey: "***",region: "ap-northeast-1"}); async function main(){ const streamName = 'MyKinesisVideoStream'; const kinesisvideo = new AWS.KinesisVideo(); const param = { APIName: "GET_CLIP", StreamName: streamName }; const e = await kinesisvideo.getDataEndpoint(param).promise(); const kinesisvideoarchivedmedia = new AWS.KinesisVideoArchivedMedia({endpoint: e.DataEndpoint}); startTime = new Date(2021, 10, 13, 23, 40, 30); // UTC時間 endTime = new Date(2021, 10, 13, 23, 41, 38); // UTC時間 const params = { ClipFragmentSelector: { FragmentSelectorType: "PRODUCER_TIMESTAMP", TimestampRange: { EndTimestamp: endTime, StartTimestamp: startTime } }, StreamName: streamName }; const data = await kinesisvideoarchivedmedia.getClip(params).promise(); const filePath = "test.mp4" fs.writeFileSync(filePath, data.Payload); } main()
$ node get-mp4.js
うおおおおおおおおおおおおおおおおおおおお
### トラブルシューティング
ずっとこれが出てたんだが、何かなと思ってたら
$ node get-mp4.js
(node:137900) UnhandledPromiseRejectionWarning: ResourceNotFoundException: No fragments found in the stream for the clip request.
jsでtimestampを作るとき、monthは -1なのね。
new Date(2021, 10, 13, 23, 40, 30); // 2021/11/13 23:40:30
new Date(2021, 11, 13, 23, 40, 30) でやってたから、No fragments foundだった。。あほやわ
よっしゃあああああああああああああああああああ