View a markdown version of this page

IVS Auto-Record ke Amazon S3 | Streaming Low-Latency - Amazon IVS

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

IVS Auto-Record ke Amazon S3 | Streaming Low-Latency

Bagian ini memberikan informasi tentang fitur Auto-Record-to-S3 dari streaming latensi rendah Amazon IVS. Kami membahas penyimpanan data untuk aliran Amazon IVS yang direkam. Kami menjelaskan konten penyimpanan dan skema file metadata. Kami juga membahas pemutaran konten rekaman Anda.

Untuk detail tentang... Lihat...

Menyiapkan dan menghentikan perekaman video

Buat Saluran dengan Rekaman Opsional di Memulai dengan Amazon IVS

API

Referensi API IVS

Biaya Biaya Amazon IVS

Awalan S3

Awalan S3 adalah struktur direktori unik untuk setiap streaming langsung yang direkam. Semua file media dan metadata untuk streaming langsung ditulis dalam direktori ini. Untuk saluran dengan perekaman diaktifkan, awalan S3 dihasilkan saat sesi langsung dimulai dan akan disediakan dalam CloudWatch acara di awal dan akhir rekaman.

Awalan S3 memiliki format berikut:

/ivs/v1/<aws_account_id>/<channel_id>/<year>/<month>/<day>/<hours>/<minutes>/<recording_id>

Di mana:

  • aws_account_idadalah ID akun AWS Anda (dihasilkan saat Anda membuat akun AWS), dari mana saluran dibuat.

  • channel_idadalah bagian ID sumber daya dari saluran ARN (bagian terakhir dari Nama Sumber Daya Amazon). Lihat ARN diGlosarium.

  • <year>/<month>/<day>/<hours>/<minutes>adalah stempel waktu UTC saat perekaman dimulai.

  • recording_idadalah ID unik yang dihasilkan untuk setiap sesi perekaman.

Contoh:

ivs/v1/123456789012/AsXego4U6tnj/2020/6/23/20/12/j8Z9O91ndcVs

Isi Rekaman

Saat perekaman dimulai, segmen video dan file metadata ditulis ke bucket S3 yang dikonfigurasi untuk saluran. Konten ini tersedia untuk pasca-pemrosesan atau pemutaran sebagai video sesuai permintaan.

Perhatikan bahwa setelah streaming langsung dimulai dan EventBridge acara Recording Start dipancarkan, dibutuhkan sedikit waktu sebelum file manifes dan segmen video ditulis. Kami menyarankan Anda memutar ulang atau memproses streaming yang direkam hanya setelah peristiwa Rekaman Akhir dikirim. (Lihat Menggunakan Amazon EventBridge dengan IVS).

Berikut ini adalah contoh struktur direktori dan isi rekaman sesi Amazon IVS langsung:

ivs/v1/123456789012/AsXego4U6tnj/2020/6/23/20/12/j8Z9O91ndcVs/ events recording-started.json recording-ended.json media hls thumbnails

F events older berisi file metadata yang sesuai dengan peristiwa perekaman. File metadata JSON dihasilkan saat perekaman dimulai, berakhir dengan sukses, atau berakhir dengan kegagalan:

  • events/recording-started.json

  • events/recording-ended.json

  • events/recording-failed.json

F events older yang diberikan akan berisi recording-started.json dan recording-ended.json ataurecording-failed.json.

Ini berisi metadata yang terkait dengan sesi yang direkam dan format outputnya. Detail JSON diberikan di bawah ini.

F media older berisi semua konten media yang didukung, dalam dua subfolder:

  • hlsberisi semua file media dan manifes yang dihasilkan selama sesi langsung dan dapat dimainkan dengan pemutar Amazon IVS. Ada dua jenis manifes HLS di folder ini, manifes master standar master.m3u8 dan manifes yang diaktifkan rentang byte. byte-range-multivariant.m3u8 Oleh karena itu, setiap folder rendisi memiliki keduanya playlist.m3u8 dan byte-range-variant.m3u8 file. (Lihat Daftar Byte-Range Putar di bawah.)

  • thumbnailsberisi gambar thumbnail yang dihasilkan selama sesi langsung. Thumbnail dibuat dan ditulis ke bucket setiap menit. (Untuk mengubah perilaku ini, ganti thumbnailConfiguration properti pada konfigurasi perekaman.)

Penting: Konten dalam media folder dibuat secara dinamis dan ditentukan oleh karakteristik segmen video pertama yang diterima; konten folder mungkin tidak mewakili karakteristik akhir (misalnya, kualitas rendisi). Jangan membuat asumsi apa pun tentang jalur statis. Untuk menemukan rendering HLS yang tersedia dan jalurnya, gunakan file metadata JSON yang dijelaskan di bawah ini.

Byte-Range Daftar Putar

Fitur Auto-Record-to-S3 mendukung pembuatan daftar putar rentang byte, selain daftar putar HLS standar. Byte-range daftar putar sesuai dengan versi 4 dari spesifikasi HLS. Hal ini memungkinkan kliping konten yang lebih halus: dalam daftar putar rentang byte, setiap segmen dalam file indeks rendisi mereferensikan sub-range byte dari potongan video, memberikan perincian lebih dari ukuran file media 10 detik standar. Dengan daftar putar rentang byte, durasi segmen sama dengan interval keyframe yang dikonfigurasi untuk streaming.

Thumbnail

Pro thumbnailConfiguration perti pada konfigurasi perekaman memungkinkan Anda untuk mengaktifkan atau menonaktifkan perekaman thumbnail untuk sesi langsung dan mengubah interval di mana thumbnail dibuat untuk sesi langsung. Interval thumbnail dapat berkisar dari 1 detik hingga 60 detik; secara default, perekaman thumbnail diaktifkan, dengan interval 60 detik. Untuk detailnya, lihat Refer ensi API Low-Latency Streaming Amazon IVS.

Konfigurasi thumbnail juga dapat mencakup storage bidang (SEQUENTIAL and/or LATEST) dan resolusi (LOWEST_RESOLUTION,, SDHD, atauFULL_HD). Di bawah ini adalah resolusi untuk setiap opsi:

160 <= LOWEST_RESOLUTION <= 360

360 < SD <= 480

480 < HD <= 720

720 < FULL_HD <= 1080

Jika resolution tidak disetel untuk aliran yang menggunakan input video multitrack, thumbnail dari semua rendering akan direkam. Untuk informasi tentang multitrack, lihat Video Multitrack.

Gabungkan Aliran Terfragmentasi

Pro recordingReconnectWindowSeconds perti pada konfigurasi perekaman memungkinkan Anda menentukan jendela waktu (dalam detik) di mana, jika streaming Anda terganggu dan aliran baru dimulai, Amazon IVS mencoba merekam ke awalan S3 yang sama dengan aliran sebelumnya. Dengan kata lain, jika siaran terputus dan kemudian terhubung kembali dalam interval yang ditentukan, beberapa aliran dianggap sebagai siaran tunggal dan digabungkan bersama.

Peristiwa Perubahan Status Perekaman IVS di Amazon EventBridge: Peristiwa Akhir Perek aman dan file metadata JSON yang berakhir perekaman ditunda setidaknyarecordingReconnectWindowSeconds, karena Amazon IVS menunggu untuk memastikan aliran baru tidak dimulai.

Untuk petunjuk tentang cara mengatur fungsionalitas merge-stream, lihat Langkah 3: Buat Saluran dengan Rekaman Opsional di Mem ulai dengan Amazon IVS.

Kelayakan

Agar beberapa aliran dapat merekam ke awalan S3 yang sama, kondisi tertentu harus dipenuhi untuk semua aliran:

  • Lebar dan tinggi video harus sama.

  • Frame rate harus sama.

  • Perbedaan bitrate dari aliran berikutnya harus kurang dari atau sama dengan 50% dari bitrate aliran asli.

  • Codec video dan audio harus sama.

Catatan:

  • Paling banyak 20 aliran digabungkan, setelah itu awalan S3 baru dibuat.

  • Setelah 48 jam, awalan S3 baru dibuat. Misalnya, jika siaran pertama berlangsung selama 48 jam dan siaran lain dimulai dalam recordingReconnectWindowSeconds interval, siaran berikutnya tidak digabungkan ke awalan S3 pertama.

  • Koneksi ulang cepat dapat menghasilkan siaran baru yang dimulai sebelum siaran sebelumnya selesai ditulis ke S3, dalam hal ini siaran baru tidak digabungkan ke awalan S3 sebelumnya. (Biasanya, menulis ke S3 selesai dalam waktu 10 detik setelah siaran berakhir.) Koneksi ulang cepat dapat terjadi dalam beberapa skenario, termasuk: 1) background/foreground transisi aplikasi seluler yang cepat, 2) ketika pengambilalihan aliran tidak memungkinkan saat menggunakan fitur sambungkan kembali otomatis dari SDK siaran seluler IVS, dan 3) saat panggilan StopStream memicu koneksi ulang otomatis dari perangkat lunak klien streaming.

Masalah yang Diketahui

Jika recordingReconnectWindowSeconds diaktifkan dan SDK Siaran Web digunakan, perekaman ke awalan S3 yang sama mungkin tidak berfungsi, karena SDK Siaran Web secara dinamis mengubah bitrate dan kualitas.

File Metadata JSON

Ketika peristiwa perubahan status perekaman terjadi, CloudWatch metrik Amazon yang sesuai dihasilkan dan file metadata ditulis dalam awalan S3. (Lihat Mem antau Amazon IVS Low-Latency Streaming.)

Metadata ini dalam format JSON. Ini terdiri dari informasi berikut.

Bidang Tipe Diperlukan Deskripsi

channel_arn

string Ya ARN dari saluran yang menyiarkan siaran langsung.

media

object Ya

Objek yang berisi objek yang disebutkan dari konten media yang tersedia untuk rekaman ini. Nilai-nilai yang valid: "hls", "thumbnails".

  • hls

object Ya

Bidang yang disebutkan yang menjelaskan output format Apple HLS.

    • duration_ms

integer Bersyarat

Durasi konten HLS yang direkam dalam milidetik. Ini hanya tersedia ketika recording_status ada "RECORDING_ENDED" atau"RECORDING_ENDED_WITH_FAILURE". Jika kegagalan terjadi sebelum perekaman dilakukan, ini adalah 0.

    • path

string Ya

Jalur relatif dari awalan S3 tempat konten HLS disimpan.

    • playlist

string Ya

Nama file daftar putar master HLS.

    • byte_range_playlist

string Ya

Nama daftar putar multivarian rentang byte HLS.

    • renditions

object Ya

Array rendering (varian HLS) objek metadata. Selalu ada setidaknya satu rendisi.

      • path

string Ya

Jalur relatif dari awalan S3 tempat konten HLS disimpan untuk rendisi ini.

      • playlist

string Ya

Nama file playlist media untuk rendisi ini.

      • byte_range_playlist

string Ya

Nama daftar putar rentang byte untuk rendisi ini.

      • resolution_height

int Bersyarat

Tinggi resolusi piksel dari video yang dikodekan. Ini hanya tersedia jika rendisi berisi trek video.

      • resolution_width

int Bersyarat

Lebar resolusi piksel dari video yang dikodekan. Ini hanya tersedia jika rendisi berisi trek video.

  • thumbnails

object Bersyarat

Bidang yang disebutkan yang menjelaskan output thumbnail. Ini hanya tersedia jika konfigurasi thumbnail recordingMode adaINTERVAL.

    • path

string Bersyarat

Jalur relatif dari awalan S3 tempat konten thumbnail disimpan. Ini hanya tersedia jika konfigurasi thumbnail recordingMode adaINTERVAL.

    • resolution_height

int Ya

Ketinggian thumbnail. Default: resolusi rendisi sumber. Nilai ini dipengaruhi oleh input pengguna dalam konfigurasi perekaman terkait; khususnya, nil thumbnailConfiguration.resolution ainya.

    • resolution_width

