Tentang SRT | Fitur | Memulai | Petunjuk Pembuatan | Contoh Aplikasi dan Alat | Berkontribusi | Lisensi | Rilis
Secure Reliable Transport (SRT) adalah protokol transport untuk streaming video dan audio langsung dengan latensi sangat rendah (sub-detik), serta untuk transfer data massal umum 1 . SRT tersedia sebagai teknologi sumber terbuka dengan kode di GitHub, Internet Draft yang diterbitkan, dan komunitas pengguna SRT yang terus berkembang.
SRT diterapkan pada titik akhir kontribusi dan distribusi sebagai bagian dari alur kerja streaming video untuk menghadirkan video dengan kualitas terbaik dan latensi terendah setiap saat.
Aman | Mengenkripsi aliran video |
Dapat diandalkan | Memulihkan dari kehilangan paket yang parah |
T transportasi | Beradaptasi secara dinamis terhadap perubahan kondisi jaringan |
Dalam konfigurasi streaming langsung, protokol SRT mempertahankan latensi end-to-end yang konstan. Hal ini memungkinkan karakteristik sinyal streaming langsung dibuat ulang di sisi penerima, sehingga mengurangi kebutuhan buffering. Saat paket dialirkan dari sumber ke tujuan, SRT mendeteksi dan beradaptasi dengan kondisi jaringan real-time antara dua titik akhir. Ini membantu mengkompensasi fluktuasi jitter dan bandwidth karena kemacetan pada jaringan yang bising.
SRT mengimplementasikan enkripsi AES untuk melindungi muatan aliran media, dan menawarkan berbagai mekanisme pemulihan kesalahan untuk meminimalkan kehilangan paket yang umum terjadi pada koneksi Internet, dengan Automatic Repeat reQuest (ARQ) sebagai metode utamanya. Dengan ARQ, ketika penerima mendeteksi adanya paket yang hilang, ia akan mengirimkan peringatan kepada pengirim untuk meminta pengiriman ulang paket yang hilang tersebut. Forward Error Correction (FEC) dan Connection Bonding, yang menambahkan perlindungan aliran tanpa batas dan failover tanpa hambatan, juga didukung oleh protokol ini.
Untuk mempelajari lebih lanjut tentang protokol, berlangganan Blog Innovation Labs
Untuk mengajukan pertanyaan, bergabunglah dalam percakapan di saluran #development di
? Klik tombol ► untuk memperluas deskripsi fitur.
Tidak peduli seberapa tidak dapat diandalkannya jaringan Anda, SRT dapat pulih dari kehilangan paket dan jitter yang parah, sehingga memastikan integritas dan kualitas streaming video Anda.
Koreksi kesalahan aliran SRT dapat dikonfigurasi untuk mengakomodasi kondisi penerapan pengguna. Memanfaatkan pengembangan komunikasi IP real-time untuk memperluas praktik pemulihan kesalahan jaringan tradisional, SRT menghadirkan media dengan latensi yang jauh lebih rendah dibandingkan TCP/IP, sekaligus menawarkan kecepatan transmisi UDP dengan keandalan yang jauh lebih baik.
Tidak seperti beberapa protokol streaming lainnya yang hanya mendukung format video dan audio tertentu, SRT bersifat payload agnostic. Karena SRT beroperasi pada tingkat transportasi jaringan, bertindak sebagai pembungkus konten Anda, SRT dapat mengangkut semua jenis format video, codec, resolusi, atau kecepatan bingkai.
Proses jabat tangan yang digunakan oleh SRT mendukung koneksi keluar tanpa potensi risiko dan bahaya pembukaan port eksterior permanen di firewall, sehingga menjaga kebijakan keamanan LAN perusahaan dan meminimalkan kebutuhan intervensi TI.
Menggunakan enkripsi AES 128/192/256-bit yang dipercaya oleh pemerintah dan organisasi di seluruh dunia, SRT memastikan bahwa konten berharga dilindungi secara menyeluruh dari kontribusi hingga distribusi sehingga tidak ada pihak yang tidak berkepentingan yang dapat mendengarkannya.
SRT 1.4 melihat pengenalan API filter paket . Mekanisme ini memungkinkan pemrosesan khusus dilakukan pada paket jaringan di sisi pengirim sebelum dikirim, dan di sisi penerima setelah diterima dari jaringan. API memungkinkan pengguna untuk menulis plugin mereka sendiri, sehingga memperluas kemampuan protokol SRT lebih jauh lagi dengan semua jenis pemfilteran paket yang berbeda. Pengguna dapat memanipulasi data filter paket yang dihasilkan dengan cara apa pun, seperti untuk enkripsi khusus, pemeriksaan paket, atau mengakses data sebelum dikirim.
Plugin pertama yang dibuat sebagai contoh apa yang dapat dicapai dengan API filter paket adalah untuk Forward Error Correction (FEC) yang, dalam kasus penggunaan tertentu, dapat menawarkan latensi yang sedikit lebih rendah daripada Automatic Repeat reQuest (ARQ). Plugin ini memungkinkan tiga mode berbeda:
Hanya ARQ – mentransmisikan ulang paket yang hilang,
Hanya FEC – menyediakan overhead yang diperlukan untuk pemulihan FEC di sisi penerima,
FEC dan ARQ – mengirimkan kembali paket yang hilang yang gagal dipulihkan oleh FEC.
Mirip dengan SMPTE-2022-7 melalui jaringan terkelola, Connection Bonding menambahkan perlindungan aliran tanpa batas dan failover tanpa hambatan pada protokol SRT. Teknologi ini mengandalkan lebih dari satu jalur jaringan IP untuk mencegah gangguan pada streaming video langsung jika terjadi kemacetan atau pemadaman jaringan, sehingga menjaga kelangsungan layanan.
Hal ini dicapai dengan menggunakan grup soket yang diperkenalkan di SRT v1.5. Konsep umum grup soket berarti memiliki grup yang berisi beberapa soket, di mana satu operasi untuk mengirimkan satu sinyal data diterapkan ke grup tersebut. Soket tunggal di dalam grup akan mengambil alih operasi ini dan melakukan apa yang diperlukan untuk mengirimkan sinyal ke penerima.
Dua mode yang didukung:
Siaran - Dalam mode Siaran , data dikirim secara berlebihan melalui semua tautan anggota dalam grup. Jika salah satu link gagal atau mengalami jitter jaringan dan/atau kehilangan paket, data yang hilang akan diterima melalui link lain dalam grup. Paket yang berlebihan dibuang begitu saja di sisi penerima.
Utama/Cadangan - Dalam mode Utama/Cadangan , hanya satu tautan (utama) pada satu waktu yang digunakan untuk transmisi data sementara koneksi (cadangan) lainnya dalam keadaan siaga untuk memastikan transmisi akan terus berlanjut jika tautan utama gagal. Tujuan dari mode Utama/Cadangan adalah untuk mengidentifikasi potensi putusnya tautan sebelum hal itu terjadi, sehingga memberikan jangka waktu untuk beralih ke salah satu tautan cadangan dengan lancar.
Kontrol Akses memungkinkan aplikasi upstream untuk menetapkan ID Aliran ke aliran SRT individual. Dengan menggunakan ID Aliran unik, baik yang dihasilkan secara otomatis atau disesuaikan, aplikasi upstream dapat mengirimkan beberapa aliran SRT ke satu alamat IP dan port UDP. ID Aliran kemudian dapat digunakan oleh penerima untuk mengidentifikasi dan membedakan aliran penyerapan, menerapkan metode akses kata sandi pengguna, dan dalam beberapa kasus bahkan menerapkan otomatisasi berdasarkan penamaan ID Aliran. Misalnya, kontribusi dapat dikirim ke alur kerja produksi video dan pemantauan ke layanan pemantauan.
Bagi penyiar, Stream ID adalah kunci untuk menggantikan RTMP untuk menyerap streaming video, terutama konten HEVC/H.265, ke layanan cloud atau CDN yang memiliki satu soket IP (alamat + port) yang terbuka untuk video masuk.
API SRT | Draf Internet IETF | Contoh Aplikasi |
Dokumentasi referensi untuk API perpustakaan SRT | Draf Internet Protokol SRT | Petunjuk untuk menggunakan aplikasi pengujian ( srt-live-transmit , srt-file-transmit , dll.) |
Ikhtisar Teknis SRT | Panduan Penerapan SRT | Buku Masakan SRT |
Tinjauan teknis draf awal (pendahulu dari Draf Internet) | Tinjauan komprehensif tentang protokol dengan pedoman penerapan | Catatan pengembangan pada protokol SRT |
Blog Lab Inovasi | Saluran YouTube SRTLab | Kendur |
Blog di Medium dengan artikel teknis terkait SRT | Saluran YouTube teknis dengan video bermanfaat | Saluran kendur untuk mendapatkan pembaruan terkini dan mengajukan pertanyaan Bergabunglah dengan Aliansi SRT di Slack |
Mengapa SRT? - Sejarah singkat dan alasan SRT oleh Marc Cymontkowski.
RTMP vs. SRT: Membandingkan Buku Putih Latensi dan Bandwidth Maksimum.
Dokumentasi di GitHub dengan dokumen SRT API, deskripsi fitur, dll.
Draf Internet Protokol SRT: Datatracker | Versi Terbaru | Copy Kerja Terbaru | Repo GitHub
Linux (Ubuntu/CentOS) | jendela | macOS | iOS | Android | Manajer Paket
Kompiler yang sesuai dengan C++03 atau lebih tinggi.
CMake 2.8.12 atau lebih tinggi sebagai sistem build.
OpenSSL 1.1 untuk mengaktifkan enkripsi, jika tidak, buat dengan -DENABLE_ENCRYPTION=OFF
.
Multithreading disediakan oleh salah satu dari berikut ini:
C++11: perpustakaan standar ( std
by -DENABLE_STDCXX_SYNC=ON
opsi CMake),
C++03: Pthreads (untuk sistem POSIX sudah ada di dalamnya, untuk Windows ada perpustakaan porting).
Tcl 8.5 bersifat opsional dan digunakan oleh skrip ./configure
. Jika tidak, gunakan CMake secara langsung.
Untuk penjelasan rinci tentang sistem dan opsi pembangunan, silakan baca dokumen Opsi Pembangunan SRT.
Repo saat ini menyediakan contoh aplikasi dan contoh kode yang menunjukkan penggunaan API perpustakaan SRT. Diantaranya adalah srt-live-transmit
, srt-file-transmit
, dan aplikasi lainnya. Dokumentasi masing-masing dapat ditemukan di sini. Perhatikan bahwa semua sampel disediakan untuk tujuan pembelajaran, dan tidak boleh digunakan dalam lingkungan produksi.
Utilitas srt-xtransmit
secara aktif digunakan untuk pengujian internal dan evaluasi kinerja. Di antara fitur-fitur lainnya, ia mendukung pembuatan muatan tiruan, perutean lalu lintas, dan pengikatan koneksi. Detail tambahan tersedia di repo srt-xtransmit
itu sendiri.
Alat Python yang mungkin berguna selama pengembangan adalah:
srt-stats-plotting
- Skrip yang dirancang untuk memplot grafik berdasarkan statistik SRT .csv
.
lib-tcpdump-processing
- Pustaka yang dirancang untuk memproses file jejak .pcap(ng)
tcpdump atau Wireshark dan mengekstrak paket SRT yang diinginkan untuk analisis lebih lanjut.
lib-srt-utils
- Pustaka Python yang berisi kode pendukung untuk menjalankan pengujian SRT berdasarkan konfigurasi eksperimen.
Siapa pun boleh berkontribusi. Jika Anda memutuskan untuk terlibat, harap luangkan waktu sejenak untuk meninjau pedomannya:
Panduan Pengembang SRT
Berkontribusi
Masalah Pelaporan
Untuk informasi tentang berkontribusi pada Draf Internet atau mengirimkan masalah, silakan kunjungi repo berikut. Repo untuk berkontribusi dalam SRT CookBook dapat ditemukan di sini.
Dengan menyumbangkan kode ke proyek SRT, Anda setuju untuk melisensikan kontribusi Anda di bawah Lisensi MPLv2.0.
Catatan rilis
versi SRT
Istilah “live streaming” mengacu pada transmisi data berkelanjutan (MPEG-TS atau setara) dengan manajemen latensi. Streaming langsung berdasarkan segmentasi dan transmisi file seperti pada protokol HTTP Live Streaming (HLS) (seperti yang dijelaskan dalam RFC8216) bukan bagian dari kasus penggunaan ini. Transmisi file dalam mode pesan atau buffer harus dipertimbangkan dalam kasus ini. Lihat Bagian 7. Praktik Terbaik dan Tip Konfigurasi untuk Transmisi Data melalui SRT Draf Internet untuk rinciannya. Perhatikan bahwa SRT bersifat agnostik konten, artinya semua jenis data dapat dikirim melalui muatannya. ↩