写点什么

Amazon Kinesis Video Streams 增加对 HLS 输出流的支持

  • 2019-10-22
  • 本文字数:2395 字

    阅读完需:约 8 分钟

Amazon Kinesis Video Streams 增加对 HLS 输出流的支持

今天向大家演示适用于 Amazon Kinesis Video Streams (KVS) 的 HTTP Live Streams (HLS) 输出功能。如果您还不熟悉 KVS,请参阅 Jeff 在 2017 年为 AWS re:Invent 编写的发行介绍。简而言之,Amazon Kinesis Video Streams 是一种安全地截取、处理和存储视频,以用于分析和机器学习的服务 — 不论是从一台设备还是上百万台设备。 客户将 Kinesis Video 与机器学习算法配合使用,支持从家庭自动化、智慧城市到工业自动化和安全性的各个领域。


在客户反馈的基础上,过去几个月来我们推出了多项功能,包括一个 Gstreamer 插件(这是一种很流行的开放源多媒体框架)和 docker 容器(利用它可以方便地将视频流指向 Kinesis)。每个功能都可以花费很多篇幅来详细介绍,但今天我们要讲的是全新的 HLS 输出功能!先提醒一下,此文中的一些画面会涉及我那无比杂乱的办公室。


HLS 输出是一种方便的新功能,客户可通过它为其 Kinesis 视频流创建 HLS 终端节点,从而便于构建可以回放直播视频和点播视频的自定义 UI 和工具。基于 HLS 的回放功能是完全托管的,因此您不需要构建任何基础设施来传输复用传入的媒体。您只需使用新的 GetHLSStreamingSessionURL API 创建新的流会话即可,目前最高可创建 5 个会话。HLS 的一个优点在于它已经是一项行业标准,可以非常方便地利用 JW Playerhls.jsVideoJSGoogle Shaka Player 等现有的 Web 播放器,甚至可以在移动应用程序中使用 Android Exoplayer 以及 iOS AV Foundation 原生渲染。下面我们快速了解一下该 API,您也可以随时跳过下面的演示。

Kinesis Video HLS 输出 API

文档提供了比博客更详细的信息,这里我将介绍大致的组件。


  1. 使用 GetDataEndpoint API 获取终端节点

  2. 使用 GetHLSStreamingSessionURL API 通过该终端节点获取 HLS 流 URL

  3. 使用您喜爱的任何工具在 HLS URL 中渲染内容!


使用 Jupyter Notebook 以及一点 Python 和 boto3 代码,这将非常简单。


Python


import boto3STREAM_NAME = "RandallDeepLens"kvs = boto3.client("kinesisvideo")# Grab the endpoint from GetDataEndpointendpoint = kvs.get_data_endpoint(    APIName="GET_HLS_STREAMING_SESSION_URL",    StreamName=STREAM_NAME)['DataEndpoint']# Grab the HLS Stream URL from the endpointkvam = boto3.client("kinesis-video-archived-media", endpoint_url=endpoint)url = kvam.get_hls_streaming_session_url(    StreamName=STREAM_NAME,    PlaybackMode="LIVE")['HLSStreamingSessionURL']
复制代码


您甚至可以直接在 Safari 中将所有项目可视化,从而原生渲染 HLS 流。


Python


from IPython.display import HTMLHTML(data='<video src="{0}" autoplay="autoplay" controls="controls" width="300" height="400"></video>'.format(url))
复制代码



我们还可以使用一点点代码直接从 AWS DeepLens 传入流:


Python