int Ya

Lebar thumbnail. Default: resolusi rendisi sumber. Nilai ini dipengaruhi oleh input pengguna dalam konfigurasi perekaman terkait; khususnya, nil thumbnailConfiguration.resolution ainya.

  • latest_thumbnail

object Ya

Bidang yang disebutkan yang menjelaskan output thumbnail terbaru. Ini hanya tersedia jika konfigurasi thumbnail diser storage takanLATEST.

    • resolution_height

int Ya

Ketinggian thumbnail. Default akan menjadi resolusi rendisi sumber. Nilai ini dipengaruhi oleh input pengguna dalam konfigurasi perekaman terkait; khususnya, nil thumbnailConfiguration.resolution ainya.

    • resolution_width

int Ya

Lebar thumbnail. Default akan menjadi resolusi rendisi sumber. Nilai ini dipengaruhi oleh input pengguna dalam konfigurasi perekaman terkait; khususnya, nil thumbnailConfiguration.resolution ainya.

recording_ended_at

string Bersyarat

Stempel waktu RFC 3339 UTC saat rekaman berakhir. Ini hanya tersedia ketika recording_status ada "RECORDING_ENDED" atau"RECORDING_ENDED_WITH_FAILURE".

recording_started_atdan recording_ended_at merupakan cap waktu ketika peristiwa ini dihasilkan dan mungkin tidak persis sama dengan cap waktu segmen video HLS. Untuk menentukan durasi rekaman secara akurat, gunakan duration_ms bidang.

recording_started_at

string Ya

Stempel waktu RFC 3339 UTC saat perekaman dimulai.

Lihat catatan di atas untukrecording_ended_at.

recording_status

string Ya

Status rekaman. Nilai-nilai yang valid: "RECORDING_STARTED", "RECORDING_ENDED", "RECORDING_ENDED_WITH_FAILURE".

recording_status_message

string Bersyarat

Informasi deskriptif tentang status. Ini hanya tersedia ketika recording_status ada "RECORDING_ENDED" atau"RECORDING_ENDED_WITH_FAILURE".

version

string Ya

Versi skema metadata.

Contoh: recording_started.json

