

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

# Amazon IVS Multitrack Video: Panduan Integrasi Perangkat Lunak Siaran
<a name="multitrack-video-sw-integration"></a>

## Pengantar
<a name="multitrack-video-sw-integration-intro"></a>

[Agar alat atau layanan perangkat lunak penyiar pihak ketiga mengklaim bahwa ia mendukung video multitrack IVS, ia harus mengikuti panduan ini dan menerapkan dua fitur yang diperlukan, [konfigurasi aliran otomatis](#multitrack-video-sw-integration-auto-stream), dan metrik kinerja siaran.](#multitrack-video-sw-integration-broadcast-perf-metrics) Kami sangat menyarankan juga menerapkan [Fitur yang Direkomendasikan](#multitrack-video-sw-integration-recommended-features).

Diagram berikut menunjukkan interaksi tingkat tinggi antara perangkat lunak siaran Anda dan Amazon IVS:

![\[Interaksi tingkat tinggi antara perangkat lunak siaran dan Amazon IVS.\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/images/Workflow.png)


### Audiens
<a name="multitrack-video-sw-integration-intro-audience"></a>

Dokumen ini ditujukan untuk pengembang perangkat lunak yang ingin menerapkan dukungan klien untuk video multitrack untuk:
+ *Perangkat lunak penyiar pembuat konten* yang dirancang untuk streaming ke Amazon IVS atau ke layanan yang menggunakan video multitrack Amazon IVS.
+ *Platform streaming pihak ketiga* yang menawarkan simulcast atau transcoding sisi server, dengan pengguna yang melakukan streaming ke Amazon IVS atau layanan yang menggunakan video multitrack Amazon IVS.

### Terminologi
<a name="multitrack-video-sw-integration-intro-terminology"></a>

Dokumen ini menggunakan beberapa istilah secara bergantian:
+ **Pengguna, pembuat, penyiar** — Pengguna akhir yang menggunakan perangkat lunak siaran untuk membuat dan mengalirkan konten asli.
+ **Layanan, platform** — Platform atau layanan video seperti Amazon IVS.
+ **Pelanggan** — Bisnis yang dapat menggunakan layanan seperti Amazon IVS untuk memberi daya pada situs video.

## Fitur yang Diperlukan: Konfigurasi Aliran Otomatis
<a name="multitrack-video-sw-integration-auto-stream"></a>

Konfigurasi aliran otomatis membantu pengguna memulai dengan cepat dan secara otomatis meningkatkan kualitas aliran dari waktu ke waktu. Alih-alih pengguna secara manual memilih pengaturan (misalnya, bitrate, resolusi, framerate) yang disetel sekali dan jarang diubah, konfigurasi aliran otomatis mempertimbangkan pengaturan perangkat lunak saat ini, konfigurasi perangkat keras, dan dukungan platform setiap kali pengguna memulai aliran baru. Misalnya, ketika pengguna meningkatkan pengaturan (misalnya, dengan GPU baru), menginstal driver GPU baru, atau tujuan mulai mendukung codec baru (misalnya, H.265/HEVC), konfigurasi aliran otomatis bereaksi dan meningkatkan kualitas aliran berikutnya pengguna.

### Akan Langsung
<a name="multitrack-video-sw-integration-auto-stream-going-live"></a>

Ketika pengguna mulai streaming, perangkat lunak Anda harus menanyakan informasi tentang pengaturan perangkat keras dan perangkat lunak pengguna, memanggil, mengonfigurasi scaler/encoder video GetClientConfiguration, dan membuka koneksi RTMP ([E-RTMP) yang disempurnakan](https://veovera.org/docs/enhanced/enhanced-rtmp-v2). Langkah-langkah ini dijelaskan secara lebih rinci di bawah ini.

### Gunakan GetClientConfiguration
<a name="multitrack-video-sw-integration-auto-stream-use-getclientconfig"></a>

[GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)membutuhkan informasi tentang pengaturan perangkat keras dan perangkat lunak pengguna.

Algoritma mempertimbangkan banyak faktor untuk memberikan konfigurasi yang:
+ Mengoptimalkan pengalaman pemirsa terbaik — resolusi tertinggi, framerate tertinggi, bitrate tertinggi, jumlah trek tertinggi, newest/best codec, dan pengaturan encoder video terbaik.
+ Didukung dengan aman oleh perangkat lunak penyiaran dan penyiaran streamer, batas yang dikonfigurasi oleh pengguna, dan layanan tujuan.

Di dunia nyata, keterbatasan mencakup jaringan mil pertama yang lebih tua dan buruk GPUs, pengaturan pengguna tertentu, perselisihan sumber daya GPU, dan dukungan codec platform terbatas. Ketika dihadapkan dengan keterbatasan ini, konfigurasi aliran otomatis harus mundur secara bertahap dan dengan cara yang masuk akal. Contoh:
+ Variasikan bandwidth streaming yang diperlukan antara 10,2 Mbps (5 rendisi) dan 1,5 Mbps (2 rendisi).
+ Variasikan resolusi maksimum trek kualitas tertinggi dari 1080p (4 atau 5 rendisi) hingga 480p (2 rendisi).
+ Variasikan jumlah rendisi antara 5 (1080p, 720p, 480p, 360p, 160p) dan 2 (480p, 360p).
+ Variasikan pilihan rendisi di serangkaian resolusi yang didukung secara luas (1080p, 720p, 540p, 480p, 360p, 240p, dan 160p).
+ Variasikan bitrate dari masing-masing rendisi dari 6 Mbps (misalnya, 1080p60 AVC) hingga 200 Kbps (mis., 160p AVC).
+ Variasikan frame rate antara tinggi (60, 50, atau 48 fps) dan standar (30, 25, atau 24 fps).
+ Variasikan codec video untuk menyeimbangkan safety/viewer dukungan dan efisiensi codec (misalnya, H.264/AVC atau H.265/HEVC).
+ Variasikan algoritma scaler untuk menyeimbangkan sumber daya GPU (misalnya, Lanczos, bicubic, dan bilinear).
+ Bervariasi pengaturan pengkodean video (termasuk profil codec, preset encoder, jendela lihat ke depan, AQ visual psiko, dan jumlah B-frame), tergantung pada vendor GPU dan versi driver (misalnya, P6 pada NVIDIA RTX 4080 hingga P4 pada NVIDIA GTX 950). GeForce GeForce 

#### Mengekspos Preferensi ke Pengguna
<a name="multitrack-video-sw-integration-auto-stream-use-getclientconfig-preferences"></a>

Anda harus mengaktifkan pengguna untuk mengkonfigurasi pengaturan berikut:
+ Resolusi keluaran
+ Kecepatan bingkai keluaran
+ Trek video maksimum
+ Bitrate streaming maksimum

#### Opsional: Mengatur Batas dalam Perangkat Lunak Siaran
<a name="multitrack-video-sw-integration-auto-stream-use-getclientconfig-limits-in-software"></a>

Perangkat lunak atau layanan Anda dapat memberikan default atau membatasi kemampuan pengguna untuk mengonfigurasi pengaturan ini. Misalnya, jika perangkat lunak atau layanan Anda perlu mempertahankan sumber daya GPU dan Anda ingin membatasi jumlah sesi video-encoder yang digunakan oleh video multitrack, Anda dapat memilih untuk membatasi pengguna Anda ke 3 **Trek Video Maksimum** dan dengan jelas menunjukkan kepada pengguna bahwa **Auto** berarti “hingga 3.”

#### Batas yang Ditetapkan oleh Tujuan
<a name="multitrack-video-sw-integration-auto-stream-use-getclientconfig-limits-by-destination"></a>

Kunci aliran dalam GetClientConfiguration permintaan diperlukan sehingga layanan dapat mengidentifikasi saluran dan menentukan apakah ada kendala per saluran. Misalnya, Amazon IVS menyediakan `multitrackInputConfiguration.maximumResolution` properti untuk `STANDARD` saluran. Ini dapat digunakan untuk membatasi resolusi setiap trek individu, sehingga pelanggan dapat menyediakan kualitas khusus (misalnya, streaming 720p60 atau 1080p60) untuk pembuat konten tertentu atau mengontrol biaya output mereka.

#### Menangani Peringatan dan Kesalahan
<a name="multitrack-video-sw-integration-auto-stream-use-getclientconfig-errors"></a>

GetClientConfiguration mengembalikan peringatan dan kesalahan dalam keadaan yang berbeda, jadi Anda harus menerapkan dukungan yang dihadapi pengguna untuk menangani peringatan dan kesalahan.

*Peringatan* bersifat informasional. Pengguna harus diizinkan untuk melanjutkan streaming atau membatalkan. Berikut adalah contoh peringatan:
+ Versi driver NVIDIA yang diinstal pada mesin pengguna tidak akan lagi didukung pada tanggalDD/MM/YYYY.

*Kesalahan* dianggap fatal. Pengguna tidak boleh diizinkan untuk melanjutkan streaming. Berikut adalah contoh kesalahan:
+ Saluran tidak dikonfigurasi untuk mendukung video multitrack.
+ Kedaluwarsa/Versi driver GPU yang tidak didukung.
+ GPU Anda tidak didukung.
+ Kunci aliran yang disediakan tidak valid.
+ Frame rate 59,94 Anda tidak didukung oleh Amazon IVS Multitrack Video. Di Pengaturan > Video, pilih salah satu dari nilai yang didukung berikut: 24, 25, 30, 48, 50, 60.
+ Permintaan konfigurasi tidak memiliki data yang diperlukan (versi driver GPU, model GPU, dll).

### Konfigurasikan Penskalaan dan Pengkodean Video
<a name="multitrack-video-sw-integration-auto-stream-configure-video"></a>

[GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)mengembalikan pengaturan penskalaan dan pengkodean yang mengoptimalkan untuk pengalaman penampil terbaik, tanpa memengaruhi kinerja aplikasi (misalnya, game/broadcast perangkat lunak) dan mempertimbangkan pengaturan pengguna. Gunakan pengaturan penskalaan dan pengkodean yang tepat yang dikembalikan oleh. GetClientConfiguration GetClientConfiguration memperhitungkan kebutuhan spesifik dari berbagai vendor dan arsitektur GPU yang berubah seiring waktu.

Selain pengaturan penskalaan dan pengkodean (seperti preset), Anda harus:
+ *Sejajarkan semua encoder dan pastikan bahwa IDRs untuk semua rendisi memiliki PTS yang sama.* Ini diperlukan untuk menghindari kebutuhan transcoding sisi server untuk menyelaraskan beberapa rendisi saat video didistribusikan dan dilihat menggunakan HLS tersegmentasi. Jika tidak IDRs disejajarkan di seluruh trek video, pemirsa akan mengalami pergeseran waktu dan kegagapan selama peralihan rendisi dalam pemutaran ABR. (Untuk visualisasi, lihat gambar di [Metrik Kinerja Siaran](#multitrack-video-sw-integration-broadcast-perf-metrics).)
+ *Kloning SEI/OBU data (misalnya, keterangan) di semua trek video.* Ini diperlukan agar pemutar video dapat mengakses SEI/OBU data terlepas dari kualitas individu yang ditonton.

### Connect Menggunakan RTMP yang Ditingkatkan
<a name="multitrack-video-sw-integration-auto-stream-enhanced-rtmp"></a>

Untuk dokumentasi tentang streaming multitrack melalui RTMP yang disempurnakan, lihat spesifikasi [Enhanced RTMP](https://veovera.org/docs/enhanced/enhanced-rtmp-v2) v2.

Saat menghubungkan dengan RTMP yang disempurnakan, video multitrack Amazon IVS memiliki beberapa persyaratan:
+ Trek video utama dan berkualitas tinggi harus dikemas dan dikirim sebagai paket video jalur tunggal RTMP yang disempurnakan. Misalnya, `videoPacketType` bisa`CodedFrames`, `CodedFramesX``SequenceStart`, dan`SequenceEnd`.
+ Semua trek video tambahan harus dikemas dan dikirim sebagai paket video multitrack RTMP yang disempurnakan (mis., Is`Multitrack`), `videoPacketType` dengan jenis paket multitrack diatur ke satu trek (mis., Is). `videoMultitrackType` `OneTrack`
+ Kunci aliran di `authentication` bidang yang dikembalikan oleh [GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)harus digunakan untuk terhubung ke server RTMP.
+ `config_id`Nilai yang dikembalikan oleh [GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)harus ditambahkan sebagai argumen query ke string koneksi RTMP dengan kunci. `clientConfigId`

Berikut ini adalah contoh konfigurasi aliran:


|  videoPacketType  |  videoMultitrackType  |  TrackID  |  Resolusi  | 
| --- | --- | --- | --- | 
|  CodedFrames CodedFramesX SequenceStart SequenceEnd  |  NA - tidak videoMultitrackType dikirim dengan RTMP single-track yang ditingkatkan.  |  NA — TrackID tidak dikirim dengan RTMP single-track yang ditingkatkan.  |  1920x1080  | 
|  Multitrack  |  OneTrack  |  1  |  1280x720  | 
|  Multitrack  |  OneTrack  |  2  |  852x480  | 
|  Multitrack  |  OneTrack  |  3  |  640x360  | 

Perangkat lunak siaran Anda harus menggunakan data yang dikembalikan oleh [GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)in `ingest_endpoints` dan protokol (RTMP atau RTMPS) yang dipilih oleh pengguna untuk mengidentifikasi titik akhir yang akan dihubungkan. Gunakan `url_template` dan kunci aliran yang dikembalikan `authentication` untuk membuat URL dan sertakan `config_id` sebagai argumen `clientConfigId` kueri. Jika Anda mengizinkan pengguna untuk menentukan argumen kueri RTMP (misalnya,`?bandwidthtest=1`), Anda harus menambahkannya selain menentukan. `clientConfigId` Berikut adalah contoh tanggapan dari GetClientConfiguration:

```
{
   "ingest_endpoints": [
      {
         "protocol": "RTMP",
         "url_template": "rtmp://iad05.contribute.live-video.net/app/{stream_key}",
         "authentication": "v1_5f2e593731dad88b6bdb03a3517d306ef88a73e29619ee4b49012d557e881484_65c5dc81_7b2276223a302c2262223a393939392c2274223a5b7b2277223a3634302c2268223a3336302c2262223a3530302c226330223a312c226331223a302c226332223a307d2c7b2277223a313238302c2268223a3732302c2262223a313730302c226330223a312c226331223a302c226332223a307d2c7b2277223a313932302c2268223a313038302c2262223a363030302c226330223a312c226331223a302c226332223a307d5d7d_live_495665160_FC45sNuCYUwLnCVtCnXSjEWkusXzJI"
      },
      {
         "protocol": "RTMPS",
         "url_template": "rtmps://iad05.contribute.live-video.net/app/{stream_key}",
         "authentication": "v1_5f2e593731dad88b6bdb03a3517d306ef88a73e29619ee4b49012d557e881484_65c5dc81_7b2276223a302c2262223a393939392c2274223a5b7b2277223a3634302c2268223a3336302c2262223a3530302c226330223a312c226331223a302c226332223a307d2c7b2277223a313238302c2268223a3732302c2262223a313730302c226330223a312c226331223a302c226332223a307d2c7b2277223a313932302c2268223a313038302c2262223a363030302c226330223a312c226331223a302c226332223a307d5d7d_live_495665160_FC45sNuCYUwLnCVtCnXSjEWkusXzJI"
      }
   ],
   "meta": {
      "config_id": "d34c2f7e-ce3a-4be4-a6a0-f51960abbc4f",
      …
   }
   …
}
```

Kemudian, jika pengguna memilih RTMP, Anda akan membuka koneksi ke:

```
rtmp://iad05.contribute.live-video.net/app/v1_5f2e593731dad88b6bdb03a3517d306ef88a73e29619ee4b49012d557e881484_65c5dc81_7b2276223a302c2262223a393939392c2274223a5b7b2277223a3634302c2268223a3336302c2262223a3530302c226330223a312c226331223a302c226332223a307d2c7b2277223a313238302c2268223a3732302c2262223a313730302c226330223a312c226331223a302c226332223a307d2c7b2277223a313932302c2268223a313038302c2262223a363030302c226330223a312c226331223a302c226332223a307d5d7d_live_495665160_FC45sNuCYUwLnCVtCnXSjEWkusXzJI?clientConfigId=d34c2f7e-ce3a-4be4-a6a0-f51960abbc4f
```

#### Menangani Pemutusan Video
<a name="multitrack-video-sw-integration-auto-stream-enhanced-rtmp-disconnects"></a>

Sistem video multitrack memberlakukan beberapa batasan. Secara umum, keterbatasan ada karena tiga alasan:

1. Keamanan sistem — IVS perlu membatasi input untuk skalabilitas. Contohnya termasuk batas bandwidth streaming berdasarkan per saluran yang memengaruhi pemrosesan input, hak bitrate pada trek atau resolusi yang memengaruhi kapasitas output. capacity/cost, and a number-of-tracks entitlement that affects CDN replication/delivery

1. Fungsionalitas sistem — Layanan perlu membatasi input untuk kompatibilitas fitur (misalnya, dukungan platform untuk codec individu atau dukungan kontainer pengiriman untuk codec tingkat lanjut).

1. Pengalaman pemirsa — Layanan perlu membatasi masukan untuk pengalaman pemirsa dan reputasi merek. Misalnya, layanan mengontrol algoritma ABR pemutar yang menggerakkan QoE di semua perangkat pengguna target (desktop, seluler, TV/OTT, dll.) Dan aplikasi (browser, asli, dll.).

Sistem video memutus klien dalam beberapa skenario:
+ Klien mencoba terhubung ke server RTMP dengan video multitrack tetapi tidak menggunakan kunci aliran yang dikembalikan oleh. [GetClientConfiguration](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-GetClientConfiguration.html)
+ Klien menyediakan video multitrack yang tidak sesuai dengan spesifikasi yang dikembalikan oleh GetClientConfiguration; misalnya:
  + Jumlah trek tidak cocok.
  + Sebuah trek individu memiliki codec yang tidak cocok.
  + Lagu individu memiliki resolusi yang tidak cocok.
  + Sebuah track individu memiliki frame rate yang tidak cocok.
  + Sebuah trek individu memiliki bitrate yang tidak cocok.
+ Klien tidak menyediakan trek video yang telah disejajarkan. IDRs
+ Metrik kinerja siaran tidak mendahului setiap IDR di setiap trek.

Pemutusan dapat terjadi pada awal streaming (yaitu, saluran tidak pernah ditayangkan) atau di tengah aliran (yaitu, saluran aktif, ketidakcocokan terdeteksi, dan kemudian klien terputus).

#### Menyambung Ulang Secara Otomatis
<a name="multitrack-video-sw-integration-auto-stream-enhanced-rtmp-auto-reconnecting"></a>

Validitas kunci aliran yang dikembalikan oleh GetClientConfiguration adalah 48 jam atau sampai kunci aliran tidak valid dengan memanggil. DeleteStreamKey Durasi maksimum aliran IVS adalah 48 jam; setelah itu, aliran dihentikan dan sesi streaming terputus. Sambungan kembali yang berhasil (secara otomatis atau manual) memulai aliran baru.

Perangkat lunak siaran Anda dapat menerapkan koneksi ulang otomatis. Jika Anda mendukung koneksi ulang otomatis, Anda harus mengizinkan pengguna untuk enable/disable melakukannya dan mengikuti panduan ini:
+ Menerapkan penundaan percobaan ulang backoff eksponensial (termasuk penyimpangan acak kecil) antara upaya koneksi.
+ Coba lagi untuk paling banyak 25 upaya koneksi. Misalnya, OBS Studio mencoba ulang 25 kali, dengan waktu tunggu yang meningkat secara eksponensial antara upaya yang dibatasi pada 15 menit. Dalam praktiknya, ini berarti percobaan ulang terakhir terjadi kira-kira 3 jam setelah terputus.
+ Jika Anda terputus segera setelah mengirim `publish` saat menghubungkan, panggil GetClientConfiguration, konfigurasikan ulang pengaturan encoder, dan kemudian coba sambungkan lagi.

#### Menghentikan Stream dan Memutus
<a name="multitrack-video-sw-integration-auto-stream-enhanced-rtmp-stopping-and-reconnecting"></a>

Ketika pengguna berhenti streaming, dan jika koneksi TCP masih terbuka (misalnya, koneksi tingkat yang lebih rendah tidak diatur ulang), Anda harus mengirim FCUnpublish ([contoh implementasi di OBS Studio](https://github.com/obsproject/obs-studio/blob/master/plugins/obs-outputs/librtmp/rtmp.c#L1973-L1999)) sebelum menutup koneksi RTMP. Ini sangat penting untuk memberi sinyal maksud pengguna dari akhir aliran, karena fitur hilir mengandalkannya untuk beroperasi dengan benar.

## Fitur yang Diperlukan: Metrik Kinerja Siaran (BPM)
<a name="multitrack-video-sw-integration-broadcast-perf-metrics"></a>

Untuk memungkinkan peningkatan berkelanjutan dari konfigurasi aliran otomatis, untuk memberikan pengaturan streaming terbaik, metrik kinerja siaran (BPM) harus diukur dan dikirim.

Metrik dikumpulkan dan dikirim secara in-band melalui pesan SEI (untuk AVC/HEVC). Dua kelas data dikumpulkan:
+ *Stempel waktu* dikumpulkan untuk mengukur end-to-end latensi antara penyiar dan pemirsa. Mereka berguna untuk:
  + Menyediakan penyiar atau audiens dengan perkiraan latensi. end-to-end
  + Menganalisis jitter stempel waktu yang mungkin mengindikasikan stres sistem atau konektivitas jaringan mil pertama yang buruk.
  + Mereferensikan waktu acara dunia nyata untuk menyelaraskan dan menggabungkan data penghitung deret waktu.

  Stempel waktu yang dikirim dari penyiar didasarkan pada jam referensi umum global, biasanya jam yang disinkronkan NTP menggunakan zona waktu UTC\$10. RFC3339 umumnya digunakan untuk skenario “waktu Internet” ini. Ini memberikan referensi absolut, membuat perhitungan perbedaan temporal sepele.
+ *Penghitung bingkai* dikumpulkan untuk mengukur kinerja perangkat lunak siaran dan encoder video pada tingkat bingkai. Mereka berguna untuk:
  + Menyediakan penyiar dengan dasbor kinerja yang mencakup sinyal tambahan, untuk membantu mereka meningkatkan pengaturan streaming mereka.
  + Memberikan sinyal proaktif yang mungkin berkorelasi dengan perubahan lingkungan seperti driver GPU yang baru dirilis atau versi/tambalan OS.
  + Memberikan umpan balik untuk memungkinkan layanan video mengulangi dan merilis peningkatan dengan aman GetClientConfiguration, termasuk dukungan untuk vendor perangkat keras baru, model GPU baru, codec baru, fitur driver baru, penyetelan pengaturan encoder video tambahan, dan preset baru yang dikendalikan pengguna (misalnya, “Pengaturan PC Ganda” vs. “Pengaturan Gaming\$1Streaming”).

### Sisipkan SEI/OBU Pesan
<a name="multitrack-video-sw-integration-auto-stream-broadcast-perf-metrics-seiobu-messages"></a>

Lihat [Definisi Pesan BPM untuk definisi](#multitrack-video-sw-integration-performance-metrics-definitions) byte-stream pesan tertentu.

Metrik BPM harus disisipkan di semua trek video sesaat sebelum IDR. Ketiga pesan (BPM TS, BPM SM, dan BPM ERM) harus dikirim bersama, tetapi masing-masing harus dikirim sebagai NUT terpisah (AVC/HEVC).

BPM SM dan BPM ERM yang dikirim di segmen pertama harus memiliki penghitung bingkai yang disetel ke 0. Ini mungkin tampak berlawanan dengan intuisi pada awalnya; Namun, penghitung seperti jumlah frame yang dikodekan per rendisi tidak memiliki data yang berarti sampai setelah pengkodean selesai, dan hasilnya adalah bahwa penghitung bingkai di segmen N sejajar dengan segmen N-1. Yang terbaik adalah memikirkan metrik BPM sebagai rangkaian data waktu yang dikirimkan dalam bitstream video pada interval IDR. Jika perlu, penataan ulang yang tepat dari seri data harus dilakukan oleh penerima menggunakan stempel waktu yang disediakan.

Ilustrasi di bawah ini menggambarkan skenario khas untuk aliran multitrack tiga rendisi. Dengan ukuran segmen tipikal dua detik, metrik akan dikirim setiap dua detik untuk setiap rendisi.

![\[Skenario khas untuk aliran multitrack tiga rendisi.\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/images/BPM_-_Insert_SEI_OBU_Messages.png)


## Fitur yang Direkomendasikan
<a name="multitrack-video-sw-integration-recommended-features"></a>

### Izinkan Pemilihan Server Otomatis
<a name="multitrack-video-sw-integration-recommended-features-auto-server-selection"></a>

Pemilihan server otomatis membantu pengguna memilih server ingest terbaik untuk terhubung ke streaming langsung mereka, mengingat perubahan dalam kondisi jaringan global dan menyerap ketersediaan PoP (Point of Presence).

Jika perangkat lunak siaran Anda mendukung pemilihan server otomatis, kami mengharapkan perilaku yang berbeda tergantung pada apakah perangkat lunak mengimplementasikan GetClientConfiguration dan/atau FindIngest. Setiap skenario tercantum secara terpisah di bawah ini.

Jika perangkat lunak siaran mengimplementasikan keduanya GetClientConfiguration dan FindIngest:


|  Pemilihan UI Pengguna  |  Connect ke titik akhir ingest yang ditentukan oleh...  | 
| --- | --- | 
|  Otomatis  |  GetClientConfiguration  | 
|  Titik akhir konsumsi khusus dari FindIngest  |  Pilihan pengguna  | 
|  Tentukan Server Kustom  |  Pilihan pengguna  | 

Jika perangkat lunak siaran mengimplementasikan GetClientConfiguration tetapi tidak mengimplementasikan FindIngest:


|  Pemilihan UI Pengguna  |  Connect ke titik akhir ingest yang ditentukan oleh...  | 
| --- | --- | 
|  Otomatis  |  GetClientConfiguration   | 
|  Tentukan Server Kustom  |  Pilihan pengguna  | 

Jika perangkat lunak siaran tidak mengimplementasikan GetClientConfiguration tetapi mengimplementasikan FindIngest:


|  Pemilihan UI Pengguna  |  Connect ke titik akhir ingest yang ditentukan oleh...  | 
| --- | --- | 
|  Otomatis  |  FindIngest   | 
|  Titik akhir konsumsi khusus dari FindIngest  |  Pilihan pengguna  | 
|  Tentukan Server Kustom  |  Pilihan pengguna  | 

Jika perangkat lunak siaran tidak mengimplementasikan GetClientConfiguration atau FindIngest:


|  Pemilihan UI Pengguna  |  Connect ke titik akhir ingest yang ditentukan oleh...  | 
| --- | --- | 
|  Otomatis  |  URL konsumsi global:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  | 
|  Tentukan Server Kustom  |  Pilihan pengguna  | 

Lihat [Menggunakan FindIngest Server untuk Tujuan Streaming Otomatis](#multitrack-video-sw-integration-recommended-features-using-findingest) untuk informasi selengkapnya tentang penggunaan titik akhir ingest yang ditentukan oleh. FindIngest

### Izinkan Pengguna Mengonfigurasi Tujuan Streaming
<a name="multitrack-video-sw-integration-recommended-features-streaming-destination"></a>

Saat pengguna mengonfigurasi tujuan streaming mereka, Anda harus menanyakan [FindIngest](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-FindIngest.html)dan memberi pengguna kemampuan untuk:
+ Pilih antara RTMP atau RTMPS (default untuk Amazon IVS).
+ Pilih **Otomatis** untuk server.
+ Pilih server tertentu dari daftar yang dikembalikan oleh [FindIngest](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-FindIngest.html)
+ Masukkan server kustom; misalnya, gunakan **Tentukan Server Kustom**.

Anda dapat memfilter daftar yang dikembalikan FindIngest berdasarkan protokol yang dipilih oleh pengguna (RTMP vs RTMPS) atau pertimbangan lainnya.

Misalnya, implementasi Amazon IVS di OBS Studio mencapai ini dengan menyediakan drop-down **Server** sederhana dengan opsi berikut:
+ Otomatis (RTMPS, Direkomendasikan)
+ Otomatis (RTMP)
+ AS Timur: Ashburn, VA (5) (RTMPS)
+ AS Timur: New York, NY (50) (RTMPS)
+ AS Timur: New York, NY (RTMPS)
+ AS Timur: Ashburn, VA (5) (RTMP)
+ AS Timur: New York, NY (50) (RTMP)
+ AS Timur: New York, NY (RTMP)
+ Tentukan Server Kustom

Saat **Tentukan Server Kustom** dipilih, kotak teks disediakan bagi pengguna untuk memasukkan URL RTMP.

### Menggunakan FindIngest Server untuk Tujuan Streaming Otomatis
<a name="multitrack-video-sw-integration-recommended-features-using-findingest"></a>

Jika Anda menggunakan titik akhir ingest yang ditentukan oleh FindIngest saat Auto ditentukan untuk tujuan streaming, gunakan entri dengan `priority` nilai terendah yang dikembalikan oleh. [FindIngest](https://docs.aws.amazon.com//ivs/latest//BroadcastSWIntegAPIReference/actions-FindIngest.html) Untuk mengurangi waktu yang dibutuhkan streaming untuk ditayangkan, Anda dapat menyimpan FindIngest respons dalam cache. Jika Anda melakukan cache respons, perbarui nilai cache secara teratur.

Jika pengguna memilih RTMP, gunakan `url_template` string sebagai tujuan siaran RTMP. Jika pengguna memilih RTMPS, gunakan `url_template_secure` string sebagai tujuan siaran RTMPS. Dalam kedua kasus, ganti `{stream_key}` dengan kunci aliran pengguna.

## Definisi Pesan Metrik Kinerja Siaran (BPM)
<a name="multitrack-video-sw-integration-performance-metrics-definitions"></a>

Pesan BPM didasarkan pada sintaks SEI [standar H.264](https://www.itu.int/rec/T-REC-H.264). Untuk referensi, data pengguna sintaks SEI yang tidak terdaftar dari spesifikasi H.264 adalah:

![\[Data pengguna sintaks pesan SEI tidak terdaftar.\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/images/BPM_Definitions.png)


Untuk pesan BPM, semua aturan parsing dan notasi dari standar H.264 berlaku, misalnya, “u (128)” berarti bilangan bulat 128-bit yang tidak ditandatangani, MSB terlebih dahulu.

Tiga pesan SEI didefinisikan untuk BPM:
+ [BPM TS SEI: Pesan stempel waktu](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts)
+ BPM SM SEI: Pesan Metrik [Sesi](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-sm)
+ BPM ERM SEI: Pesan Metrik Rendition yang [Disandikan](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-erm)

Semua pesan BPM SEI mengirim UUID 128-bit yang diperlukan oleh `user_data_unregistered()` sintaks, diikuti oleh loop byte payload. Pesan yang dihasilkan kemudian dienkapsulasi dalam semantik tingkat yang lebih tinggi (misalnya, NALU, RBSP, dan pencegahan emulasi kode awal).

### BPM TS (Timestamp) SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts"></a>

Pesan BPM TS SEI menyampaikan satu atau lebih stempel waktu terkait. Misalnya, klien dapat memberi sinyal stempel waktu untuk komposisi bingkai, permintaan enkode bingkai, permintaan enkode bingkai lengkap, dan paket disisipkan dalam satu pesan SEI, dan klien dapat memutuskan apakah masing-masing stempel waktu ini harus dikirim sebagai jam dinding (/01-style) atau delta (perbedaan) jam atau. RFC3339 ISO86 duration-since-epoch Harus ada satu stempel waktu yang menyediakan referensi untuk tipe delta; ini harus diurus oleh penerapan, bukan oleh batasan sintaksis apa pun.


|  |  |  | 
| --- |--- |--- |
|  `user_data_unregistered_bpm_ts( payloadSize ) {`  |  **C**  |  **Deskriptor**  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (128)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  st (v)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  saya (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  `}`  |   |   | 

#### Tabel Deskripsi Lapangan BPM TS SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts-fields"></a>


|  Bidang  |  Deskripsi  | 
| --- | --- | 
|  `uuid_iso_iec_11578`  |  Setel ke hex: `0aecffe752724e2fa62fd19cd61a93b5` Dengan penggunaan pesan SEI yang tidak terdaftar, UUID diperlukan untuk membedakan pesan ini dari pesan lain yang tidak terdaftar.  | 
|  `ts_reserved_zero_4bits`  |  Terpesan untuk digunakan di masa mendatang. Setel ke`b('0000')`. Penerima akan mengabaikan bit ini.  | 
|  `num_timestamps_minus1`  |  `num_timestamps=num_timestamps_minus1+1` `num_timestamps_minus1`harus antara 0 dan 15, yang berarti antara 1 dan 16 stempel waktu dapat ditandai.  | 
|  `timestamp_type`  |  Lihat [timestamp\$1type Tabel](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts-types).  | 
|  `timestamp_event`  |  Salah satu dari yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html) Tidak ada diskriminator sintaksis untuk mengidentifikasi keunikan dalam kasus di mana `num_timestamps_minus1` lebih besar dari 0 (yaitu, lebih dari satu stempel waktu ditandai); karenanya, `timestamp_event` harus unik dalam loop SEI. Pensinyalan beberapa stempel waktu dengan yang sama tidak `timestamp_event` dihalangi; Namun, interpretasi stempel waktu berada di luar cakupan pesan.  | 

#### timestamp\$1type Tabel
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts-types"></a>

`timestamp_type`menentukan jenis seperti:
+ Format “Jam dinding” di mana tanggal dan waktu berbasis kalender diberi sinyal.
+ Durasi sejak zaman.
+ Stempel waktu Delta di mana perbedaan antara dua peristiwa ditandai.
+ Format timestamp tambahan yang mungkin diperlukan di masa depan.


|  timestamp\$1type  |  Nama  |  Deskripsi  | 
| --- | --- | --- | 
|  0  |  tidak terdefinisi  |  Tidak terdefinisi - jangan gunakan.  | 
|  1  |  `rfc3339_ts`  |  [RFC3339](https://www.rfc-editor.org/rfc/rfc3339)adalah profil [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) untuk penggunaan Internet, yang membatasi beberapa opsi di ISO86 01. `timestamp_type==1`harus menggunakan notasi waktu RFC3339 berbasis. Perhatikan bahwa RFC3339 tidak mendukung zona waktu. Semua stempel waktu relatif terhadap UTC (alias waktu “Zulu”), yang menurut definisi adalah offset UTC 00:00.  r `fc3339_ts` akan menjadi string. `st(v)`didefinisikan dalam bagian 7.2 dari standar [H.264](https://www.itu.int/rec/T-REC-H.264). Lihat catatan pada detik kabisat, di bawah tabel ini. Contoh: `2024-03-25T15:10:34.489Z` (489 mengacu pada milidetik)  | 
|  2  |  `duration_since_epoch_ts`  |  Durasi sejak zaman pada 1970-01-01T 00:00:00 Z000 dalam milidetik. Lihat catatan pada detik kabisat, di bawah tabel ini.  | 
|  3  |  `delta_ts`  |  Stempel waktu Delta, mengekspresikan perbedaan dalam nanodetik antara 2 peristiwa. Bilangan bulat yang ditandatangani memungkinkan delta positif dan negatif diberi sinyal.  | 
|  4-255  |  Reserved  |  Dicadangkan.  | 

**Catatan tentang detik kabisat:** Penting untuk dicatat bahwa kesepakatan dibuat untuk menghentikan penggunaan detik kabisat pada tahun 2035. Lihat [entri Wikipedia pada detik kabisat](https://en.wikipedia.org/wiki/Leap_second) untuk detailnya. Sebaiknya gunakan stempel waktu yang mengecualikan detik kabisat. Ini sejalan dengan praktik yang diharapkan pada tahun 2035 dan menghindari kemungkinan kesalahan perhitungan dalam waktu.

### BPM SM (Metrik Sesi) SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-sm"></a>

Pesan BPM SM SEI menyampaikan serangkaian metrik yang berhubungan dengan sesi pengirim secara keseluruhan. Di OBS Studio, ini berarti mengirim penghitung bingkai berikut:
+ Bingkai sesi dirender
+ Bingkai sesi dijatuhkan
+ Bingkai sesi tertinggal
+ Output bingkai sesi

Pesan SEI ini juga menyertakan stempel waktu. Ini berlebihan dengan BPM TS SEI; namun, memberikan stempel waktu eksplisit di setiap pesan SEI memberikan unit perilaku atom dan mengurangi beban pada penerima untuk menyelaraskan kembali data. Juga, jika perlu menghapus atau tidak mengirim BPM TS SEI, masih akan ada stempel waktu eksplisit dalam pesan BPM SM SEI untuk digunakan.


|  |  |  | 
| --- |--- |--- |
|  `user_data_unregistered_bpm_sm( payloadSize ) {`  |  **C**  |  **Deskriptor**  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (128)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  st (v)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  saya (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (32)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  `}`  |   |   | 

#### Tabel Deskripsi Bidang BPM SM SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-sm-fields"></a>

Banyak bidang dalam pesan SEI ini mirip dengan bidang BPM TS SEI. Perbedaan yang signifikan adalah nilai UUID, jumlah stempel waktu yang diharapkan, dan penghitung yang ditransmisikan.


|  Bidang  |  Deskripsi  | 
| --- | --- | 
|  `uuid_iso_iec_11578`  |  Setel ke hex: `ca60e71c-6a8b-4388-a377-151df7bf8ac2` Dengan penggunaan pesan SEI yang tidak terdaftar, UUID diperlukan untuk membedakan pesan ini dari pesan lain yang tidak terdaftar.  | 
|  `ts_reserved_zero_4bits`  |  Terpesan untuk digunakan di masa mendatang. Setel ke`b('0000')`. Penerima akan mengabaikan bit ini.  | 
|  `num_timestamps_minus1`  |  `num_timestamps=num_timestamps_minus1+1` `num_timestamps_minus1`harus antara 0 dan 15, yang berarti antara 1 dan 16 stempel waktu dapat ditandai. Saat ini, ini harus 0 (menunjukkan stempel waktu tunggal).  | 
|  `timestamp_type`  |  Lihat [timestamp\$1type Tabel](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts-types). Untuk BPM SM SEI, ini harus tipe 1 - RFC3339 string.  | 
|  `timestamp_event`  |  Salah satu dari yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html) Tidak ada diskriminator sintaksis untuk mengidentifikasi keunikan dalam kasus di mana `num_timestamps_minus1` lebih besar dari 0 (yaitu, lebih dari satu stempel waktu ditandai); karenanya, `timestamp_event` harus unik dalam loop SEI. Pensinyalan beberapa stempel waktu dengan yang sama tidak `timestamp_event` dihalangi; Namun, interpretasi stempel waktu berada di luar cakupan pesan. **Catatan:** Amazon IVS mengharapkan BPM SM SEI `timestamp_event` hanya menggunakan set ke 4 (). `BPM_TS_EVENT_PIR` Ini akan berkembang karena dukungan untuk acara stempel waktu tambahan ditambahkan.  | 
|  `num_counters_minus1`  |  `num_counters=num_counters_minus1+1` `num_counters_minus1`harus antara 0 dan 15, yang berarti antara 1 dan 16 penghitung dapat ditandai. Untuk BPM SM SEI, ini harus 3 (artinya 4 penghitung).  | 
|  `counter_tag`  |  Salah satu dari yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  | 
|  `counter_value`  |  Nilai perbedaan 32-bit untuk yang ditentukan`counter_tag`, relatif terhadap terakhir kali dikirim. Misalnya, dengan rendering 60 fps, setiap 2 detik `counter_value` harus 120.  | 

#### Contoh BPM SM
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-sm-example"></a>

Berikut adalah contoh BPM SM SEI yang dikirim ke Amazon IVS:
+ `uuid_iso_iec_11578`(16 byte): ca60e71c-6a8b-4388-a377-151df7bf8ac2
+ `ts_reserved_zero_4bits`(4 bit): 0x0
+ `num_timestamps_minus1`(4 bit): 0x0 (artinya 1 stempel waktu sedang dikirim)
+ `timestamp_type`(1 byte): 0x01 (RFC3339 stempel waktu - format string)
+ `timestamp_event`(1 byte): 0x04 (BPM\$1TS\$1EVENT\$1PIR)
+ `rfc3339_ts`: “2024-03-25T 15:10:34.489 Z”
+ `ts_reserved_zero_4bits`(4 bit): 0x0
+ `num_counters_minus1`(4 bit): 0x3 (artinya 4 penghitung sedang dikirim)
+ `counter_tag`(1 byte): 0x01 (bingkai yang dirender oleh kompositor sejak pesan terakhir)
+ `counter_value`(4 byte)
+ `counter_tag`(1 byte): 0x02 (bingkai tertinggal oleh kompositor sejak pesan terakhir)
+ `counter_value`(4 byte)
+ `counter_tag`(1 byte): 0x03 (frame turun karena kemacetan jaringan sejak pesan terakhir)
+ `counter_value`(4 byte)
+ `counter_tag`(1 byte): 0x04 (total output frame (jumlah semua rendisi encoder video tenggelam sejak pesan terakhir)
+ `counter_value`(4 byte)

### BPM ERM (Metrik Rendition Terenkode) SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-erm"></a>

Pesan BPM ERM SEI menyampaikan serangkaian metrik yang berhubungan dengan setiap rendisi yang dikodekan. Di OBS Studio, ini berarti mengirim penghitung bingkai berikut:
+ Masukan bingkai rendisi
+ Bingkai rendisi dilewati
+ Output bingkai rendisi

Pesan SEI ini juga menyertakan stempel waktu. Ini berlebihan dengan BPM TS SEI; namun, memberikan stempel waktu eksplisit di setiap pesan SEI memberikan unit perilaku atom dan mengurangi beban pada penerima untuk menyelaraskan kembali data. Juga, jika perlu menghapus atau tidak mengirim BPM TS SEI, masih akan ada stempel waktu eksplisit dalam pesan BPM ERM SEI untuk digunakan.


|  |  |  | 
| --- |--- |--- |
|  `user_data_unregistered_bpm_erm( payloadSize ) {`  |  **C**  |  **Deskriptor**  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (128)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  st (v)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  saya (64)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  u (4)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (8)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |  5  |  b (32)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  |   |   | 
|  `}`  |   |   | 

#### Tabel Deskripsi Lapangan BPM ERM SEI
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-erm-fields"></a>

Banyak bidang dalam pesan SEI ini mirip dengan bidang BPM TS SEI dan bidang BPM SM SEI. Perbedaan yang signifikan adalah nilai UUID, jumlah stempel waktu yang diharapkan, dan penghitung yang ditransmisikan.


|  Bidang  |  Deskripsi  | 
| --- | --- | 
|  `uuid_iso_iec_11578`  |  Setel ke hex: `f1fbc1d5-101e-4fb5-a61e-b8ce3c07b8c0` Dengan penggunaan pesan SEI yang tidak terdaftar, UUID diperlukan untuk membedakan pesan ini dari pesan lain yang tidak terdaftar.  | 
|  `ts_reserved_zero_4bits`  |  Terpesan untuk digunakan di masa mendatang. Setel ke`b('0000')`. Penerima akan mengabaikan bit ini.  | 
|  `num_timestamps_minus1`  |  `num_timestamps=num_timestamps_minus1+1` `num_timestamps_minus1`harus antara 0 dan 15, yang berarti antara 1 dan 16 stempel waktu dapat ditandai. Saat ini, ini harus 0 (menunjukkan stempel waktu tunggal).  | 
|  `timestamp_type`  |  Lihat [timestamp\$1type Tabel](#multitrack-video-sw-integration-performance-metrics-definitions-bpm-ts-types). Ini harus menjadi tipe 1 - RFC3339 string.  | 
|  `timestamp_event`  |  Salah satu dari yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html) Tidak ada diskriminator sintaksis untuk mengidentifikasi keunikan dalam kasus di mana `num_timestamps_minus1` lebih besar dari 0 (yaitu, lebih dari satu stempel waktu ditandai); karenanya, `timestamp_event` harus unik dalam loop SEI. Pensinyalan beberapa stempel waktu dengan yang sama tidak `timestamp_event` dihalangi; Namun, interpretasi stempel waktu berada di luar cakupan pesan. **Catatan:** Amazon IVS mengharapkan BPM ERM SEI menggunakan `timestamp_event` set hanya ke 4 (). `BPM_TS_EVENT_PIR` Ini akan berkembang karena dukungan untuk acara stempel waktu tambahan ditambahkan.  | 
|  `num_counters_minus1`  |  `num_counters=num_counters_minus1+1` `num_counters_minus1`harus antara 0 dan 15, yang berarti antara 1 dan 16 penghitung dapat ditandai. Untuk BPM ERM SEI, ini harus 2 (artinya 3 penghitung).  | 
|  `counter_tag`  |  Salah satu dari yang berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ivs/latest/LowLatencyUserGuide/multitrack-video-sw-integration.html)  | 
|  `counter_value`  |  Nilai perbedaan 32-bit untuk yang ditentukan`counter_tag`, relatif terhadap terakhir kali dikirim. Misalnya, dengan rendering 60 fps, setiap 2 detik `counter_value` harus 120.  | 

#### Contoh BPM ERM
<a name="multitrack-video-sw-integration-performance-metrics-definitions-bpm-erm-example"></a>

Berikut adalah contoh BPM ERM SEI yang dikirim ke Amazon IVS:
+ `uuid_iso_iec_11578`(16 byte): f1fbc1d5-101e-4fb5-a61e-b8ce3c07b8c0
+ `ts_reserved_zero_4bits`(4 bit): 0x0
+ `num_timestamps_minus1`(4 bit): 0x0 (Artinya 1 stempel waktu sedang dikirim)
+ `timestamp_type`(1 byte): 0x01 (RFC3339 stempel waktu - format string)
+ `timestamp_event`(1 byte): 0x04 (BPM\$1TS\$1EVENT\$1PIR)
+ `rfc3339_ts`: “2024-03-25T 15:10:34.489 Z”
+ `ts_reserved_zero_4bits`(4 bit): 0x0
+ `num_counters_minus1`(4 bit): 0x2 (Artinya 3 penghitung sedang dikirim)
+ `counter_tag`(1 byte): 0x01 (Input bingkai rendisi yang dikodekan sejak pesan terakhir)
+ `counter_value`(4 byte)
+ `counter_tag`(1 byte): 0x02 (Bingkai rendisi yang dikodekan dilewati sejak pesan terakhir)
+ `counter_value`(4 byte)
+ `counter_tag`(1 byte): 0x03 (Output bingkai rendisi yang dikodekan sejak pesan terakhir)
+ `counter_value`(4 byte)