GetHLSStreamingSessionURL - Amazon Kinesis Video Streams

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

GetHLSStreamingSessionURL

Mengambil HTTP Live Streaming (HLS) URL untuk streaming. Anda kemudian dapat membuka URL di browser atau pemutar media untuk melihat konten aliran.

Baik parameter StreamName dan StreamARN parameter adalah opsional, tetapi Anda harus menentukan salah satu StreamName atau StreamARN ketika menjalankan API operasi ini.

Aliran video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan data melalui: HLS

Sesi Kinesis HLS Video Streams berisi fragmen dalam MPEG bentuk -4 terfragmentasi (juga MP4 disebut CMAF f atau) MPEG atau bentuk -2 (juga disebut potongan TS, yang spesifikasi juga mendukung). HLS Untuk informasi selengkapnya tentang jenis HLS fragmen, lihat HLSspesifikasinya.

Prosedur berikut menunjukkan cara menggunakan HLS dengan Kinesis Video Streams:

  1. Hubungi GetDataEndpoint API untuk mendapatkan titik akhir. Kemudian kirim GetHLSStreamingSessionURL permintaan ke titik akhir ini menggunakan parameter --endpoint-url.

  2. Ambil HLS URL penggunaanGetHLSStreamingSessionURL. Kinesis Video Streams HLS membuat sesi streaming yang akan digunakan untuk mengakses konten dalam aliran menggunakan protokol. HLS GetHLSStreamingSessionURLmengembalikan autentikasi URL (yang menyertakan token sesi terenkripsi) untuk daftar putar HLS master sesi (sumber daya root yang diperlukan untuk streaming dengan). HLS

    catatan

    Jangan berbagi atau menyimpan token ini di mana entitas yang tidak berwenang dapat mengaksesnya. Token menyediakan akses ke konten aliran. Lindungi token dengan tindakan yang sama yang akan Anda gunakan dengan kredensil Anda. AWS

    Media yang tersedia melalui daftar putar hanya terdiri dari aliran, rentang waktu, dan format yang diminta. Tidak ada data media lain (seperti bingkai di luar jendela yang diminta atau bitrate alternatif) yang tersedia.

  3. Berikan URL (berisi token sesi terenkripsi) untuk daftar putar HLS utama ke pemutar media yang mendukung protokol. HLS Kinesis Video Streams HLS membuat daftar putar media, fragmen inisialisasi, dan fragmen media tersedia melalui daftar putar master. URL Fragmen inisialisasi berisi data pribadi codec untuk aliran, dan data lain yang diperlukan untuk mengatur dekoder dan penyaji video atau audio. Fragmen media berisi bingkai video yang dikodekan H.264 atau sampel audio yang dikodekan. AAC

  4. Pemutar media menerima metadata aliran URL dan data media yang diautentikasi dan meminta secara normal. Ketika pemutar media meminta data, ia memanggil tindakan berikut:

    • G etHLSMaster Playlist: Mengambil playlist HLS master, yang berisi untuk GetHLSMediaPlaylist aksi URL untuk setiap lagu, dan metadata tambahan untuk pemutar media, termasuk perkiraan bitrate dan resolusi.

    • G etHLSMedia Playlist: Mengambil playlist HLS media, yang berisi URL untuk mengakses fragmen MP4 inisialisasi dengan GetMP4InitFragment tindakan, dan URLs untuk mengakses fragmen MP4 media dengan tindakan. GetMP4MediaFragment Daftar putar HLS media juga berisi metadata tentang aliran yang dibutuhkan pemain untuk memutarnya, seperti apakah itu PlaybackMode atau. LIVE ON_DEMAND Daftar putar HLS media biasanya statis untuk sesi dengan aPlaybackType. ON_DEMAND Daftar putar HLS media terus diperbarui dengan fragmen baru untuk sesi dengan aPlaybackType. LIVE Ada daftar putar HLS media yang berbeda untuk trek video dan trek audio (jika ada) yang berisi MP4 media URLs untuk trek tertentu.

    • DapatkanMP4InitFragment: Mengambil fragmen MP4 inisialisasi. Pemutar media biasanya memuat fragmen inisialisasi sebelum memuat fragmen media apa pun. Fragmen ini berisi atom "fytp" dan "moov", dan MP4 atom anak yang diperlukan untuk menginisialisasi dekoder pemutar media.

      Fragmen inisialisasi tidak sesuai dengan fragmen dalam aliran video Kinesis. Ini hanya berisi data pribadi codec untuk aliran dan trek masing-masing, yang diperlukan pemutar media untuk memecahkan kode bingkai media.

    • DapatkanMP4MediaFragment: Mengambil fragmen MP4 media. Fragmen-fragmen ini mengandung atom moof "" dan mdat "" dan MP4 atom anak mereka, yang berisi bingkai media fragmen yang dikodekan dan stempel waktunya.

      catatan

      Data pribadi codec (CPD) yang terkandung dalam setiap fragmen berisi informasi inisialisasi khusus codec, seperti frame rate, resolusi, dan profil pengkodean, yang diperlukan untuk mendekode fragmen dengan benar. Untuk TS danMP4, CPD perubahan didukung selama sesi streaming. Oleh karena itu, fragmen dalam sesi dapat memiliki informasi yang berbeda di dalam CPD tanpa mengganggu pemutaran. Untuk setiap sesi streaming, hanya 500 CPD perubahan yang diizinkan.

      penting

      Perubahan trek tidak didukung. Trek harus tetap konsisten di seluruh media yang ditanyakan. Streaming akan gagal jika fragmen dalam aliran berubah dari hanya memiliki video menjadi audio dan video, atau jika trek AAC audio diubah menjadi trek audio A-Law.

      Data yang diambil dengan tindakan ini dapat ditagih. Untuk selengkapnya, lihat Harga.

    • GetTSFragment: Mengambil fragmen MPEG TS yang berisi inisialisasi dan data media untuk semua trek dalam aliran.

      catatan

      Jika yaMPEG_TS, ContainerFormat ini API digunakan sebagai pengganti GetMP4InitFragment dan GetMP4MediaFragment untuk mengambil media aliran.

      Data yang diambil dengan tindakan ini dapat ditagih. Untuk informasi selengkapnya, lihat harga Kinesis Video Streams.