import DeepLens_Kinesis_Video as dkvimport timeaws_access_key = "super_fake"aws_secret_key = "even_more_fake"region = "us-east-1"stream_name ="RandallDeepLens"retention = 1 #in minutes.wait_time_sec = 60*300 #The number of seconds to stream the data# will create the stream if it does not already existproducer = dkv.createProducer(aws_access_key, aws_secret_key, "", region)my_stream = producer.createStream(stream_name, retention)my_stream.start()time.sleep(wait_time_sec)my_stream.stop()
复制代码


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    如何使用 Kinesis Video Streams HLS 输出流

    当然我们首先需要有 Kinesis 视频流,这可以在 Kinesis Video Streams 控制台轻松创建。



    然后我们需要流的内容。在此方面我们有多个选项。也许最简单的选项是 docker 容器。我决定采取更为冒险的颁发,根据 github 上的脚本,在我的 Mac 电脑本地编译 GStreamer 插件。事先提醒一下,此插件的编译需要一些时间,可能导致您的计算机成为一台取暖器。


    利用我们刚刚编译的 GStreamer 二进制代码,例如 gst-launch-1.0kvssink 插件,直接直接从我的 Macbook 摄像头或者其他 GStreamer 获取流,输入到 Kinesis Video Streams。我使用的是 kvssink 输出插件,我的数据将在视频流中展开。在此方面有一些参数需要配置,因此要特别注意。


    利用下面的示例命令,我将 Macbook 摄像头的流导入 Kinesis Video Streams:


    Bash


    gst-launch-1.0 autovideosrc ! videoconvert \! video/x-raw,format=I420,width=640,height=480,framerate=30/1 \! vtenc_h264_hw allow-frame-reordering=FALSE realtime=TRUE max-keyframe-interval=45 bitrate=500 \! h264parse \! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1 \! kvssink stream-name="BlogStream" storage-size=1024 aws-region=us-west-2 log-config=kvslog
    复制代码


    现在我们已经有些数据流入 Kinesis,这时我可以使用几个不同的视频播放器,通过入门示例静态网站来测试我的 HLS 流。我刚刚填写了我的 AWS 凭证,并要求它开始播放。GetHLSStreamingSessionURL API 支持多种参数,因此您可以播放来自不同时间戳的点播片段和直播流。


    其他信息

    在美国东部(弗吉尼亚北部)和美国西部(俄勒冈)区域,Kinesis Video Streams 使用 HLS 时消费的数据价格为 0.0119 USD/GB, 其他区域的价格详见服务定价页面。此功能现已在提供 Kinesis Video Streams 的所有区域推出。


    Kinesis Video 团队告诉我他们正在努力集成更多 AWS Media Services,例如 MediaLive,它可让您更方便地位更多受众服务 Kinesis 视频流。


    与以往一样,我们欢迎您在 Twitter 上或通过评论告诉我们您的意见和建议。过去几天我一直在试用此功能,发现乐趣无穷,我很期待看到客户利用它构建一些新的工具!


    本文转载自 AWS 技术博客。


    原文链接:


    https://amazonaws-china.com/cn/blogs/china/amazon-kinesis-video-streams-adds-support-for-hls-output-streams/


    2019-10-22 08:001132

    评论

    发布
    暂无评论
    发现更多内容

    揭秘 IT 成熟度模型:助力企业在数字时代脱颖而出的战略工具

    跟YY哥学Jira

    ITSM Gartner 成熟度模型

    CNCC | 倒计时3天!CCF-网易雷火联合基金研讨会:议程嘉宾交通参会指南一图掌握

    网易伏羲

    人工智能 网易伏羲 cncc 具身智能 群体智能

    鸿蒙网络编程系列31-使用RCP调用OpenAI接口实现智能助手

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    去中心化衍生品入门:模型、挑战与机遇

    区块链软件开发推广运营

    交易所开发 dapp开发 链游开发 钱包开发 代币开发

    荣耀 MagicOS 9.0 发布会及开发者大会,现正直播中

    荣耀开发者服务平台

    人工智能 AI 开发者大会 荣耀

    1024茶思屋直播|TinyEngine跨端实践​:可视化搭建导出鸿蒙ArkTs应用

    OpenTiny社区

    低代码 OpenTiny 前端开源

    一小时内,构建出属于你自己的 Perplexity AI 搜索引擎

    智领云科技

    开源 实操 Python 代码 Perplexity AI 搜索引擎

    智联招聘×Milvus:向量召回技术提升招聘匹配效率

    Zilliz

    人工智能 AI Milvus Zilliz 向量数据库

    Altair官方文档——HyperMesh模型管理

    智造软件

    教程 CAE软件 altair Hypermesh

    要低代码,但不要低能力,低代码产品能否成为企业的增效神器?

    优秀

    低代码 低代码平台 低代码平台比较

    BOE(京东方)携手雷神联合发布全球首款仿生蜂鸟屏 以全新升级ACR技术引领显示产业高端化的升维发展

    科技汇

    鸿蒙网络编程系列28-服务端证书锁定防范中间人攻击示例

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    智能合约开发中的LP分红系统

    区块链软件开发推广运营

    交易所开发 dapp开发 链游开发 NFT开发 代币开发

    糟糕,当我上班用deepin,被老板看到了我的桌面后......!

    nn-30

    Linux 操作系统 deepin 桌面应用 桌面

    数据为王,实时监控显神威 —— 淘宝商品详情API的电商实战应用

    技术冰糖葫芦

    API 接口 API 文档 API 测试 pinduoduo API

    数据驱动未来:淘宝商品详情API在电商实战中的实时监控力量

    代码忍者

    API 接口 pinduoduo API

    2024年西藏等保测评机构名单汇总

    行云管家

    等保 等保测评 西藏

    MariaDB 和 GreatSQL 性能差异背后的真相

    GreatSQL

    软件测试学习笔记丨Selenium学习笔记:元素定位与操作

    测试人

    软件测试

    鸿蒙网络编程系列30-断点续传下载文件示例

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    鸿蒙网络编程系列32-基于拦截器的性能监控示例

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    最新测评,6款好用的在线代码编辑器推荐

    Tp_jh

    云计算 云原生 高效工具 云 IDE 敏捷开发工具

    2025北京国际自动驾驶技术展览会

    AIOTE智博会

    自动驾驶展 自动驾驶展会

    百度智能云千帆 AppBuilder 大模型应用开发解读

    Baidu AICLOUD

    应用开发 AI原生应用 大模型应用

    项目管理这些问题,你是不是忍了很久?

    天津汇柏科技有限公司

    项目管理 低代码开发 软件定制开发

    鸿蒙网络编程系列29-RCP下载到文件和流示例

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    鸿蒙网络编程系列33-TLS回声服务器示例

    长弓三石

    DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

    Amazon Kinesis Video Streams 增加对 HLS 输出流的支持_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章