示例:使用将数据发送到 Kinesis 视频流PutMediaAPI - Amazon Kinesis Video Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例:使用将数据发送到 Kinesis 视频流PutMediaAPI

此示例演示了如何使用PutMediaAPI。它显示了如何发送已经采用容器格式 (MKV) 的数据。如果在发送之前必须将数据汇编成容器格式(例如,如果您要将摄像机视频数据组合成帧),请参见Kinesis 视频直播制作人库

注意

这个PutMedia操作仅在 C++ 和 Java 开发工具包中可用。这是由于连接、数据流和确认的全双工管理。其他语言不支持它。

步骤 1:下载并配置代码

按照以下步骤下载 Java 示例代码,将项目导入您的 Java IDE,配置库位置,然后配置代码以使用您的Amazon证书。

  1. 创建一个目录并从中克隆示例源代码GitHub存储库。PutMedia 示例是 Java 创建者库 的一部分。

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. 打开你正在使用的 Java IDE(例如日食要么IntelliJ IDE),然后导入你下载的 Apache Maven 项目:

    • 在 Eclipse 中:依次选择 File (文件)、Import (导入)、MavenExisting Maven Projects (现有的 Maven 项目),然后导航到下载的程序包的根目录。选择 pom.xml 文件。

    • 在 IntelliJ Idea 中:选择 Import。导航到下载的程序包的根目录中的 pom.xml 文件。

    有关更多信息,请参阅相关的 IDE 文档。

  3. 更新项目,以便 IDE 可以发现您导入的库。

    • 对于 IntelliJ IDEA,请执行下列操作之一:

      1. 打开项目的 lib 目录的上下文菜单 (右键单击),选择 Add as library

      2. 选择文件,然后选择项目结构

      3. Project Settings 下,选择 Modules

      4. Sources (源) 选项卡中,将 Language Level (语言级别) 设置为 7 或更大值。

    • 对于 Eclipse,执行以下操作:

      1. 打开项目的上下文菜单 (右键单击),并依次选择 PropertiesJava Build PathSource。然后执行以下操作:

        1. Source 选项卡中,双击 Native library location

        2. Native Library Folder Configuration 向导中,选择 Workspace

        3. Native Library Folder 选择项中,选择项目中的 lib 目录。

      2. 打开项目的上下文菜单 (右键单击),选择 Properties。然后执行以下操作:

        1. Libraries 选项卡上,选择 Add Jars

        2. JAR 选择 向导中,选择项目的 lib 目录中的所有 .jar。

步骤 2:编写和检查代码

PutMedia API 示例 (PutMediaDemo) 显示以下编码模式:

此部分中的代码示例来自 PutMediaDemo 类。

创建 PutMediaClient

正在创建PutMediaClient对象需要以下参数:

  • PutMedia 终端节点的 URI。

  • 一个 InputStream,指向要流式处理的 MKV 文件。

  • 流名称。此示例使用已在 使用 Java 创建者库 (my-stream) 中创建的流。要使用其他流,请更改以下参数:

    private static final String STREAM_NAME="my-stream";
    注意

    这个PutMediaAPI 示例不会创建直播。您必须使用测试应用程序来创建直播使用 Java 创建者库、Kinesis Video Streams 主机或Amazon CLI。

  • 当前时间戳。

  • 时间码类型。此示例使用 RELATIVE,指示时间戳相对于容器的开始时间。

  • 一个 AWSKinesisVideoV4Signer 对象,验证收到的数据包是否由授权发件人发送。

  • 最大上游带宽 (以 Kbps 为单位)。

  • 一个 AckConsumer 对象,用于接收“数据包已接收确认”。

以下代码创建 PutMediaClient 对象:

/* actually URI to send PutMedia request */ final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API); /* input stream for sample MKV file */ final InputStream inputStream = new FileInputStream(MKV_FILE_PATH); /* use a latch for main thread to wait for response to complete */ final CountDownLatch latch = new CountDownLatch(1); /* a consumer for PutMedia ACK events */ final AckConsumer ackConsumer = new AckConsumer(latch); /* client configuration used for Amazon SigV4 signer */ final ClientConfiguration configuration = getClientConfiguration(uri); /* PutMedia client */ final PutMediaClient client = PutMediaClient.builder() .putMediaDestinationUri(uri) .mkvStream(inputStream) .streamName(STREAM_NAME) .timestamp(System.currentTimeMillis()) .fragmentTimeCodeType("RELATIVE") .signWith(getKinesisVideoSigner(configuration)) .upstreamKbps(MAX_BANDWIDTH_KBPS) .receiveAcks(ackConsumer) .build();

对媒体进行流式处理并暂停线程

在创建客户端后,此示例使用 putMediaInBackground 开始异步流式处理。随后,主线程将暂停并显示 latch.await,直到 AckConsumer 返回,此时客户端已关闭。

/* start streaming video in a background thread */ client.putMediaInBackground(); /* wait for request/response to complete */ latch.await(); /* close the client */ client.close();

步骤 3:运行并验证代码

若要运行 PutMedia API 示例,请执行以下操作:

  1. 创建名为的直播my-stream在 Kinesis Video Streams 控制台中或使用Amazon CLI。

  2. 将工作目录更改为 Java 创建者开发工具包目录:

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. 编译 Java 开发工具包演示应用程序:

    mvn package
  4. /tmp 目录中创建临时文件名:

    jar_files=$(mktemp)
  5. 创建从本地存储库到文件的依赖项的类路径字符串:

    mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. LD_LIBRARY_PATH 环境变量的值设置如下:

    export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH $ classpath_values=$(cat $jar_files)
  7. 按如下所示从命令行运行演示,前提是Amazon证书:

    java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
  8. 在以下位置打开 Kinesis 视频流控制台https://console.aws.amazon.com/kinesisvideo/,然后在上面选择你的直播管理直播页面。该视频将在 Video Preview 窗格中播放。