AmazonKinesisVideoUtil.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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']
  59. def get_data_endpoint(self, stream_name, api_name):
  60. """
  61. 获取指定流的终端节点以读取或写入
  62. @param api_name: API名称
  63. @param stream_name: 视频流名称
  64. @return stream_info: 视频流信息数据
  65. """
  66. return self.client_conn.get_data_endpoint(StreamName=stream_name, APIName=api_name)['DataEndpoint']