Sesi streaming tidak URL boleh dibagi antar pemain. Layanan mungkin membatasi sesi jika beberapa pemutar media membagikannya. Untuk batas koneksi, lihat Kuota Kinesis Video Streams.

Anda dapat memantau jumlah data yang dikonsumsi pemutar media dengan memantau CloudWatch metrik GetMP4MediaFragment.OutgoingBytes Amazon. Untuk informasi tentang penggunaan CloudWatch untuk memantau Kinesis Video Streams, lihat Memantau Kinesis Video Streams. Untuk informasi harga, lihat Harga dan Harga Amazon Kinesis Video Streams AWS . Biaya untuk HLS sesi dan AWS data keluar berlaku.

Lihat contoh pemutaran video di panduan dokumentasi: Gunakan AWS CLI untuk mengambil sesi HLS streaming URL danContoh: Gunakan HLS di HTML dan JavaScript.

Untuk informasi selengkapnyaHLS, lihat Streaming HTTP Langsung di situs Pengembang Apple.

penting

Jika kesalahan muncul setelah menjalankan API media yang diarsipkan Kinesis Video Streams, selain kode status dan badan respons, itu mencakup potongan-potongan informasi berikut: HTTP

  • x-amz-ErrorTypeHTTPheader - berisi jenis kesalahan yang lebih spesifik selain apa yang disediakan kode HTTP status.

  • x-amz-RequestIdHTTPheader — jika Anda ingin melaporkan masalah AWS, tim dukungan dapat mendiagnosis masalah dengan lebih baik jika diberi ID Permintaan.

Baik kode HTTP status dan ErrorType header dapat digunakan untuk membuat keputusan terprogram tentang apakah kesalahan dapat dicoba ulang dan dalam kondisi apa, serta memberikan informasi tentang tindakan apa yang mungkin perlu dilakukan oleh programmer klien agar berhasil mencoba lagi.

Untuk informasi selengkapnya, lihat bagian Kesalahan di bagian bawah topik ini, serta Kesalahan Umum.

Sintaks Permintaan

