Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
GetHLSStreamingSessionURL
Mengambil URL HTTP Live Streaming (HLS) untuk streaming. Anda kemudian dapat membuka URL di browser atau pemutar media untuk melihat konten streaming.
Parameter StreamName
dan StreamARN
parameter bersifat opsional, tetapi Anda harus menentukan salah satu StreamName
atau StreamARN
saat menjalankan operasi API ini.
Aliran video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan data melalui HLS:
-
Retensi data harus lebih besar dari 0.
-
Trek video dari setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC) untuk format H.264 atau HEVC untuk format H.265 (spesifikasi MPEG-4 ISO/IEC 14496-15).
Untuk informasi tentang mengadaptasi data aliran ke format tertentu, lihat Bendera Adaptasi NAL. -
Track audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (spesifikasi AAC ISO/IEC 13818-7
).
Kinesis Video Streams Sesi HLS berisi fragmen dalam bentuk MPEG-4 terfragmentasi (juga disebut fMP4 atau CMAF) atau bentuk MPEG-2 (juga disebut potongan TS, yang juga didukung oleh spesifikasi HLS). Untuk informasi selengkapnya tentang jenis fragmen HLS, lihat spesifikasi HLS
Prosedur berikut menunjukkan cara menggunakan HLS dengan Kinesis Video Streams:
-
Panggil
GetDataEndpoint
API untuk mendapatkan titik akhir. Kemudian kirimGetHLSStreamingSessionURL
permintaan ke titik akhir ini menggunakan parameter --endpoint-url. -
Ambil URL HLS menggunakan.
GetHLSStreamingSessionURL
Kinesis Video Streams membuat sesi streaming HLS yang akan digunakan untuk mengakses konten dalam aliran menggunakan protokol HLS.GetHLSStreamingSessionURL
mengembalikan URL yang diautentikasi (yang menyertakan token sesi terenkripsi) untuk daftar putar master HLS 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 kredensyal 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.
-
Berikan URL (berisi token sesi terenkripsi) untuk daftar putar master HLS ke pemutar media yang mendukung protokol HLS. Kinesis Video Streams membuat daftar putar media HLS, fragmen inisialisasi, dan fragmen media tersedia melalui URL daftar putar utama. 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 disandikan AAC.
-
Pemutar media menerima URL yang diautentikasi dan meminta metadata aliran dan data media secara normal. Ketika pemutar media meminta data, ia memanggil tindakan berikut:
-
GetHLSMasterPlaylist: Mengambil daftar putar master HLS, yang berisi URL untuk
GetHLSMediaPlaylist
tindakan untuk setiap trek, dan metadata tambahan untuk pemutar media, termasuk perkiraan bitrate dan resolusi. -
GetHLSMediaPlaylist: Mengambil daftar putar media HLS, yang berisi URL untuk mengakses fragmen inisialisasi MP4 dengan
GetMP4InitFragment
tindakan, dan URL untuk mengakses fragmen media MP4 dengan tindakan.GetMP4MediaFragment
Daftar putar media HLS juga berisi metadata tentang aliran yang dibutuhkan pemain untuk memainkannya, seperti apakah itu atau.PlaybackMode
LIVE
ON_DEMAND
Daftar putar media HLS biasanya statis untuk sesi dengan aPlaybackType
.ON_DEMAND
Daftar putar media HLS terus diperbarui dengan fragmen baru untuk sesi dengan file.PlaybackType
LIVE
Ada daftar putar media HLS yang berbeda untuk trek video dan trek audio (jika ada) yang berisi URL media MP4 untuk trek tertentu. -
GetMP4InitFragment: Mengambil fragmen inisialisasi MP4. Pemutar media biasanya memuat fragmen inisialisasi sebelum memuat fragmen media apa pun. Fragmen ini berisi atom MP4 "" dan
moov
"", dan atom anak yang diperlukan untuk menginisialisasi dekoder pemutar media.fytp
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.
-
GetMP4MediaFragment: Mengambil fragmen media MP4. Fragmen-fragmen ini mengandung atom MP4 "
mdat
" dan "" dan atom anak mereka, yang berisi bingkai media fragmen yang dikodekan dan stempel waktunya.moof
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 dan MP4, perubahan CPD didukung selama sesi streaming. Oleh karena itu, fragmen dalam suatu sesi dapat memiliki informasi yang berbeda di CPD tanpa mengganggu pemutaran. Untuk setiap sesi streaming, hanya 500 perubahan CPD 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 audio AAC 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 ya
MPEG_TS
, API ini digunakan sebagai penggantiGetMP4InitFragment
danGetMP4MediaFragment
untuk mengambil media aliran.ContainerFormat
Data yang diambil dengan tindakan ini dapat ditagih. Untuk informasi selengkapnya, lihat harga Kinesis Video Streams
.
-
URL sesi streaming tidak boleh dibagikan antar pemain. Layanan mungkin membatasi sesi jika beberapa pemutar media membagikannya. Untuk batas koneksi, lihat Batas 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
Lihat contoh pemutaran video di panduan dokumentasi: Gunakan AWS CLI untuk mengambil URL sesi streaming HLS danContoh: Gunakan HLS dalam HTML dan JavaScript.
Untuk informasi selengkapnya tentang HLS, lihat Streaming Langsung HTTP
penting
Jika kesalahan muncul setelah menjalankan API media yang diarsipkan Kinesis Video Streams, selain kode status HTTP dan badan respons, itu mencakup potongan-potongan informasi berikut:
-
x-amz-ErrorType
Header HTTP - berisi jenis kesalahan yang lebih spesifik selain apa yang disediakan kode status HTTP. -
x-amz-RequestId
Header HTTP - jika Anda ingin melaporkan masalah AWS, tim dukungan dapat mendiagnosis masalah dengan lebih baik jika diberi ID Permintaan.
Baik kode status HTTP 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.
Minta Sintaks
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
"
}
Parameter Permintaan URI
Permintaan tidak menggunakan parameter URI apa pun.
Isi Permintaan
Permintaan menerima data berikut dalam format JSON.
- ContainerFormat
-
Menentukan format mana yang harus digunakan untuk kemasan media. Menentukan format
FRAGMENTED_MP4
wadah mengemas media menjadi fragmen MP4 (fMP4 atau CMAF). Ini adalah kemasan yang direkomendasikan karena ada overhead kemasan minimal. Opsi format kontainer lainnya adalahMPEG_TS
. HLS telah mendukung potongan MPEG TS sejak dirilis dan terkadang merupakan satu-satunya kemasan yang didukung pada pemain HLS yang lebih tua. MPEG TS biasanya memiliki overhead kemasan 5-25 persen. Ini berarti MPEG TS biasanya membutuhkan bandwidth dan biaya 5-25 persen lebih banyak daripada fMP4.Default-nya adalah
FRAGMENTED_MP4
.Jenis: 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 ke
SERVER_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 nilaiALWAYS
jika stempel waktu fragmen tidak akurat. -
NEVER
: tidak ada penanda diskontinuitas yang ditempatkan di mana saja. Disarankan untuk menggunakan nilaiNEVER
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 nilaiON_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
, danNEVER
ketika diatur kePRODUCER_TIMESTAMP
.Jenis: 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 media HLS, 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.
Nilai default-nya
NEVER
. HLSFragmentSelectorKapanSERVER_TIMESTAMP
, stempel waktu akan menjadi stempel waktu mulai server. Demikian pula, kapan HLSFragmentSelectorPRODUCER_TIMESTAMP
, stempel waktu akan menjadi stempel waktu mulai produsen.Jenis: 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 ke
GetHLSMasterPlaylist
,GetHLSMediaPlaylist
,GetMP4InitFragment
,GetMP4MediaFragment
, atauGetTSFragment
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
adaON_DEMAND
atauLIVE_REPLAY
. Parameter ini opsional jika PlaybackMode adaLIVE
. JikaPlaybackMode
yaLIVE
,FragmentSelectorType
dapat diatur, tetapi tidakTimestampRange
harus diatur. JikaPlaybackMode
adaON_DEMAND
atauLIVE_REPLAY
, keduanyaFragmentSelectorType
danTimestampRange
harus diatur.Tipe: Objek HLSFragmentSelector
Wajib: Tidak
- MaxMediaPlaylistFragmentResults
-
Jumlah maksimum fragmen yang dikembalikan dalam daftar putar media HLS.
Ketika
PlaybackMode
isLIVE
, fragmen terbaru dikembalikan ke nilai ini. KetikaPlaybackMode
adalahON_DEMAND
, fragmen tertua dikembalikan, hingga jumlah maksimum ini.Ketika ada jumlah fragmen yang lebih tinggi yang tersedia di daftar putar media HLS 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 media HLS langsung memiliki minimal 3 fragmen dan maksimal 10 fragmen.
Defaultnya adalah 5 fragmen jika
PlaybackMode
adaLIVE
atauLIVE_REPLAY
, dan 1.000 ifPlaybackMode
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 media HLS 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 media HLS, 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 media HLS 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 media HLS diperbarui mirip dengan cara diperbarui untukLIVE
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 media HLS berisi semua fragmen untuk sesi, hingga nomor yang ditentukan dalam.MaxMediaPlaylistFragmentResults
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
.Jenis: String
Nilai yang Valid:
LIVE | LIVE_REPLAY | ON_DEMAND
Wajib: Tidak
-
- StreamARN
-
Nama Sumber Daya Amazon (ARN) dari aliran untuk mengambil URL daftar putar master HLS.
Anda harus menentukan salah satu
StreamName
atauStreamARN
.Jenis: 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 URL daftar putar master HLS.
Anda harus menentukan salah satu
StreamName
atauStreamARN
.Jenis: 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.
Layanan mengembalikan data berikut dalam format JSON.
- HLSStreamingSessionURL
-
URL (berisi token sesi) yang dapat digunakan pemutar media untuk mengambil daftar putar master HLS.
Jenis: 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 batas, lihat Batas Kinesis Video Streams.
Kode Status HTTP: 400
- InvalidArgumentException
-
Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan.
Kode Status HTTP: 400
- InvalidCodecPrivateDataException
-
Data pribadi codec di setidaknya salah satu trek aliran video tidak valid untuk operasi ini.
Kode Status HTTP: 400
- MissingCodecPrivateDataException
-
Tidak ada data pribadi codec yang ditemukan di setidaknya satu trek aliran video.
Kode Status HTTP: 400
- NoDataRetentionException
-
GetImages
diminta untuk aliran yang tidak menyimpan data (yaitu, memilikiDataRetentionInHours
0).Kode Status HTTP: 400
- NotAuthorizedException
-
Kode Status: 403, Penelepon tidak berwenang untuk melakukan operasi pada aliran yang diberikan, atau token telah kedaluwarsa.
Kode Status HTTP: 401
- ResourceNotFoundException
-
GetImages
akan memunculkan kesalahan ini ketika Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.GetHLSStreamingSessionURL
danGetDASHStreamingSessionURL
membuang kesalahan ini jika sesi denganPlaybackMode
dariON_DEMAND
atauLIVE_REPLAY
diminta untuk aliran yang tidak memiliki fragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackMode
ofLIVE
diminta untuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.Kode Status HTTP: 404
- UnsupportedStreamMediaTypeException
-
Jenis media (misalnya, video h.264 atau h.265 atau audio AAC atau G.711) tidak dapat ditentukan dari ID codec trek di fragmen pertama untuk sesi pemutaran. ID codec untuk trek 1 harus
V_MPEG/ISO/AVC
dan, secara opsional, ID codec untuk trek 2 seharusnya.A_AAC
Kode Status HTTP: 400
Lihat Juga
Untuk informasi selengkapnya tentang penggunaan API ini di salah satu AWS SDK khusus bahasa, lihat berikut ini: