

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh: Mengirim data ke Kinesis Video PutMedia Streams menggunakan API
<a name="examples-putmedia"></a>

Contoh ini menunjukkan cara menggunakan [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)API. Ini menunjukkan cara mengirim data yang sudah dalam format wadah (MKV). Jika data Anda harus dirakit ke dalam format kontainer sebelum mengirim (misalnya, jika Anda merakit data video kamera ke dalam bingkai), lihat[Unggah ke Kinesis Video Streams](producer-sdk.md).

**catatan**  
`PutMedia`Operasi ini hanya tersedia di C \$1\$1 dan Java SDKs. Hal ini disebabkan manajemen full-duplex koneksi, aliran data, dan pengakuan. Ini tidak didukung dalam bahasa lain.

**Topics**
+ [Unduh dan konfigurasikan kode](#examples-putmedia-download)
+ [Tulis dan periksa kodenya](#examples-putmedia-write)
+ [Jalankan dan verifikasi kode](#examples-putmedia-run)

## Unduh dan konfigurasikan kode
<a name="examples-putmedia-download"></a>

Ikuti langkah-langkah untuk mengunduh kode contoh Java, mengimpor proyek ke IDE Java Anda, mengkonfigurasi lokasi perpustakaan, dan mengonfigurasi kode untuk menggunakan AWS kredensil Anda.

1. Buat direktori dan kloning kode sumber contoh dari GitHub repositori. `PutMedia`Contohnya adalah bagian dari[Java](producer-sdk-javaapi.md).

   ```
   git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
   ```

1. Buka IDE Java yang Anda gunakan (misalnya, [Eclipse](https://www.eclipse.org/) atau [IntelliJ IDEA](https://www.jetbrains.com/idea/)), dan impor proyek Apache Maven yang Anda unduh: 
   + **Di Eclipse:** Pilih **File**, **Impor**, **Maven**, **Proyek Maven yang** Ada, dan arahkan ke root paket yang diunduh. Pilih `pom.xml` file.
   + **Dalam Ide IntelliJ: Pilih Impor****.** Arahkan ke `pom.xml` file di root paket yang diunduh.

    Untuk informasi selengkapnya, lihat dokumentasi IDE terkait.

1. Perbarui proyek sehingga IDE dapat menemukan pustaka yang Anda impor.
   + Untuk IntelliJ IDEA, lakukan hal berikut:

     1. Buka menu konteks (klik kanan) untuk direktori **lib** proyek, dan pilih **Tambah sebagai perpustakaan**.

     1. Pilih **File**, lalu pilih **Project Structure**. 

     1. Di bawah **Pengaturan Proyek**, pilih **Modul**. 

     1. Di tab **Sumber**, atur **Level Bahasa** ke **7** atau lebih tinggi.
   + Untuk Eclipse, lakukan hal berikut:

     1. Buka menu konteks (klik kanan) untuk proyek, dan pilih **Properties**, **Java Build Path**, **Source**. Kemudian, lakukan hal berikut:

        1. Pada tab **Sumber**, klik dua kali **Lokasi pustaka asli**.

        1. Di wizard **Konfigurasi Folder Perpustakaan Asli**, pilih **Workspace**.

        1. Dalam pilihan **Folder Perpustakaan Asli**, pilih direktori **lib** dalam proyek.

     1. Buka menu konteks (klik kanan) untuk proyek, dan pilih **Properties**. Kemudian, lakukan hal berikut:

        1. Pada tab **Libraries**, pilih **Add Jars**.

        1. Di wizard **pemilihan JAR**, pilih semua .jars di `lib` direktori proyek.

## Tulis dan periksa kodenya
<a name="examples-putmedia-write"></a>

Contoh `PutMedia` API (`PutMediaDemo`) menunjukkan pola pengkodean berikut:

**Topics**
+ [Buat PutMediaClient](#producersdk-javaapi-writecode-putmediaapi-putmediaclient)
+ [Streaming media dan jeda utas](#producersdk-javaapi-writecode-putmediaapi-run)

Contoh kode di bagian ini berasal dari `PutMediaDemo` kelas.

### Buat PutMediaClient
<a name="producersdk-javaapi-writecode-putmediaapi-putmediaclient"></a>

Membuat `PutMediaClient` objek membutuhkan parameter berikut:
+ URI untuk `PutMedia` titik akhir.
+ `InputStream`Menunjuk ke file MKV untuk streaming.
+ Nama stream. Contoh ini menggunakan aliran yang dibuat di [Gunakan pustaka produser Java](producer-sdk-javaapi.md) (`my-stream`). Untuk menggunakan aliran yang berbeda, ubah parameter berikut:

  ```
  private static final String STREAM_NAME="my-stream";
  ```
**catatan**  
Contoh `PutMedia` API tidak membuat aliran. Anda harus membuat aliran baik dengan menggunakan aplikasi pengujian untuk[Gunakan pustaka produser Java](producer-sdk-javaapi.md), konsol Kinesis Video Streams, atau. AWS CLI
+ Stempel waktu saat ini.
+ Jenis kode waktu. Contoh menggunakan`RELATIVE`, menunjukkan bahwa stempel waktu relatif terhadap awal wadah.
+ `AWSKinesisVideoV4Signer`Objek yang memverifikasi bahwa paket yang diterima dikirim oleh pengirim yang berwenang.
+ Bandwidth hulu maksimum di Kbps.
+ `AckConsumer`Objek untuk menerima paket menerima ucapan terima kasih.

Kode berikut menciptakan `PutMediaClient` objek:

```
/* 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 AWS 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();
```

### Streaming media dan jeda utas
<a name="producersdk-javaapi-writecode-putmediaapi-run"></a>

Setelah klien dibuat, sampel memulai streaming asinkron dengan. `putMediaInBackground` Thread utama kemudian dijeda dengan `latch.await` sampai `AckConsumer` pengembalian, di mana klien ditutup.

```
 /* start streaming video in a background thread */
            client.putMediaInBackground();

            /* wait for request/response to complete */
            latch.await();

            /* close the client */
            client.close();
```

## Jalankan dan verifikasi kode
<a name="examples-putmedia-run"></a>

Untuk menjalankan contoh `PutMedia` API, lakukan hal berikut:

1. Buat aliran bernama `my-stream` di konsol Kinesis Video Streams atau dengan menggunakan file. AWS CLI

1. Ubah direktori kerja Anda ke direktori SDK produser Java:

   ```
   cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
   ```

1. Kompilasi Java SDK dan aplikasi demo:

   ```
   mvn package
   ```

1. Buat nama file sementara di direktori: `/tmp`

   ```
   jar_files=$(mktemp)
   ```

1. Buat string classpath dependensi dari repositori lokal ke file:

   ```
   mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
   ```

1. Tetapkan nilai variabel `LD_LIBRARY_PATH` lingkungan sebagai berikut:

   ```
   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)
   ```

1. Jalankan demo dari baris perintah sebagai berikut, berikan AWS kredensyal Anda:

   ```
   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
   ```

1. Buka konsol [Kinesis Video](https://console.aws.amazon.com//kinesisvideo/home/) Streams, dan pilih streaming Anda **di halaman Kelola Streams.** Video diputar di panel **Pratinjau Video**.