POST /getHLSStreamingSessionURL HTTP/1.1 Content-type: application/json { "ContainerFormat": "string", "DiscontinuityMode": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "HLSFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "MaxMediaPlaylistFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string" }

URIParameter Permintaan

Permintaan tidak menggunakan URI parameter apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam JSON format.

ContainerFormat

Menentukan format mana yang harus digunakan untuk kemasan media. Menentukan format FRAGMENTED_MP4 wadah mengemas media menjadi MP4 fragmen (f MP4 atauCMAF). Ini adalah kemasan yang direkomendasikan karena ada overhead kemasan minimal. Opsi format kontainer lainnya adalahMPEG_TS. HLStelah mendukung potongan MPEG TS sejak dirilis dan terkadang merupakan satu-satunya kemasan yang didukung pada pemain yang lebih tuaHLS. MPEGTS biasanya memiliki overhead kemasan 5-25 persen. Ini berarti MPEG TS biasanya membutuhkan 5-25 persen lebih banyak bandwidth dan biaya daripada fMP4.

Default-nya adalah FRAGMENTED_MP4.

Tipe: String

Nilai yang Valid: FRAGMENTED_MP4 | MPEG_TS

Wajib: Tidak

DiscontinuityMode

Menentukan kapan bendera menandai diskontinuitas antara fragmen ditambahkan ke daftar putar media.

Pemutar media biasanya membangun garis waktu konten media untuk diputar, berdasarkan stempel waktu setiap fragmen. Ini berarti bahwa jika ada tumpang tindih atau kesenjangan antara fragmen (seperti biasanya jika HLSFragmentSelector diatur keSERVER_TIMESTAMP), timeline media player juga akan memiliki celah kecil antara fragmen di beberapa tempat, dan akan menimpa frame di tempat lain. Kesenjangan di timeline pemutar media dapat menyebabkan pemutaran macet dan tumpang tindih dapat menyebabkan pemutaran menjadi gelisah. Ketika ada bendera diskontinuitas antara fragmen, pemutar media diharapkan untuk mengatur ulang timeline, sehingga fragmen berikutnya diputar segera setelah fragmen sebelumnya.

Mode berikut didukung:

  • ALWAYS: penanda diskontinuitas ditempatkan di antara setiap fragmen dalam daftar putar media. HLS Disarankan untuk menggunakan nilai ALWAYS jika stempel waktu fragmen tidak akurat.

  • NEVER: tidak ada penanda diskontinuitas yang ditempatkan di mana saja. Disarankan untuk menggunakan nilai NEVER untuk memastikan garis waktu pemutar media paling akurat memetakan ke stempel waktu produsen.

  • ON_DISCONTINUITY: penanda diskontinuitas ditempatkan di antara fragmen yang memiliki celah atau tumpang tindih lebih dari 50 milidetik. Untuk sebagian besar skenario pemutaran, disarankan untuk menggunakan nilai ON_DISCONTINUITY sehingga timeline pemutar media hanya diatur ulang ketika ada masalah signifikan dengan timeline media (misalnya fragmen yang hilang).

HLSFragmentSelectorDefaultnya adalah ALWAYS kapan diatur keSERVER_TIMESTAMP, dan NEVER ketika diatur kePRODUCER_TIMESTAMP.

Tipe: String

Nilai yang Valid: ALWAYS | NEVER | ON_DISCONTINUITY

Wajib: Tidak

DisplayFragmentTimestamp

Menentukan kapan stempel waktu mulai fragmen harus disertakan dalam daftar putar media. HLS Biasanya, pemutar media melaporkan posisi playhead sebagai waktu relatif terhadap awal fragmen pertama dalam sesi pemutaran. Namun, ketika stempel waktu awal disertakan dalam daftar putar HLS media, beberapa pemutar media mungkin melaporkan playhead saat ini sebagai waktu absolut berdasarkan stempel waktu fragmen. Ini dapat berguna untuk menciptakan pengalaman pemutaran yang menunjukkan kepada pemirsa waktu jam dinding media.

Default-nya adalah NEVER. HLSFragmentSelectorKapanSERVER_TIMESTAMP, stempel waktu akan menjadi stempel waktu mulai server. Demikian pula, kapan HLSFragmentSelectorPRODUCER_TIMESTAMP, stempel waktu akan menjadi stempel waktu mulai produsen.

Tipe: String

Nilai yang Valid: ALWAYS | NEVER

Wajib: Tidak

Expires

Waktu dalam hitungan detik hingga sesi yang diminta berakhir. Nilai ini bisa antara 300 (5 menit) dan 43200 (12 jam).

Ketika sesi berakhir, tidak ada panggilan baru keGetHLSMasterPlaylist,GetHLSMediaPlaylist,GetMP4InitFragment,GetMP4MediaFragment, atau GetTSFragment dapat dilakukan untuk sesi itu.

Defaultnya adalah 300 (5 menit).

Jenis: Integer

Rentang Valid: Nilai minimum 300. Nilai maksimum 43200.

Wajib: Tidak

HLSFragmentSelector

Rentang waktu fragmen yang diminta dan sumber stempel waktu.

Parameter ini diperlukan jika PlaybackMode ada ON_DEMAND atauLIVE_REPLAY. Parameter ini opsional jika PlaybackMode ada LIVE. Jika PlaybackMode yaLIVE, FragmentSelectorType dapat diatur, tetapi tidak TimestampRange harus diatur. Jika PlaybackMode ada ON_DEMAND atauLIVE_REPLAY, keduanya FragmentSelectorType dan TimestampRange harus diatur.

Tipe: Objek HLSFragmentSelector

Wajib: Tidak

MaxMediaPlaylistFragmentResults

Jumlah maksimum fragmen yang dikembalikan dalam daftar putar HLS media.

Ketika PlaybackMode isLIVE, fragmen terbaru dikembalikan ke nilai ini. Ketika PlaybackMode adalahON_DEMAND, fragmen tertua dikembalikan, hingga jumlah maksimum ini.

Ketika ada jumlah fragmen yang lebih tinggi yang tersedia di daftar putar HLS media langsung, pemutar video sering menyangga konten sebelum memulai pemutaran. Meningkatkan ukuran buffer meningkatkan latensi pemutaran, tetapi mengurangi kemungkinan rebuffering akan terjadi selama pemutaran. Kami merekomendasikan bahwa daftar putar HLS media langsung memiliki minimal 3 fragmen dan maksimal 10 fragmen.

Defaultnya adalah 5 fragmen jika PlaybackMode ada LIVE atauLIVE_REPLAY, dan 1.000 if PlaybackMode isON_DEMAND.

Nilai maksimum 5.000 fragmen sesuai dengan lebih dari 80 menit video pada streaming dengan fragmen 1 detik, dan lebih dari 13 jam video pada aliran dengan fragmen 10 detik.

Tipe: Long

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 5000.

Wajib: Tidak

PlaybackMode

Baik untuk mengambil data langsung, tayangan ulang langsung, atau diarsipkan, berdasarkan permintaan.

Fitur dari tiga jenis sesi meliputi:

  • LIVE: Untuk sesi jenis ini, daftar putar HLS media terus diperbarui dengan fragmen terbaru saat tersedia. Kami menyarankan agar pemutar media mengambil daftar putar baru pada interval satu detik. Ketika jenis sesi ini diputar di pemutar media, antarmuka pengguna biasanya menampilkan pemberitahuan “langsung”, tanpa kontrol scrubber untuk memilih posisi di jendela pemutaran untuk ditampilkan.

    catatan

    Dalam LIVE mode, fragmen terbaru yang tersedia disertakan dalam daftar putar HLS media, bahkan jika ada celah di antara fragmen (yaitu, jika ada fragmen yang hilang). Kesenjangan seperti ini dapat menyebabkan pemutar media berhenti atau menyebabkan lompatan dalam pemutaran. Dalam mode ini, fragmen tidak ditambahkan ke daftar putar HLS media jika lebih tua dari fragmen terbaru di daftar putar. Jika fragmen yang hilang tersedia setelah fragmen berikutnya ditambahkan ke daftar putar, fragmen yang lebih tua tidak ditambahkan, dan celah tidak terisi.

  • LIVE_REPLAY: Untuk sesi jenis ini, daftar putar HLS media diperbarui mirip dengan cara diperbarui untuk LIVE mode kecuali dimulai dengan memasukkan fragmen dari waktu mulai tertentu. Alih-alih fragmen ditambahkan saat dicerna, fragmen ditambahkan saat durasi fragmen berikutnya berlalu. Misalnya, jika fragmen dalam sesi berdurasi dua detik, maka fragmen baru ditambahkan ke daftar putar media setiap dua detik. Mode ini berguna untuk dapat memulai pemutaran dari saat suatu peristiwa terdeteksi dan melanjutkan media streaming langsung yang belum tertelan pada saat pembuatan sesi. Mode ini juga berguna untuk streaming media yang diarsipkan sebelumnya tanpa dibatasi oleh batas fragmen 1.000 dalam mode. ON_DEMAND

  • ON_DEMAND: Untuk sesi jenis ini, daftar putar HLS media berisi semua fragmen untuk sesi, hingga nomor yang ditentukan dalamMaxMediaPlaylistFragmentResults. Daftar putar harus diambil hanya sekali untuk setiap sesi. Ketika jenis sesi ini diputar di pemutar media, antarmuka pengguna biasanya menampilkan kontrol scrubber untuk memilih posisi di jendela pemutaran untuk ditampilkan.

Di semua mode pemutaran, jika FragmentSelectorType adaPRODUCER_TIMESTAMP, dan jika ada beberapa fragmen dengan stempel waktu awal yang sama, fragmen yang memiliki nomor fragmen terbesar (yaitu, fragmen terbaru) termasuk dalam daftar putar media. HLS Fragmen lainnya tidak termasuk. Fragmen yang memiliki stempel waktu berbeda tetapi memiliki durasi yang tumpang tindih masih termasuk dalam daftar putar media. HLS Hal ini dapat menyebabkan perilaku tak terduga di pemutar media.

Default-nya adalah LIVE.

Tipe: String

Nilai yang Valid: LIVE | LIVE_REPLAY | ON_DEMAND

Wajib: Tidak

StreamARN

Amazon Resource Name (ARN) dari stream untuk mengambil playlist HLS URL master.

Anda harus menentukan salah satu StreamName atauStreamARN.

Tipe: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.

Pola: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

Wajib: Tidak

StreamName

Nama aliran untuk mengambil daftar putar HLS URL master.

Anda harus menentukan salah satu StreamName atauStreamARN.

Tipe: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

Pola: [a-zA-Z0-9_.-]+

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200 Content-type: application/json { "HLSStreamingSessionURL": "string" }

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Data berikut dikembalikan dalam JSON format oleh layanan.

HLSStreamingSessionURL

URL(berisi token sesi) yang dapat digunakan pemutar media untuk mengambil daftar putar HLS master.

Tipe: String

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum.

ClientLimitExceededException

Kinesis Video Streams telah membatasi permintaan karena Anda telah melampaui batas. Coba buat panggilan nanti. Untuk informasi tentang batasan, lihat Kuota Kinesis Video Streams.

HTTPKode Status: 400

InvalidArgumentException

Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan.

HTTPKode Status: 400

InvalidCodecPrivateDataException

Data pribadi codec di setidaknya salah satu trek aliran video tidak valid untuk operasi ini.

HTTPKode Status: 400

MissingCodecPrivateDataException

Tidak ada data pribadi codec yang ditemukan di setidaknya satu trek aliran video.

HTTPKode Status: 400

NoDataRetentionException

GetImagesdiminta untuk aliran yang tidak menyimpan data (yaitu, memiliki DataRetentionInHours 0).

HTTPKode Status: 400

NotAuthorizedException

Kode Status: 403, Penelepon tidak berwenang untuk melakukan operasi pada aliran yang diberikan, atau token telah kedaluwarsa.

HTTPKode Status: 401

ResourceNotFoundException

GetImagesakan memunculkan kesalahan ini ketika Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

GetHLSStreamingSessionURLdan GetDASHStreamingSessionURL membuang kesalahan ini jika sesi dengan PlaybackMode dari ON_DEMAND atau LIVE_REPLAY diminta untuk aliran yang tidak memiliki fragmen dalam rentang waktu yang diminta, atau jika sesi dengan PlaybackMode of LIVE diminta untuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

HTTPKode Status: 404

UnsupportedStreamMediaTypeException

Jenis media (misalnya, video h.264 atau h.265 atau atau audio G.711) tidak dapat ditentukan dari codec trek di fragmen pertama untuk sesi IDs pemutaran. AAC ID codec untuk trek 1 harus V_MPEG/ISO/AVC dan, secara opsional, ID codec untuk trek 2 seharusnya. A_AAC

HTTPKode Status: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan ini API di salah satu bahasa khusus AWS SDKs, lihat berikut ini: