informasi kontak saya
Surat[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰Waktu rilis⏰: 06-07-2024 12:22:00
Artikel ini tidak boleh diteruskan tanpa izin! ! !
RTSP, nama lengkap Real Time Streaming Protocol
, protokol streaming waktu nyata, adalah protokol lapisan aplikasi dalam sistem protokol TCP/IP. Ini adalah standar IETF RFC yang diajukan oleh Universitas Columbia, Netscape, dan RealNetworks.
Dokumen resmi tentang protokol RTSP adalah RFC2326, tautan dokumen:RFC2326-Protokol Streaming Waktu Nyata (RTSP)。
Sintaks dan pengoperasian protokol RTSP direferensikan. HTTP/1.1
, protokol berbasis teks yang menggunakan kumpulan karakter ISO10646 dan pengkodean UTF-8; protokol lapisan transport yang membawa RTSPTCP
, pelabuhan bawaan554
; Jika itu adalah terowongan RTSP-over-HTTP, port TCP default adalah 8080 umumnya digunakan bersama dengan protokol RTP/RTCP, protokol RTP mentransmisikan data aliran waktu nyata, dan protokol RTCP menyelesaikan transmisi aliran data dan perintah kontrol.
Protokol RTP: nama lengkap
Real-time Transport Protocol
, protokol transmisi real-time, diumumkan oleh Kelompok Kerja Transmisi Multimedia IETF pada tahun 1996 di RFC 1889. Protokol RTP merinci format paket standar untuk mengirimkan audio dan video melalui Internet. Itu dibangun di atas protokol UDP.
Protokol RTCP: nama lengkap
Real-time Transport Control Protocol
, Protokol Kontrol Transportasi Waktu Nyata, digunakan dengan RTP. RTP menggunakan port UDP bernomor genap; RTCP menggunakan port berikutnya dari RTP, yaitu port bernomor ganjil. RTCP dan RTP bekerja sama. RTP mengimplementasikan transmisi data aktual, dan RTCP bertanggung jawab untuk mengirimkan paket kontrol ke semua orang di sesi tersebut. Fungsi utamanya adalah memberikan umpan balik terhadap kualitas layanan yang diberikan oleh RTP.
Perbedaan antara protokol RTSP dan protokol HTTP:
RTSP bersifat stateful, dan perintahnya selalu dikirimkan secara berurutan, dan satu perintah mungkin selalu perlu dikirim sebelum perintah lainnya. HTTP tidak memiliki kewarganegaraan. Setelah protokol mengirimkan perintah, koneksi akan terputus, dan tidak ada ketergantungan antar perintah.
Protokol rtsp menggunakan port 554, dan http menggunakan port 80.
Permintaan RTSP dapat dikirim oleh server dan klien, sedangkan permintaan HTTP hanya dapat dikirim oleh klien.
Metode RTSP yang umum digunakan meliputi: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER dan SET_PARAMETER, dll. Petunjuk penggunaan detailnya adalah sebagai berikut:
OPTIONS
: Klien memperoleh metode yang didukung oleh server dari server. Itu tidak mempengaruhi keadaan server;DESCRIBE
: Klien memperoleh deskripsi objek media yang ditentukan oleh URL dari server, di manaAccept
Bidang tersebut menentukan format deskripsi;SETUP
: Klien meminta server untuk membuat sesi dan mempersiapkan transmisi. Informasi permintaan terutama mencakup protokol transmisi dan nomor port klien;PLAY
: Klien secara aktif memberitahukan server untuk mulai mengirimkan data menggunakan mekanisme yang ditentukan oleh SETUP.di dalamRange
Bidang ini menentukan waktu mulai dan berakhirnya pemutaran (rentang streaming waktu nyata umumnyaRange: npt=0.000-
), ketika beberapa permintaan PLAY tiba, server akan mengantri permintaan PLAY dan menjalankannya secara berurutan, yaitu harus menunggu waktu PLAY pertama selesai sebelum melanjutkan memproses pesan PLAY kedua.PAUSE
: Klien meminta agar streaming media server dihentikan sementara.mampu lulusRange
Parameter dijeda pada titik waktu tertentu, atau Anda dapat menentukan streaming untuk dijeda. Misalnya, jika Anda menentukan streaming audio untuk dijeda, pemutaran akan dilakukan dalam mode senyap.RECORD
: RECORD memberi tahu server bahwa klien akan mulai merekam data media sesuai dengan uraian sebelumnya. di dalamtimestamp
Bidang mencerminkan waktu mulai dan berakhir (UTC). Jika kolom ini tidak ada, waktu mulai atau berakhir dari deskripsi media akan digunakan. Jika sesi sudah dimulai, perekaman segera dimulai.request-URI
URI berikutnya atau yang lain. Jika server tidak menggunakan URI permintaan, responsnya harus 201 (Dibuat) dan berisi header Entitas dan Lokasi yang menjelaskan status permintaan dan merujuk pada sumber daya baru.TEARDOWN
: Klien meminta untuk berhenti mengirimkan aliran URL yang ditentukan dan melepaskan sumber daya terkait.REDIRECT
: Untuk mengalihkan permintaan, server memberi tahu klien bahwa ia harus terhubung ke lokasi server lain. Ini berisi header Lokasi wajib, yang menunjukkan bahwa klien harus membuat permintaan untuk URL ini. Ini mungkin berisi parameter Range, yang menunjukkan kapan pengalihan akan berlaku. Jika klien ingin terus mengirim atau menerima media untuk URI ini, klien harus mengeluarkan permintaan TEARDOWN untuk sesi saat ini dan SETUP untuk sesi baru pada host yang ditentukan.ANNOUNCE
: Ketika klien mengirim ke server, itu berarti mengirimkan deskripsi presentasi atau objek media yang diidentifikasi oleh URL permintaan ke serverGET_PARAMETER
:GET_PARAMETER permintaan untuk mengambil nilai parameter untuk representasi atau aliran yang ditentukan dalam URI. Isi balasan dan tanggapan diserahkan pada implementasi. GET_PARAMETER tanpa badan entitas dapat digunakan untuk menguji keaktifan ("ping") klien atau server.SET_PARAMETER
: Metode ini meminta untuk menetapkan nilai parameter demo atau aliran URL yang ditentukan. Permintaan hanya boleh berisi satu parameter, yang memungkinkan klien memutuskan mengapa permintaan tertentu gagal. Jika permintaan berisi beberapa parameter, semua parameter dapat diatur dengan sukses, dan server hanya boleh bertindak berdasarkan permintaan ini. Server harus mengizinkan parameter disetel ke nilai yang sama berulang kali, tetapi tidak mengubah nilai parameter. Catatan: Parameter streaming media harus diatur menggunakan perintah SETUP. Hal ini bermanfaat bagi firewall untuk membatasi parameter transfer setup ke SETUP.Sebanyak 11 metode RTSP diperkenalkan di atas, di antaranya,SETUP
、PLAY
、TEARDOWN
Ketiga perintah tersebut diperlukan dalam proses RTSP, dan metode lain tidak diperlukan.DanANNOUNCE
、GET_PARAMETER
、SET_PARAMETER
Ketiga perintah tersebut dapat dikirim dari klien ke server atau dari server ke klien. Perintah lainnya dikirim dari klien ke server.
RTSP memiliki dua jenis pesan: pesan permintaan dan pesan respons. Pesan permintaan mengacu pada pesan permintaan yang dikirim dari klien ke server, dan pesan respons mengacu pada respons dari server ke klien.
Pesan permintaan RTSP terdiri dari tiga bagian: baris permintaan, header permintaan, dan isi permintaan. Diantaranya, baris permintaan diperlukan, sedangkan header permintaan dan isi permintaan bersifat opsional tergantung pada situasi spesifik.
rn
)Menyelesaikan.方法
: Ini adalah metode RTSP yang diperkenalkan di atas. Termasuk OPSI, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, dll.请求URI
: Mengidentifikasi sumber daya media yang akan dioperasikan, biasanya dalam format rtsp://example.com/path/to/stream.协议版本
: Menunjukkan versi protokol RTSP yang biasanya diikuti permintaanRTSP/1.0
atauRTSP/2.0
。OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Pesan permintaan RTSP terdiri dari tiga bagian: baris status, header respons, dan isi respons. Diantaranya, baris status wajib diisi, sedangkan header respons dan isi respons bersifat opsional tergantung pada situasi spesifik.
协议版本
: Menunjukkan versi protokol RTSP yang diikuti responsnya, biasanya RTSP/1.0 atau RTSP/2.0.状态码
: Tiga digit, seperti: 200, 401, 500, dst., digunakan untuk menunjukkan hasil pemrosesan permintaan. Digit pertama mewakili kategori respons: 2xx menunjukkan keberhasilan, 4xx menunjukkan kesalahan klien, dan 5xx menunjukkan kesalahan server.状态文本
: Deskripsi teks singkat yang menjelaskan arti spesifik dari kode status terkait, seperti: OK, Tidak Sah, dll.RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Feb 04 1970 03:25:10 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
v=0
o=- 8913478 1 IN IP4 192.168.3.91
s=LIVE555 Streaming Media v2016.07.19
i=1080
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:1080
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64002A;sprop-parameter-sets=Z2QAKq2EAQwgCGEAQwgCGEAQwgCEO1A8ARPyoA==,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:768
a=rtpmap:97 PCMA/48000/2
a=control:track2
Header respons pesan RTSP akan berisi beberapa kolom. Berikut ini adalah beberapa kolom yang umum digunakan:
SETUP
Dipilih dalam respon, setelah klien memperoleh ID Sesi, maka akan menyertakan ID Sesi dalam pesan permintaan operasi masa depan untuk Sesi. Misalnya: Sesi: 4581E0AE;Gunakan wireshark untuk menangkap paket jaringan media streaming RTSP Anda dapat melihat bahwa proses umumnya adalah sebagai berikut:
1. Klien mengirimOPTIONS
Metode, balasan server;
2. Klien mengirimDESCRIBE
Metode, balasan server;
3. Klien mengirimSETUP
Metode, balasan server;
2. Klien mengirimPLAY
Metode, balasan server;
2. Klien mengirimTEARDOWN
Metode, balasan server;
Paket alur lengkapnya adalah sebagai berikut:
OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Jul 03 2024 14:42:11 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
DESCRIBE rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Jul 03 2024 14:42:11 GMT
Content-Base: rtsp://192.168.3.225/wbc/
Content-Type: application/sdp
Content-Length: 472
v=0
o=- 1720014950032000 1 IN IP4 192.168.3.225
s=LIVE555 Streaming Media v2016.07.19
i=wbc
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:wbc
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKawsaoHgCJ WbgoCCgQ=,aO4xshs=
a=control:track1
SETUP rtsp://192.168.3.225/wbc/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55320-55321
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Jul 03 2024 14:42:11 GMT
Transport: RTP/AVP;unicast;destination=192.168.2.180;source=192.168.3.225;client_port=55320-55321;server_port=6970-6971
Session: 4581E0AE;timeout=65
PLAY rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
Range: npt=0.000-
RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Jul 03 2024 14:42:11 GMT
Range: npt=0.000-
Session: 4581E0AE
RTP-Info: url=rtsp://192.168.3.225/wbc/track1;seq=7880;rtptime=3548171463
TEARDOWN rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Jul 03 2024 14:42:19 GMT
Berikut ini akan dianalisis setiap metode dan respon RTSP yang digunakan pada pesan sebelumnya.
Dapatkan metode yang tersedia dari server:
Klien mengirimkan metode OPTIONS dan menggunakannyaCSeq
Untuk menentukan nomor urut permintaan, gunakanUser-Agent
mengidentifikasi agennya sendiri;
Server akan merespons permintaan tersebut menggunakanCSeq
Untuk menunjukkan permintaan mana yang ditanggapi, gunakanDate
tentukan tanggalnya,Public
Menentukan metode yang disediakan.
Dapatkan dari serverrtsp://192.168.3.225:554/wbc
deskripsi objek media, di manaAccept
Bidang menentukan format deskripsi:
Klien mengirimkan metode DESCRIBE dan menggunakannyaCSeq
Untuk menentukan nomor urut permintaan, gunakanUser-Agent
identifikasi agen Anda,Accept
Bidang tersebut menentukan format deskripsi sebagai SDP;
Server akan menanggapi permintaan ini menggunakan CSeq
Untuk menunjukkan permintaan mana yang ditanggapi, gunakanDate
tentukan tanggalnya,Content-Type
Menunjukkan bahwa tipe konten adalah SDP,Content-Length
Tentukan panjang konten.
Melihat:
1. Bagi yang membutuhkan username dan password, server akan memproses metode DESCRIBE untuk otentikasi. Jika informasi autentikasi Otorisasi tidak dilakukan, atau autentikasi gagal, server akan mengembalikan respons dengan nomor kesalahan 401. Saat klien menerima respons 401, klien perlu membuat Otorisasi berdasarkan informasi autentikasi pengguna yang diketahui dan mengirimkan deskripsi lagi. Jika otentikasi berhasil, server mengembalikan informasi respons yang membawa SDP.
2. Informasi SDP yang dikembalikan oleh server akan dianalisis di artikel selanjutnya.
Klien meminta server untuk membuat sesi dan mempersiapkan transmisi. Informasi permintaan terutama mencakup protokol transmisi dan nomor port klien;
Klien mengirimkan metode SETUP dan menggunakannyaCSeq
Untuk menentukan nomor urut permintaan, gunakanUser-Agent
identifikasi agen Anda,Transport
Bidang ini menentukan protokol transmisi RTP/AVP dan port yang dapat diterima (di sini port RTP adalah 55320 dan port RTCP adalah 55321);
Server akan menanggapi permintaan ini menggunakan CSeq
Untuk menunjukkan permintaan mana yang ditanggapi, gunakanDate
tentukan tanggalnya,Transport
Tentukan protokol transport RTP/AVP, alamat tujuan, alamat sumber, port klien (RTP 55320, RTCP 55321), port server (RTP 6970, RTCP 6971),Session
Tentukan ID sesi.
Melihat:
Dalam contoh ini, RTP ditransmisikan melalui protokol UDP. Terkadang, RTP akan ditransmisikan melalui TCPTransport
Bidang akan bervariasi. Mungkin sebagai berikut:
客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"
RTP/AVP/TCP
Menunjukkan bahwa aliran RTP ditransmisikan melalui TCP. Ketika nilai ini muncul, pesan tidak memiliki bidang client_port;
interleaved=0-1
Mewakili streamid, mengidentifikasi RTP streamid=0; RTCP streamid=1;
Ketika aliran kode ditransmisikan melalui TCP, ia berbagi tautan TCP dengan RTSP, sehingga tidak perlu membuat koneksi baru untuk membedakan protokol RTP, RTCP, dan RTSP, pengidentifikasi header perlu ditambahkan bidang header digunakan di sini, dan bagian tcphead terdiri dari empat kata, formatnya adalah sebagai berikut:
| magic number | channel number | embedded data length | data |
magic number
: 1 byte, ditetapkan ke0x24
, adalah karakter$
, menunjukkan bahwa data yang dikirimkan bukan protokol rtsp;
channel number
: 1 byte, ID saluran, mengidentifikasi jenis aliran, yaitu streamid yang disebutkan sebelumnya;
embedded data length
: 2 byte, menunjukkan panjang aliran
data
: Menunjukkan data paket RTP/RTCP
Klien secara aktif memberitahukan server untuk mulai mengirimkan data menggunakan mekanisme yang ditentukan oleh SETUP.
Klien mengirimkan metode PLAY dan menggunakannyaCSeq
Untuk menentukan nomor urut permintaan, gunakanUser-Agent
identifikasi agen Anda,Session
bidang menentukan ID sesi,Range
Bidang ini menentukan waktu mulai dan berakhirnya pemutaran.
Server akan menanggapi permintaan ini menggunakan CSeq
Tunjukkan permintaan mana yang ditanggapi;Date
tentukan tanggal;Range
Bidang ini menentukan waktu mulai dan berakhirnya pemutaran;Session
Bidang tersebut menentukan ID sesi;RTP-Info
Bidang ini menjelaskan informasi RTP dari aliran kode yang akan dikirim, seperti seq dan rtptime dari paket RTP pertama. Klien dapat melakukan demultipleks berdasarkan bidang ini.
Klien meminta untuk berhenti mengirimkan aliran URL yang ditentukan dan melepaskan sumber daya terkait.
Klien mengirimkan metode TEARDOWN dan menggunakannyaCSeq
Untuk menentukan nomor urut permintaan, gunakanUser-Agent
identifikasi agen Anda,Session
bidang menentukan ID sesi.
Server akan menanggapi permintaan ini menggunakan CSeq
Tunjukkan permintaan mana yang ditanggapi;Date
Tentukan tanggalnya.
Isi respon RTSP biasanya berisi kode respon integer 3 digit dan frase alasan. Tujuan dari frase tersebut adalah untuk memberikan deskripsi teks singkat tentang kode status. Berdasarkan perbedaan digit pertama kode respon, dapat dibagi menjadi lima kategori berikut:
Tentu saja, kode kesalahan RTSP dan metode RTSP sangat terkait. Beberapa kesalahan hanya dapat dipicu dalam metode tertentu. Informasi rinci kode kesalahan adalah sebagai berikut:
kode kesalahan | frase alasan | metode respons |
---|---|---|
100 | Melanjutkan | Semua |
200 | Kesuksesan | Semua |
201 | Dibuat | CATATAN |
250 | Ruang Penyimpanan Rendah | CATATAN |
300 | Pilihan ganda | Semua |
301 | Dipindahkan Secara Permanen | Semua |
302 | pindah sementara | Semua |
303 | Lihat Lainnya | Semua |
305 | Gunakan proxy | Semua |
400 | Permintaan yang buruk | Semua |
401 | Tidak sah | Semua |
402 | Pembayaran Diperlukan | Semua |
403 | Terlarang | Semua |
404 | Tidak ditemukan | Semua |
405 | Metode Tidak Diizinkan | Semua |
406 | Tidak dapat diterima | Semua |
407 | Diperlukan Autentikasi Proxy | Semua |
408 | Permintaan Batas Waktu | Semua |
410 | Hilang | Semua |
411 | Panjang yang Diperlukan | Semua |
412 | Prasyarat Gagal DESCRIBE | MEMPERSIAPKAN |
413 | Permintaan Entitas Terlalu Besar | Semua |
414 | Permintaan-URI Terlalu Panjang | Semua |
415 | Jenis Media yang Tidak Didukung | Semua |
451 | Parameter tidak valid | MEMPERSIAPKAN |
452 | Pengidentifikasi Konferensi Ilegal | MEMPERSIAPKAN |
453 | Bandwidth Tidak Cukup | MEMPERSIAPKAN |
454 | Sesi Tidak Ditemukan | Semua |
455 | Metode Tidak Valid Di Negara Bagian Ini | Semua |
456 | Bidang Header Tidak Valid | Semua |
457 | Rentang Tidak Valid | BERMAIN |
458 | Parameter Hanya Dapat Dibaca | SET_PARAMETER |
459 | Operasi Agregat Tidak Diizinkan | Semua |
460 | Hanya Operasi Agregat yang Diizinkan | Semua |
461 | Transportasi Tidak Didukung | Semua |
462 | Tujuan Tidak Dapat Dicapai | Semua |
500 | Kesalahan server dari dalam | Semua |
501 | Belum Diimplementasikan | Semua |
502 | Gerbang Buruk | Semua |
503 | Layanan tidak tersedia | Semua |
504 | Batas Waktu Gerbang | Semua |
505 | Versi RTSP Tidak Didukung | Semua |
551 | Opsi tidak didukung | Semua |
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁
mengacu pada:
Protokol streaming waktu nyata—RTSP [penjelasan mendetail]
Kuasai permintaan dan respons RTSP dari awal 1
Penjelasan rinci tentang protokol media streaming RTSP