AmazonKinesisVideoUtil.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Author : Rocky
  4. @Time : 2022/10/18 17:13
  5. @File :AmazonKinesisVideoUtil.py
  6. """
  7. import boto3
  8. class AmazonKinesisVideoObject:
  9. """
  10. Amazon Kinesis Video Streams对象
  11. api文档链接: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/kinesisvideo.html
  12. """
  13. def __init__(self, aws_access_key_id, secret_access_key, region_name):
  14. self.access_id = aws_access_key_id
  15. self.access_secret = secret_access_key
  16. self.region_name = region_name
  17. self.client_conn = boto3.client(
  18. 'kinesisvideo',
  19. aws_access_key_id=aws_access_key_id,
  20. aws_secret_access_key=secret_access_key,
  21. region_name=region_name
  22. )
  23. def create_stream(self, stream_name):
  24. """
  25. 创建视频流
  26. @param stream_name: 视频流名称
  27. @return : stream_arn or False
  28. """
  29. tags = {'project_kvs': 'kvs'}
  30. try:
  31. stream_arn = self.client_conn.create_stream(StreamName=stream_name, Tags=tags)['StreamARN']
  32. return stream_arn
  33. except Exception as e:
  34. print(e)
  35. return False
  36. def update_data_retention(self, stream_name, operation, data_retention_change_in_hours):
  37. """
  38. 修改视频流数据保留时间
  39. @param stream_name: 视频流名称
  40. @param operation: 增加/减少, 'INCREASE_DATA_RETENTION'|'DECREASE_DATA_RETENTION'
  41. @param data_retention_change_in_hours: 修改的时间
  42. @return : True or False
  43. """
  44. try:
  45. version = self.describe_stream(stream_name)['Version']
  46. self.client_conn.update_data_retention(StreamName=stream_name, Operation=operation, CurrentVersion=version,
  47. DataRetentionChangeInHours=data_retention_change_in_hours)
  48. return True
  49. except Exception as e:
  50. print(e)
  51. return False
  52. def describe_stream(self, stream_name):
  53. """
  54. 获取视频流信息数据
  55. @param stream_name: 视频流名称
  56. @return stream_info: 视频流信息数据
  57. """
  58. return self.client_conn.describe_stream(StreamName=stream_name)['StreamInfo']