{ "version": "v1", "channel_arn": "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_started_at": "2020-06-12T12:53:26Z", "recording_status : "RECORDING_STARTED", "media": { "hls": { "path": "media/hls", "playlist": "master.m3u8", "byte_range_playlist": "byte-range-multivariant.m3u8", "renditions": [ { "path": "480p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 480, "resolution_width": 852 }, { "path": "360p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 360, "resolution_width": 640 }, { "path": "160p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 160, "resolution_width": 284 }, { "path": "720p60", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 720, "resolution_width": 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Contoh: recording_ended.json

{ "version": "v1", "channel_arn": "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_ended_at": "2020-06-14T12:53:20Z", "recording_started_at": "2020-06-12T12:53:26Z", "recording_status": "RECORDING_ENDED", "media": { "hls": { "duration_ms": 172794489, "path": "media/hls", "playlist": "master.m3u8", "byte_range_playlist": "byte-range-multivariant.m3u8", "renditions": [ { "path": "480p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 480, "resolution_width": 852 }, { "path": "360p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 360, "resolution_width": 640 }, { "path": "160p30", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 160, "resolution_width": 284 }, { "path": "720p60", "playlist": "playlist.m3u8", "byte_range_playlist": "byte-range-variant.m3u8", "resolution_height": 720, "resolution_width": 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Contoh: recording_failed.json

{ "version": "v1", "channel_arn": "arn:aws:ivs:us-west-2:123456789012:channel/AsXego4U6tnj", "recording_ended_at": "2020-06-14T12:53:20Z", "recording_started_at": "2020-06-12T12:53:26Z", "recording_status": "RECORDING_ENDED_WITH_FAILURE", "recording_status_message": "InternalServerException", "media": { "hls": { "duration_ms": 172794489, "path": "media/hls", "playlist": "master.m3u8", "renditions": [ { "path": "480p30", "playlist": "playlist.m3u8", "resolution_height": 480, "resolution_width": 852 }, { "path": "720p60", "playlist": "playlist.m3u8", "resolution_height": 720, "resolution_width": 1280 } ] }, "thumbnails": { "path": "media/thumbnails", "resolution_height": 480, "resolution_width": 852 }, "latest_thumbnail": { "path": "media/latest_thumbnail/thumb.jpg", "resolution_height": 480, "resolution_width": 852 } } }

Menemukan Rendisi Rekaman

Saat Anda melakukan streaming konten ke saluran Amazon IVS, auto-record-to-s3 menggunakan video sumber untuk menghasilkan beberapa rendering. Menggunakan Adaptive Bitrate Streaming (ABR), Amazon IVS Player secara otomatis mengalihkan rendering (bitrate) sesuai kebutuhan untuk mengoptimalkan pemutaran untuk berbagai kondisi jaringan.

Setiap rendering yang dihasilkan selama streaming langsung direkam dalam jalur unik dalam awalan perekaman S3. Detail resolusi, jalur, dan nama file daftar putar disimpan dalam file metadata JSON selama awal dan penghentian perekaman. Jika renditionSelection nilai konfigurasi perekaman adalahALL, semua rendering dipilih untuk perekaman. Jika renditionSelection yaCUSTOM, pengguna harus memilih satu atau lebih opsi berikut:LOWEST_RESOLUTION,SD,HD, danFULL_HD. Di bawah ini adalah resolusi untuk setiap opsi:

160 <= LOWEST_RESOLUTION <= 360

360 < SD <= 480

480 < HD <= 720

720 < FULL_HD <= 1080

Penting: Jangan membuat asumsi apa pun tentang jalur rendisi statis atau daftar rendering yang dihasilkan, karena ini dapat berubah. Jangan berasumsi bahwa rendisi tertentu akan selalu tersedia untuk rekaman Amazon IVS. Untuk menentukan rendering, resolusi, dan jalur yang tersedia, lihat file metadata.

event/recording_ended.jsonFile event/recording_started.json atau dalam awalan rekaman berisi jalur dan nama file media dalam awalan rekaman. Semua path elemen relatif terhadap jalur sebelumnya dalam hierarki. Elemen di bawah media > hls menggambarkan aset HLS, dengan nama daftar putar master dan jalur ditentukan pada level ini.

Berikut adalah cuplikan kode Python yang menunjukkan cara membuat jalur daftar putar utama menggunakan awalan rekaman S3 dan file metadata:

def get_master_playlist(metadata_json, s3_recording_prefix): return s3_recording_prefix + '/' + metadata_json['media']['hls']['path'] + '/' + metadata_json['media']['hls']['playlist']

Elemen di bawah media > hls > renditions menggambarkan daftar rendering yang direkam. Pro resolution_height resolution_width perti dan dapat digunakan untuk mengidentifikasi resolusi video. playlistElem path en dan dapat digunakan untuk memperoleh jalur daftar putar rendisi. Gunakan bidang ini untuk menentukan rendisi mana yang akan digunakan untuk pemrosesan pasca apa pun.

Untuk menemukan daftar putar rendisi tertinggi yang tersedia untuk rekaman, Anda dapat berlangganan acara “IVS Recording State Change”. EventBridge (Lihat Menggunakan Amazon EventBridge dengan IVS). Di bawah ini adalah contoh skrip Python yang menggambarkan penggunaan fungsi lambda yang berlangganan acara tersebut.

import json import boto3 s3 = boto3.resource('s3') def get_highest_rendition_playlist(bucket_name, prefix_name): object_path = "{}/events/recording-started.json".format(prefix_name) object = s3.Object(bucket_name, object_path) body = str(object.get()['Body'].read().decode('utf-8')) metadata = json.loads(body) media_path = metadata["media"]["hls"]["path"] renditions = metadata["media"]["hls"]["renditions"] highest_rendition = None highest_rendition_size = 0 for rendition in renditions: current_rendition_size = rendition["resolution_height"] if (current_rendition_size > highest_rendition_size): highest_rendition_size = current_rendition_size highest_rendition = rendition highest_rendition_playlist = media_path + '/' + highest_rendition['path'] + '/' + highest_rendition['playlist'] return highest_rendition_playlist def lambda_handler(event, context): prefix_name = event["detail"]["recording_s3_key_prefix"] bucket_name = event["detail"]["recording_s3_bucket_name"] rendition_playlist = get_highest_rendition_playlist(bucket_name, prefix_name) print("Highest rendition playlist: {}/{}".format(prefix_name, rendition_playlist)) return { 'statusCode': 200, 'body': rendition_playlist }

Pemutaran Konten Rekaman dari Bucket Pribadi

Objek yang direkam dengan fitur Auto-Record ke Amazon S3 bersifat pribadi secara default; oleh karena itu, objek ini tidak dapat diakses untuk pemutaran menggunakan URL S3 langsung. Jika Anda mencoba membuka manifes master HLS (file m3u8) untuk pemutaran menggunakan pemutar Amazon IVS atau pemutar lain, Anda akan mendapatkan kesalahan (misalnya, “Anda tidak memiliki izin untuk mengakses sumber daya yang diminta”). Sebagai gantinya, Anda dapat memutar kembali file-file ini dengan Amazon CloudFront CDN (Content Delivery Network).

Distri CloudFront busi Amazon

CloudFront distribusi dapat dikonfigurasi untuk menyajikan konten dari bucket pribadi. Biasanya ini lebih disukai daripada memiliki bucket yang dapat diakses secara terbuka di mana pembacaan melewati kontrol yang ditawarkan oleh CloudFront. Distribusi Anda dapat diatur untuk layanan dari bucket pribadi dengan membuat kontrol akses asal (OAC), yang merupakan CloudFront pengguna khusus yang memiliki izin baca pada bucket asal pribadi. Anda dapat membuat OAC setelah Anda membuat distribusi, melalui CloudFront konsol atau API. Lihat Membuat kontrol akses asal baru.

Pemutaran dari Amazon CloudFront

Setelah Anda mengatur distribusi menggunakan OAC untuk mendapatkan akses ke bucket pribadi Anda, file video Anda harus tersedia untuk dikonsumsi melalui CloudFront URL. CloudFront URL Anda adalah nama domain Distri busi pada tab Detail di CloudFront konsol AWS. Seharusnya seperti ini:

a1b23cdef4ghij.cloudfront.net.

Untuk melakukan streaming video yang direkam melalui distribusi Anda, temukan kunci objek untuk master.m3u8 file Anda. Seharusnya seperti ini:

ivs/v1/012345678912/a0bCDeFGH1IjK/2021/4/20/12/03/aBcdEFghIjkL/media/hls/master.m3u8

Tambahkan kunci objek ke akhir CloudFront URL Anda. URL akhir Anda akan menjadi seperti ini:

https://a1b23cdef4ghij.cloudfront.net/ivs/v1/012345678912/a0bCDeFGH1IjK/2021/4/20/12/03/aBcdEFghIjkL/media/hls/master.m3u8

Untuk memutar kembali dari browser web, pastikan untuk mengkonfigurasi CORS di kedua CloudFront dan S3 bucket. Untuk CloudFront konfigurasi, ikuti petunjuk dalam Membuat kebijakan permintaan asal untuk melampirkan kebijakan permintaan CORS-S3 Origin dan kebijakan header respons SimpleCors ke CloudFront distribusi. Lihat contoh halaman konsol konfigurasi di bawah ini:

Contoh halaman konsol konfigurasi. Sebaiknya gunakan kebijakan cache dan kebijakan permintaan asal untuk mengontrol kunci cache dan permintaan asal.

Untuk konfigurasi S3 CORS, lihat konfigurasi CORS untuk membuat aturan yang sesuai untuk bucket S3 Anda.

Sekarang Anda dapat memutar ulang video yang direkam seolah-olah Anda sedang memutar langsung dari ember.

Untuk informasi selengkapnya, lihat Membatasi akses ke sumber Amazon S3.