本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
檢查程式碼
在 Android 生產者程式庫程序的本節中,您會檢查範例程式碼。
Android 測試應用程式 (AmazonKinesisVideoDemoApp
) 顯示以下編碼模式:
-
建立
KinesisVideoClient
的執行個體。 -
建立
MediaSource
的執行個體。 -
開始串流。啟動
MediaSource
,並開始將資料傳送至用戶端。
下列各節將詳細說明。
建立 KinesisVideoClient 的執行個體
您呼叫 createKinesisVideoClient
操作建立 KinesisVideoClient
物件。
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 Android 程式庫提供 MediaSource
介面的AndroidCameraMediaSource
實作。此類別讀取其中一個裝置攝影機的資料。
在以下程式碼範例 (來自 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();