本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Android 制作人库过程的这一部分中,您将研究示例代码。
Android 测试应用程序 (AmazonKinesisVideoDemoApp
) 显示以下编码模式:
-
创建
KinesisVideoClient
的实例。 -
创建
MediaSource
的实例。 -
开始流式处理。启动
MediaSource
,它就会开始向客户端发送数据。
以下各节提供了详细信息。
创建的实例 KinesisVideoClient
您可以通过调用 KinesisVideoClient
操作来创建 createKinesisVideoClient
对象。
mKinesisVideoClient = KinesisVideoAndroidClientFactory.createKinesisVideoClient( getActivity(), KinesisVideoDemoApp.KINESIS_VIDEO_REGION, KinesisVideoDemoApp.getCredentialsProvider());
KinesisVideoClient
需要凭证以进行身份验证,才能进行网络调用。您传入了一个实例AWSCredentialsProvider
,该实例会从您在上一节中修改awsconfiguration.json
的文件中读取您的 Amazon Cognito 证书。
创建的实例 MediaSource
要向 Kinesis 视频流发送字节,必须生成数据。Amazon Kinesis Video Streams 提供了MediaSource
代表数据源的接口。
例如,Kinesis Video Streams 安卓库提供了AndroidCameraMediaSource
该接口的实现MediaSource
。此类从设备的某个摄像头读取数据。
下面的代码示例 (摘自 fragment/StreamConfigurationFragment.java
文件) 创建媒体源配置:
private AndroidCameraMediaSourceConfiguration getCurrentConfiguration() {
return new AndroidCameraMediaSourceConfiguration(
AndroidCameraMediaSourceConfiguration.builder()
.withCameraId(mCamerasDropdown.getSelectedItem().getCameraId())
.withEncodingMimeType(mMimeTypeDropdown.getSelectedItem().getMimeType())
.withHorizontalResolution(mResolutionDropdown.getSelectedItem().getWidth())
.withVerticalResolution(mResolutionDropdown.getSelectedItem().getHeight())
.withCameraFacing(mCamerasDropdown.getSelectedItem().getCameraFacing())
.withIsEncoderHardwareAccelerated(
mCamerasDropdown.getSelectedItem().isEndcoderHardwareAccelerated())
.withFrameRate(FRAMERATE_20)
.withRetentionPeriodInHours(RETENTION_PERIOD_48_HOURS)
.withEncodingBitRate(BITRATE_384_KBPS)
.withCameraOrientation(-mCamerasDropdown.getSelectedItem().getCameraOrientation())
.withNalAdaptationFlags(StreamInfo.NalAdaptationFlags.NAL_ADAPTATION_ANNEXB_CPD_AND_FRAME_NALS)
.withIsAbsoluteTimecode(false));
}
下面的代码示例 (摘自 fragment/StreamingFragment.java
文件) 创建媒体源:
mCameraMediaSource = (AndroidCameraMediaSource) mKinesisVideoClient .createMediaSource(mStreamName, mConfiguration);
启动媒体源
启动媒体源,以便开始生成数据并将数据发送到客户端。下面的代码示例摘自 fragment/StreamingFragment.java
文件:
mCameraMediaSource.start();