### 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だった。。あほやわ
よっしゃあああああああああああああああああああ






