Berbagi teknologi

[Audio dan Video |.RTSP] Penjelasan rinci tentang protokol RTSP dan analisis contoh pengambilan paket (detail tanpa merinci)

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! ! !


Masukkan deskripsi gambar di sini

🎄一、概述

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.

Masukkan deskripsi gambar di sini

Protokol RTP: nama lengkapReal-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 lengkapReal-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.


Masukkan deskripsi gambar di sini

🎄二、RTSP 方法

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 manaAcceptBidang 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 dalamRangeBidang 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 lulusRangeParameter 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.
    Server memutuskan apakah akan menyimpan data loginrequest-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 server
    Ketika server mengirimkannya ke klien, itu berarti memberi tahu klien untuk memperbarui informasi sesi.
  • GET_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,SETUPPLAYTEARDOWN Ketiga perintah tersebut diperlukan dalam proses RTSP, dan metode lain tidak diperlukan.DanANNOUNCEGET_PARAMETERSET_PARAMETERKetiga perintah tersebut dapat dikirim dari klien ke server atau dari server ke klien. Perintah lainnya dikirim dari klien ke server.


Masukkan deskripsi gambar di sini

🎄三、RTSP 的 请求报文 与 响应报文

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.

✨3.1, pesan permintaan RTSP

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.
Masukkan deskripsi gambar di sini

  • Baris permintaan: Baris permintaan terdiri dari metode, URI permintaan, dan versi protokol yang dipisahkan oleh spasi dan didahului oleh CRLF (yaitu: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.0atauRTSP/2.0
    Berikut adalah contoh baris permintaan lengkap:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Header permintaan: Header permintaan berisi beberapa informasi tambahan, seperti: CSeq (nomor urut yang digunakan untuk mengidentifikasi permintaan), ID Sesi (pengidentifikasi sesi), Transport (protokol transport), dll. Setiap field header terdiri dari nama field, titik dua dan nilai field, dan setiap field header dipisahkan oleh CRLF.
    Berikut ini contoh header permintaan lengkap:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Badan permintaan: Badan permintaan digunakan untuk mengirimkan data tambahan. Konten spesifik dari isi permintaan bergantung pada metode RTSP yang digunakan di baris permintaan. Catatan: Setelah header permintaan, baris kosong (CRLF) perlu disisipkan untuk membedakan header permintaan dari isi permintaan. Kebanyakan pesan permintaan tidak memiliki isi permintaan.

✨3.2, pesan respons RTSP

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.
Masukkan deskripsi gambar di sini

  • Baris status: Baris status berisi versi protokol, kode status, dan teks status, dipisahkan dengan spasi dan diakhiri dengan CRLF (yaitu: "rn").
    协议版本: 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.
    Berikut adalah contoh baris respons:
    RTSP/1.0 200 OK
    
  • Header respons: Header respons berisi informasi yang mirip dengan header permintaan, seperti: CSeq (nomor urut yang digunakan untuk mengidentifikasi permintaan), ID Sesi (pengidentifikasi sesi), Transport (protokol transportasi), dll. Format setiap kolom header respons sama dengan header permintaan, jadi kami tidak akan membahas detailnya di sini.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Badan respons: Beberapa respons RTSP (seperti DESCRIBE) mungkin berisi badan respons untuk mengirimkan data tambahan.Catatan: Setelah header respons, baris kosong (CRLF) perlu disisipkanBedakan antara header respons dan isi respons
    Di bawah ini adalah contoh isi respons lengkap.
    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
    

Masukkan deskripsi gambar di sini

🎄四、RTSP 报文的常用字段

Header respons pesan RTSP akan berisi beberapa kolom. Berikut ini adalah beberapa kolom yang umum digunakan:

  • Menerima : Digunakan untuk menentukan tipe struktur data entitas yang klien informasikan ke server untuk diterima. Misalnya: Terima: aplikasi/sdp, maka server mengembalikan tipe struktur data entitasnya melalui bidang Tipe Konten;
  • Accept-Encoding: Digunakan oleh klien untuk memberi tahu server tentang format kompresi data yang dapat diterimanya, misalnya: Accept-Encoding: gzip, kompres, br. Server kemudian akan memberi tahu klien tentang pilihannya melalui bidang Content-Encoding .
  • Bahasa Terima: digunakan oleh klien untuk memberi tahu server tentang bahasa yang dapat dipahami dan penerimaannya, misalnya: Bahasa Terima: fr-CH, fr;q=0.9, en;q=0.8, de;q =0.7, *; q=0.5, setelah itu server akan memberi tahu klien tentang pilihannya melalui bidang Bahasa-Konten
  • Otorisasi: Header permintaan klien berisi kredensial yang digunakan oleh server untuk mengautentikasi agen pengguna.
  • Bandwidth: Digunakan untuk menggambarkan nilai bandwidth yang tersedia untuk klien. Misalnya: Bandwidth: 4000
  • Ukuran Blok: Bidang ini dikirim oleh klien ke server media untuk meminta ukuran paket media tertentu dari server, server bebas menggunakan ukuran blok yang lebih kecil dari yang diminta. Ukuran paket ini tidak termasuk header tingkat rendah seperti IP, UDP atau RTP
  • CSeq : Menentukan nomor urut respons permintaan RTSP. Setiap permintaan RTSP harus berisi nilai CSeq unik sehingga server dapat mengidentifikasi dan memproses permintaan dengan benar. Nomor urut ini bertambah dengan pesan permintaan. Respons server harus memiliki nilai CSeq yang menunjukkan permintaan mana yang akan ditanggapi.
  • Kontrol Cache: Menerapkan mekanisme caching dengan menentukan instruksi.Arahan caching bersifat satu arah, artinya arahan yang ditetapkan dalam permintaan belum tentu disertakan dalam respons.
  • Konferensi: Memberi tahu server bahwa ID konferensi dari sesi RTSP yang sama tidak boleh diubah
  • Koneksi: Bidang ini menentukan apakah koneksi jaringan akan ditutup setelah transaksi saat ini selesai. Jika nilainya "tetap hidup", koneksi jaringan bersifat persisten dan tidak akan ditutup, sehingga permintaan ke server yang sama dapat terus diselesaikan pada koneksi atau Koneksi: tutup.
  • Konten-Panjang : Bidang ini menunjukkan panjang konten setelah CRLF ganda setelah header terakhir protokol RTSP.Misalnya, dalam respons server DESCRIBE, tentukan panjang informasi sdp
  • Jenis konten: Memberi tahu klien jenis konten dari konten sebenarnya yang dikembalikan
  • Tanggal : Memberikan tanggal dan waktu ketika server menghasilkan respons, yang membantu klien menentukan kesegaran respons atau melakukan sinkronisasi waktu. Format kolom Tanggal sesuai dengan RFC 1123, misalnya: Sabtu, 06 Apr 2024 11:15:00 GMT.
  • Agen pengguna: Bidang ini digunakan untuk memungkinkan rekan protokol jaringan mengidentifikasi jenis aplikasi, sistem operasi, pengembang perangkat lunak, dan nomor versi perangkat lunak agen pengguna yang memulai permintaan.
  • Kedaluwarsa: Menentukan waktu kedaluwarsa
  • Berdering: Digunakan untuk menentukan rentang waktu, Anda dapat menggunakan SMPTE, NTP atau satuan waktu jam.
  • Sidang :Bidang Header sesi mengidentifikasi sesi RTSP. ID sesi ditentukan oleh server diSETUPDipilih dalam respon, setelah klien memperoleh ID Sesi, maka akan menyertakan ID Sesi dalam pesan permintaan operasi masa depan untuk Sesi. Misalnya: Sesi: 4581E0AE;
  • Mengangkut : Bidang header Transport berisi daftar opsi transport yang dapat diterima oleh klien, termasuk protokol transport, port alamat, TTL, dll. Server juga mengembalikan opsi spesifik yang sebenarnya dipilih melalui kolom header ini. Misalnya: Transportasi: RTP/AVP/TCPunicast;destination=192.168.31.222;source=192.168.31.222;interleaved=0-1

Masukkan deskripsi gambar di sini

🎄五、RTSP 流程抓包解析

Gunakan wireshark untuk menangkap paket jaringan media streaming RTSP Anda dapat melihat bahwa proses umumnya adalah sebagai berikut:
1. Klien mengirimOPTIONSMetode, balasan server;
2. Klien mengirimDESCRIBEMetode, balasan server;
3. Klien mengirimSETUPMetode, balasan server;
2. Klien mengirimPLAYMetode, balasan server;
2. Klien mengirimTEARDOWNMetode, balasan server;
Masukkan deskripsi gambar di sini
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.

✨5.1, metode OPSI

Dapatkan metode yang tersedia dari server:
Masukkan deskripsi gambar di sini
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, gunakanDatetentukan tanggalnya,PublicMenentukan metode yang disediakan.


✨5.2, JELASKAN metodenya

Dapatkan dari serverrtsp://192.168.3.225:554/wbcdeskripsi objek media, di manaAcceptBidang menentukan format deskripsi:

Masukkan deskripsi gambar di sini
Klien mengirimkan metode DESCRIBE dan menggunakannyaCSeq Untuk menentukan nomor urut permintaan, gunakanUser-Agent identifikasi agen Anda,AcceptBidang tersebut menentukan format deskripsi sebagai SDP;

Server akan menanggapi permintaan ini menggunakan CSeq Untuk menunjukkan permintaan mana yang ditanggapi, gunakanDatetentukan tanggalnya,Content-TypeMenunjukkan bahwa tipe konten adalah SDP,Content-LengthTentukan 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.


✨5.3, metode PENYIAPAN

Klien meminta server untuk membuat sesi dan mempersiapkan transmisi. Informasi permintaan terutama mencakup protokol transmisi dan nomor port klien;

Masukkan deskripsi gambar di sini
Klien mengirimkan metode SETUP dan menggunakannyaCSeq Untuk menentukan nomor urut permintaan, gunakanUser-Agent identifikasi agen Anda,TransportBidang 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, gunakanDatetentukan tanggalnya,TransportTentukan protokol transport RTP/AVP, alamat tujuan, alamat sumber, port klien (RTP 55320, RTCP 55321), port server (RTP 6970, RTCP 6971),SessionTentukan 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/TCPMenunjukkan bahwa aliran RTP ditransmisikan melalui TCP. Ketika nilai ini muncul, pesan tidak memiliki bidang client_port;
interleaved=0-1Mewakili 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


✨5.4, metode MAINKAN

Klien secara aktif memberitahukan server untuk mulai mengirimkan data menggunakan mekanisme yang ditentukan oleh SETUP.

Masukkan deskripsi gambar di sini
Klien mengirimkan metode PLAY dan menggunakannyaCSeq Untuk menentukan nomor urut permintaan, gunakanUser-Agent identifikasi agen Anda,Sessionbidang menentukan ID sesi,RangeBidang ini menentukan waktu mulai dan berakhirnya pemutaran.

Server akan menanggapi permintaan ini menggunakan CSeq Tunjukkan permintaan mana yang ditanggapi;Datetentukan tanggal;RangeBidang ini menentukan waktu mulai dan berakhirnya pemutaran;SessionBidang tersebut menentukan ID sesi;RTP-InfoBidang 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.


✨5.5, metode TEARDOWN

Klien meminta untuk berhenti mengirimkan aliran URL yang ditentukan dan melepaskan sumber daya terkait.
Masukkan deskripsi gambar di sini
Klien mengirimkan metode TEARDOWN dan menggunakannyaCSeq Untuk menentukan nomor urut permintaan, gunakanUser-Agent identifikasi agen Anda,Sessionbidang menentukan ID sesi.

Server akan menanggapi permintaan ini menggunakan CSeq Tunjukkan permintaan mana yang ditanggapi;DateTentukan tanggalnya.


Masukkan deskripsi gambar di sini

🎄六、RTSP 响应错误码

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:

  • 1xx: Tip - permintaan telah diterima dan sedang diproses
  • 2xx: Berhasil - permintaan berhasil diproses
  • 3xx: Redirect - tindakan lebih lanjut harus diambil untuk menyelesaikan permintaan
  • 4xx: Kesalahan Klien - Permintaan berisi parameter atau sintaksis yang salah dan permintaan tidak dapat dipenuhi.
  • 5xx: Kesalahan Server - Server tidak dapat memenuhi permintaan klien yang benar

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 kesalahanfrase alasanmetode respons
100MelanjutkanSemua
200KesuksesanSemua
201DibuatCATATAN
250Ruang Penyimpanan RendahCATATAN
300Pilihan gandaSemua
301Dipindahkan Secara PermanenSemua
302pindah sementaraSemua
303Lihat LainnyaSemua
305Gunakan proxySemua
400Permintaan yang burukSemua
401Tidak sahSemua
402Pembayaran DiperlukanSemua
403TerlarangSemua
404Tidak ditemukanSemua
405Metode Tidak DiizinkanSemua
406Tidak dapat diterimaSemua
407Diperlukan Autentikasi ProxySemua
408Permintaan Batas WaktuSemua
410HilangSemua
411Panjang yang DiperlukanSemua
412Prasyarat Gagal DESCRIBEMEMPERSIAPKAN
413Permintaan Entitas Terlalu BesarSemua
414Permintaan-URI Terlalu PanjangSemua
415Jenis Media yang Tidak DidukungSemua
451Parameter tidak validMEMPERSIAPKAN
452Pengidentifikasi Konferensi IlegalMEMPERSIAPKAN
453Bandwidth Tidak CukupMEMPERSIAPKAN
454Sesi Tidak DitemukanSemua
455Metode Tidak Valid Di Negara Bagian IniSemua
456Bidang Header Tidak ValidSemua
457Rentang Tidak ValidBERMAIN
458Parameter Hanya Dapat DibacaSET_PARAMETER
459Operasi Agregat Tidak DiizinkanSemua
460Hanya Operasi Agregat yang DiizinkanSemua
461Transportasi Tidak DidukungSemua
462Tujuan Tidak Dapat DicapaiSemua
500Kesalahan server dari dalamSemua
501Belum DiimplementasikanSemua
502Gerbang BurukSemua
503Layanan tidak tersediaSemua
504Batas Waktu GerbangSemua
505Versi RTSP Tidak DidukungSemua
551Opsi tidak didukungSemua

Masukkan deskripsi gambar di sini
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

mengacu pada:
Protokol streaming waktu nyata—RTSP [penjelasan mendetail]
Kuasai permintaan dan respons RTSP dari awal 1
Penjelasan rinci tentang protokol media streaming RTSP