Κοινή χρήση τεχνολογίας

[Ήχος και βίντεο |.

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰Ώρα κυκλοφορίας⏰: 06-07-2024 12:22:00

Αυτό το άρθρο δεν μπορεί να προωθηθεί χωρίς άδεια! ! !


Εισαγάγετε την περιγραφή της εικόνας εδώ

🎄一、概述

RTSP, πλήρες όνομα Real Time Streaming Protocol, το πρωτόκολλο ροής σε πραγματικό χρόνο, είναι ένα πρωτόκολλο επιπέδου εφαρμογής στο σύστημα πρωτοκόλλου TCP/IP Είναι ένα πρότυπο IETF RFC που υποβάλλεται από το Πανεπιστήμιο Columbia, το Netscape και το RealNetworks.

Το επίσημο έγγραφο σχετικά με το πρωτόκολλο RTSP είναι RFC2326, σύνδεσμος εγγράφου:RFC2326-Πρωτόκολλο ροής σε πραγματικό χρόνο (RTSP)

Αναφέρεται η σύνταξη και η λειτουργία του πρωτοκόλλου RTSP. HTTP/1.1, ένα πρωτόκολλο που βασίζεται σε κείμενο που χρησιμοποιεί το σύνολο χαρακτήρων ISO10646 και την κωδικοποίηση UTF-8 το πρωτόκολλο του επιπέδου μεταφοράς που φέρει το RTSPTCP, προεπιλεγμένη θύρα554Εάν πρόκειται για σήραγγα RTSP-over-HTTP, η προεπιλεγμένη θύρα TCP χρησιμοποιείται γενικά σε συνδυασμό με το πρωτόκολλο RTP/RTCP, το πρωτόκολλο RTP μεταδίδει δεδομένα ροής σε πραγματικό χρόνο και το πρωτόκολλο RTCP ολοκληρώνει τη μετάδοση των ροών δεδομένων. εντολές ελέγχου.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Πρωτόκολλο RTP: πλήρες όνομαReal-time Transport Protocol , το πρωτόκολλο μετάδοσης σε πραγματικό χρόνο, ανακοινώθηκε από την Ομάδα Εργασίας Μεταφοράς Πολυμέσων του IETF το 1996 στο RFC 1889. Το πρωτόκολλο RTP περιγράφει λεπτομερώς την τυπική μορφή πακέτου για την παράδοση ήχου και βίντεο μέσω του Διαδικτύου. Είναι χτισμένο σε πρωτόκολλο UDP.

Πρωτόκολλο RTCP: πλήρες όνομαReal-time Transport Control Protocol , Πρωτόκολλο ελέγχου μεταφοράς σε πραγματικό χρόνο, που χρησιμοποιείται με RTP. Το RTP χρησιμοποιεί μια θύρα UDP με ζυγό αριθμό. Το RTCP και το RTP λειτουργούν μαζί, το RTP υλοποιεί τη μετάδοση των πραγματικών δεδομένων και το RTCP είναι υπεύθυνο για την αποστολή πακέτων ελέγχου σε όλους στη συνεδρία. Η κύρια λειτουργία του είναι να παρέχει ανατροφοδότηση σχετικά με την ποιότητα της υπηρεσίας που παρέχεται από το RTP.

Η διαφορά μεταξύ πρωτοκόλλου RTSP και πρωτοκόλλου HTTP:
Το RTSP είναι κατάστασης και οι εντολές του αποστέλλονται πάντα με τη σειρά και μπορεί πάντα να χρειάζεται να σταλεί μια εντολή πριν από μια άλλη εντολή. Το HTTP είναι χωρίς κατάσταση Αφού το πρωτόκολλο στείλει μια εντολή, η σύνδεση θα αποσυνδεθεί και δεν υπάρχει εξάρτηση μεταξύ των εντολών.
Το πρωτόκολλο rtsp χρησιμοποιεί τη θύρα 554 και το http χρησιμοποιεί τη θύρα 80.
Τα αιτήματα RTSP μπορούν να σταλούν τόσο από τον διακομιστή όσο και από τον πελάτη, ενώ τα αιτήματα HTTP μπορούν να σταλούν μόνο από τον πελάτη.


Εισαγάγετε την περιγραφή της εικόνας εδώ

🎄二、RTSP 方法

Οι κοινώς χρησιμοποιούμενες μέθοδοι RTSP περιλαμβάνουν: ΕΠΙΛΟΓΕΣ, ΠΕΡΙΓΡΑΦΗ, ΡΥΘΜΙΣΗ, ΑΝΑΠΑΡΑΓΩΓΗ, ΠΑΥΣΗ, ΚΑΤΑΧΩΡΗΣΗ, ΑΝΑΚΟΙΝΩΣΗ, GET_PARAMETER και SET_PARAMETER, κ.λπ. Αναλυτικές οδηγίες χρήσης είναι οι εξής:

  • OPTIONS : Ο πελάτης λαμβάνει τη μέθοδο που υποστηρίζεται από τον διακομιστή από τον διακομιστή. Δεν επηρεάζει την κατάσταση του διακομιστή.
  • DESCRIBE: Ο πελάτης λαμβάνει την περιγραφή του αντικειμένου πολυμέσων που καθορίζεται από τη διεύθυνση URL από τον διακομιστή, όπουAcceptΤο πεδίο καθορίζει τη μορφή περιγραφής.
  • SETUP : Ο πελάτης ζητά από τον διακομιστή να δημιουργήσει μια περίοδο λειτουργίας και να προετοιμαστεί για μετάδοση. Οι πληροφορίες αιτήματος περιλαμβάνουν κυρίως το πρωτόκολλο μετάδοσης και τον αριθμό θύρας του πελάτη.
  • PLAY : Ο πελάτης ειδοποιεί ενεργά τον διακομιστή να ξεκινήσει την αποστολή δεδομένων χρησιμοποιώντας τον μηχανισμό που καθορίζεται από το SETUP.σεRangeΤο πεδίο καθορίζει την ώρα έναρξης και λήξης της αναπαραγωγής (το εύρος ροής σε πραγματικό χρόνο είναι γενικάRange: npt=0.000-), όταν φτάνουν πολλά αιτήματα PLAY, ο διακομιστής θα βάλει στην ουρά τα αιτήματα PLAY και θα τα εκτελέσει διαδοχικά, δηλαδή θα πρέπει να περιμένει να ολοκληρωθεί ο πρώτος χρόνος PLAY πριν συνεχίσει να επεξεργάζεται το δεύτερο μήνυμα PLAY.
  • PAUSE : Ο πελάτης ζητά να ανασταλεί προσωρινά η ροή πολυμέσων του διακομιστή.ικανός να περάσειRangeΗ παράμετρος διακόπτεται σε ένα καθορισμένο χρονικό σημείο ή μπορείτε να καθορίσετε μια ροή για παύση, για παράδειγμα, εάν καθορίσετε μια ροή ήχου για παύση, η αναπαραγωγή θα είναι αθόρυβη.
  • RECORD : RECORD ειδοποιεί τον διακομιστή ότι ο πελάτης θα ξεκινήσει την εγγραφή δεδομένων πολυμέσων σύμφωνα με την προηγούμενη περιγραφή. σεtimestamp Τα πεδία αντικατοπτρίζουν τους χρόνους έναρξης και λήξης (UTC). Εάν αυτό το πεδίο δεν υπάρχει, θα χρησιμοποιηθεί η ώρα έναρξης ή λήξης από την περιγραφή του μέσου. Εάν η συνεδρία έχει ήδη ξεκινήσει, η εγγραφή ξεκινά αμέσως.
    Ο διακομιστής αποφασίζει εάν θα αποθηκεύσει τα συνδεδεμένα δεδομέναrequest-URI Επόμενο ή άλλο URI. Εάν ο διακομιστής δεν χρησιμοποιεί αίτημα-URI, η απάντηση θα πρέπει να είναι 201 (Δημιουργήθηκε) και να περιέχει μια κεφαλίδα οντότητας και τοποθεσίας που περιγράφει την κατάσταση του αιτήματος και αναφέρεται στον νέο πόρο.
  • TEARDOWN: Ο πελάτης ζητά να σταματήσει η αποστολή της καθορισμένης ροής URL και να αποδεσμεύσει σχετικούς πόρους.
  • REDIRECT : Για να ανακατευθύνει ένα αίτημα, ο διακομιστής ειδοποιεί τον πελάτη ότι πρέπει να συνδεθεί σε άλλη θέση διακομιστή. Περιέχει την υποχρεωτική κεφαλίδα Τοποθεσία, η οποία υποδεικνύει ότι ο πελάτης πρέπει να υποβάλει αίτημα για αυτήν τη διεύθυνση URL. Μπορεί να περιέχει την παράμετρο Εύρος, που υποδεικνύει πότε θα τεθεί σε ισχύ η ανακατεύθυνση. Εάν ο πελάτης θέλει να συνεχίσει να στέλνει ή να λαμβάνει πολυμέσα για αυτό το URI, ο πελάτης πρέπει να εκδώσει ένα αίτημα TEARDOWN για την τρέχουσα περίοδο λειτουργίας και ένα SETUP για τη νέα περίοδο λειτουργίας στον καθορισμένο κεντρικό υπολογιστή.
  • ANNOUNCE: Όταν ο πελάτης στέλνει στον διακομιστή, αυτό σημαίνει ότι υποβάλλει την περιγραφή της παρουσίασης ή το αντικείμενο πολυμέσων που προσδιορίζεται από τη διεύθυνση URL αιτήματος στον διακομιστή
    Όταν ο διακομιστής το στέλνει στον πελάτη, σημαίνει ειδοποίηση του πελάτη για ενημέρωση των πληροφοριών περιόδου σύνδεσης.
  • GET_PARAMETER :GET_PARAMETER αίτημα για ανάκτηση τιμών παραμέτρων για την αναπαράσταση ή τη ροή που καθορίζεται στο URI. Το περιεχόμενο των απαντήσεων και των απαντήσεων επαφίεται στην υλοποίηση. Το GET_PARAMETER χωρίς σώμα οντότητας μπορεί να χρησιμοποιηθεί για τον έλεγχο της ζωντανότητας ("ping") ενός πελάτη ή διακομιστή.
  • SET_PARAMETER : Αυτή η μέθοδος ζητά να ορίσετε τις τιμές παραμέτρων της καθορισμένης ροής επίδειξης ή διεύθυνσης URL. Τα αιτήματα πρέπει να περιέχουν μόνο μία παράμετρο, επιτρέποντας στον πελάτη να αποφασίσει γιατί ένα συγκεκριμένο αίτημα απέτυχε. Εάν το αίτημα περιέχει πολλές παραμέτρους, όλες οι παράμετροι μπορούν να ρυθμιστούν με επιτυχία και ο διακομιστής πρέπει να ενεργήσει μόνο σε αυτό το αίτημα. Ο διακομιστής πρέπει να επιτρέπει την επανειλημμένη ρύθμιση των παραμέτρων στην ίδια τιμή, αλλά να μην αλλάζει την τιμή της παραμέτρου. Σημείωση: Οι παράμετροι ροής πολυμέσων πρέπει να ρυθμιστούν χρησιμοποιώντας την εντολή SETUP. Είναι επωφελές για τα τείχη προστασίας να περιορίζουν τις παραμέτρους μεταφοράς εγκατάστασης στο SETUP.

Συνολικά 11 μέθοδοι RTSP εισάγονται παραπάνω, μεταξύ των οποίων:SETUPPLAYTEARDOWN Οι τρεις εντολές είναι απαραίτητες στη διαδικασία RTSP και άλλες μέθοδοι δεν είναι απαραίτητες.καιANNOUNCEGET_PARAMETERSET_PARAMETERΟι τρεις εντολές μπορούν να σταλούν από τον πελάτη στον διακομιστή ή από τον διακομιστή στον πελάτη.


Εισαγάγετε την περιγραφή της εικόνας εδώ

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

Το RTSP έχει δύο τύπους μηνυμάτων: μηνύματα αιτήματος και μηνύματα απάντησης. Το μήνυμα αίτησης αναφέρεται στο μήνυμα αιτήματος που αποστέλλεται από τον πελάτη στον διακομιστή και το μήνυμα απάντησης αναφέρεται στην απάντηση από τον διακομιστή στον πελάτη.

✨3.1, μήνυμα αιτήματος RTSP

Το μήνυμα αιτήματος RTSP αποτελείται από τρία μέρη: γραμμή αιτήματος, κεφαλίδα αιτήματος και σώμα αιτήματος. Μεταξύ αυτών, απαιτείται η γραμμή αιτήματος, ενώ η κεφαλίδα και το σώμα αιτήματος είναι προαιρετικά ανάλογα με τη συγκεκριμένη κατάσταση.
Εισαγάγετε την περιγραφή της εικόνας εδώ

  • Γραμμή αιτήματος: Η γραμμή αιτήματος αποτελείται από μια μέθοδο, ένα URI αιτήματος και μια έκδοση πρωτοκόλλου που χωρίζονται με κενά και πριν από το CRLF (δηλ.:rn)Φινίρισμα.
    方法 : Είναι η μέθοδος RTSP που εισήχθη παραπάνω. Συμπεριλαμβανομένων OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN κ.λπ.
    请求URI: Προσδιορίζει τον πόρο πολυμέσων προς λειτουργία, συνήθως με τη μορφή rtsp://example.com/path/to/stream.
    协议版本: Υποδεικνύει την έκδοση πρωτοκόλλου RTSP που ακολουθεί συνήθως το αίτημαRTSP/1.0ήRTSP/2.0
    Ακολουθεί ένα παράδειγμα μιας πλήρους γραμμής αιτήματος:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Κεφαλίδα αιτήματος: Η κεφαλίδα αιτήματος περιέχει ορισμένες πρόσθετες πληροφορίες, όπως: CSeq (αριθμός ακολουθίας που χρησιμοποιείται για την αναγνώριση του αιτήματος), Αναγνωριστικό περιόδου σύνδεσης (αναγνωριστικό περιόδου λειτουργίας), Μεταφορά (πρωτόκολλο μεταφοράς) κ.λπ. Κάθε πεδίο κεφαλίδας αποτελείται από ένα όνομα πεδίου, μια άνω και κάτω τελεία και μια τιμή πεδίου και κάθε πεδίο κεφαλίδας διαχωρίζεται με CRLF.
    Ακολουθεί ένα παράδειγμα πλήρους κεφαλίδας αιτήματος:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Σώμα αιτήματος: Το σώμα αιτήματος χρησιμοποιείται για τη μετάδοση πρόσθετων δεδομένων. Το συγκεκριμένο περιεχόμενο του σώματος αιτήματος εξαρτάται από τη μέθοδο RTSP που χρησιμοποιείται στη γραμμή αιτήματος. Σημείωση: Μετά την κεφαλίδα αιτήματος, πρέπει να εισαχθεί μια κενή γραμμή (CRLF) για να διακρίνεται η κεφαλίδα αιτήματος από το σώμα αιτήματος. Τα περισσότερα μηνύματα αιτήματος δεν έχουν σώμα αιτήματος.

✨3.2, μήνυμα απάντησης RTSP

Το μήνυμα αιτήματος RTSP αποτελείται από τρία μέρη: γραμμή κατάστασης, κεφαλίδα απόκρισης και σώμα απόκρισης. Μεταξύ αυτών, απαιτείται η γραμμή κατάστασης, ενώ η κεφαλίδα απόκρισης και το σώμα απόκρισης είναι προαιρετικά ανάλογα με τη συγκεκριμένη κατάσταση.
Εισαγάγετε την περιγραφή της εικόνας εδώ

  • Γραμμή κατάστασης: Η γραμμή κατάστασης περιέχει μια έκδοση πρωτοκόλλου, έναν κωδικό κατάστασης και ένα κείμενο κατάστασης, διαχωρισμένα με κενά και τερματισμένα με CRLF (δηλ.: "rn").
    协议版本: Υποδεικνύει την έκδοση του πρωτοκόλλου RTSP που ακολουθεί η απόκριση, συνήθως RTSP/1.0 ή RTSP/2.0.
    状态码 : Τρία ψηφία, όπως: 200, 401, 500 κ.λπ., που χρησιμοποιούνται για να υποδείξουν το αποτέλεσμα επεξεργασίας του αιτήματος. Το πρώτο ψηφίο αντιπροσωπεύει την κατηγορία απόκρισης: 2xx υποδηλώνει επιτυχία, 4xx δηλώνει σφάλμα πελάτη και 5xx σφάλμα διακομιστή.
    状态文本: Μια σύντομη περιγραφή κειμένου που εξηγεί τη συγκεκριμένη σημασία του αντίστοιχου κωδικού κατάστασης, όπως: ΟΚ, Μη εξουσιοδοτημένο κ.λπ.
    Εδώ είναι ένα παράδειγμα γραμμής απάντησης:
    RTSP/1.0 200 OK
    
  • Κεφαλίδα απόκρισης: Η κεφαλίδα απόκρισης περιέχει πληροφορίες παρόμοιες με την κεφαλίδα αιτήματος, όπως: CSeq (αριθμός ακολουθίας που χρησιμοποιείται για την αναγνώριση του αιτήματος), Αναγνωριστικό περιόδου σύνδεσης (αναγνωριστικό περιόδου σύνδεσης), Μεταφορά (πρωτόκολλο μεταφοράς) κ.λπ. Η μορφή κάθε πεδίου κεφαλίδας απάντησης είναι ίδια με εκείνη της κεφαλίδας αιτήματος, επομένως δεν θα υπεισέλθουμε σε λεπτομέρειες εδώ.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Σώμα απόκρισης: Ορισμένες αποκρίσεις RTSP (όπως το DESCRIBE) ενδέχεται να περιέχουν σώμα απόκρισης για τη μετάδοση πρόσθετων δεδομένων.Σημείωση: Μετά την κεφαλίδα απόκρισης, πρέπει να εισαχθεί μια κενή γραμμή (CRLF).Διάκριση μεταξύ κεφαλίδων απόκρισης και σώματος απόκρισης
    Παρακάτω είναι ένα παράδειγμα πλήρους σώματος απόκρισης.
    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
    

Εισαγάγετε την περιγραφή της εικόνας εδώ

🎄四、RTSP 报文的常用字段

Η κεφαλίδα απόκρισης του μηνύματος RTSP θα περιέχει ορισμένα πεδία Τα ακόλουθα είναι μερικά πεδία που χρησιμοποιούνται συνήθως:

  • Αποδέχομαι : Χρησιμοποιείται για τον καθορισμό του τύπου της δομής δεδομένων οντότητας που ο πελάτης ενημερώνει τον διακομιστή να αποδεχτεί. Για παράδειγμα: Αποδοχή: εφαρμογή/sdp και, στη συνέχεια, ο διακομιστής επιστρέφει τον τύπο δομής δεδομένων οντότητας μέσω του πεδίου Content-Type.
  • Αποδοχή-Κωδικοποίηση: Χρησιμοποιείται από τον πελάτη για να ειδοποιήσει τον διακομιστή για τις μορφές συμπίεσης δεδομένων που μπορεί να δεχθεί, για παράδειγμα: Αποδοχή-Κωδικοποίηση: gzip, compress, br Ο διακομιστής θα ειδοποιήσει τον πελάτη για την επιλογή του μέσω του πεδίου Content-Encoding .
  • Accept-Language: χρησιμοποιείται από τον πελάτη για να ειδοποιήσει τον διακομιστή για τις γλώσσες που μπορεί να κατανοήσει και την αποδοχή του, για παράδειγμα: Accept-Language: fr-CH, fr;q=0,9, en;q=0,8, de;q =0.7, *; q=0.5, μετά την οποία ο διακομιστής θα ειδοποιήσει τον πελάτη για την επιλογή του μέσω του πεδίου Content-Language.
  • Εξουσιοδότηση: Η κεφαλίδα αιτήματος πελάτη περιέχει τα διαπιστευτήρια που χρησιμοποιούνται από τον διακομιστή για τον έλεγχο ταυτότητας του παράγοντα χρήστη.
  • Εύρος ζώνης: Χρησιμοποιείται για να περιγράψει την τιμή εύρους ζώνης που είναι διαθέσιμη στον πελάτη. Για παράδειγμα: Εύρος ζώνης: 4000
  • Μέγεθος αποκλεισμού: Αυτό το πεδίο αποστέλλεται από τον πελάτη στον διακομιστή πολυμέσων για να ζητήσει ένα συγκεκριμένο μέγεθος πακέτου πολυμέσων από τον διακομιστή, ο διακομιστής είναι ελεύθερος να χρησιμοποιήσει μικρότερα μεγέθη μπλοκ από αυτά που ζητήθηκαν. Αυτό το μέγεθος πακέτου δεν περιλαμβάνει κεφαλίδες χαμηλού επιπέδου όπως IP, UDP ή RTP
  • CSeq : Καθορίζει τον αριθμό σειράς της απόκρισης αιτήματος RTSP Κάθε αίτημα RTSP πρέπει να περιέχει μια μοναδική τιμή CSeq, έτσι ώστε ο διακομιστής να μπορεί να αναγνωρίσει και να επεξεργαστεί σωστά το αίτημα. Αυτός ο αριθμός σειράς αυξάνεται με τα μηνύματα αιτήματος. Η απόκριση διακομιστή πρέπει να έχει μια τιμή CSeq που υποδεικνύει σε ποιο αίτημα να απαντήσει.
  • Cache-Control: Εφαρμόστε τον μηχανισμό προσωρινής αποθήκευσης καθορίζοντας οδηγίες.Οι οδηγίες προσωρινής αποθήκευσης είναι μονόδρομες, πράγμα που σημαίνει ότι οι οδηγίες που ορίζονται στο αίτημα δεν περιλαμβάνονται απαραίτητα στην απάντηση.
  • Συνδιάσκεψη: Ειδοποιήστε τον διακομιστή ότι το αναγνωριστικό διάσκεψης της ίδιας περιόδου λειτουργίας RTSP δεν πρέπει να αλλάξει
  • Σύνδεση: Αυτό το πεδίο καθορίζει εάν η σύνδεση δικτύου θα κλείσει μετά την ολοκλήρωση της τρέχουσας συναλλαγής. Εάν η τιμή είναι "keep-alive", η σύνδεση δικτύου είναι μόνιμη και δεν θα κλείσει, έτσι ώστε τα αιτήματα στον ίδιο διακομιστή να μπορούν να συνεχίσουν να ολοκληρώνονται στη σύνδεση ή Σύνδεση: κλείσιμο.
  • Περιεχόμενο-Μήκος : Αυτό το πεδίο υποδεικνύει το μήκος περιεχομένου μετά το διπλό CRLF που ακολουθεί την τελευταία κεφαλίδα του πρωτοκόλλου RTSP.Για παράδειγμα, στην απόκριση διακομιστή DESCRIBE, καθορίστε το μήκος πληροφοριών sdp
  • Τύπος περιεχομένου: Λέει στον πελάτη τον τύπο περιεχομένου του πραγματικού περιεχομένου που επιστράφηκε
  • Ημερομηνία : Παρέχει την ημερομηνία και την ώρα που ο διακομιστής δημιούργησε την απόκριση, η οποία βοηθά τον πελάτη να προσδιορίσει τη φρεσκάδα της απάντησης ή να πραγματοποιήσει συγχρονισμό ώρας. Η μορφή του πεδίου Ημερομηνία συμμορφώνεται με το RFC 1123, για παράδειγμα: Σάββ., 06 Απρ 2024 11:15:00 GMT.
  • Χρήστης-Πράκτορας: Αυτό το πεδίο χρησιμοποιείται για να επιτρέψει στον ομότιμο του πρωτοκόλλου δικτύου να αναγνωρίσει τον τύπο εφαρμογής, το λειτουργικό σύστημα, τον προγραμματιστή λογισμικού και τον αριθμό έκδοσης του λογισμικού παράγοντα χρήστη που ξεκίνησε το αίτημα.
  • Expires: Καθορίζει το χρόνο λήξης
  • Rang: Χρησιμοποιείται για τον καθορισμό ενός χρονικού εύρους, μπορείτε να χρησιμοποιήσετε SMPTE, NTP ή μονάδα ώρας ρολογιού.
  • Συνεδρία :Το πεδίο κεφαλίδας περιόδου λειτουργίας προσδιορίζει μια περίοδο λειτουργίας RTSP. Το αναγνωριστικό περιόδου σύνδεσης καθορίζεται από τον διακομιστή στοSETUPΕπιλεγμένο στην απάντηση, μόλις ο πελάτης λάβει το Session ID, θα συμπεριλάβει το Session ID σε μελλοντικά μηνύματα αιτήματος λειτουργίας για την Session
  • Μεταφορά : Το πεδίο κεφαλίδα μεταφοράς περιέχει μια λίστα επιλογών μεταφοράς που είναι αποδεκτές από τον πελάτη, συμπεριλαμβανομένου του πρωτοκόλλου μεταφοράς, της θύρας διεύθυνσης, του TTL κ.λπ. Ο διακομιστής επιστρέφει επίσης τη συγκεκριμένη επιλογή που έχει πραγματικά επιλεγεί μέσω αυτού του πεδίου κεφαλίδας. Για παράδειγμα: Μεταφορά: RTP/AVP/TCPunicast;destination=192.168.31.222;source=192.168.31.222;interleaved=0-1

Εισαγάγετε την περιγραφή της εικόνας εδώ

🎄五、RTSP 流程抓包解析

Χρησιμοποιήστε το wireshark για να καταγράψετε τα πακέτα δικτύου των μέσων ροής RTSP Μπορείτε να δείτε ότι η γενική διαδικασία είναι η εξής:
1. Ο πελάτης στέλνειOPTIONSΜέθοδος, απάντηση διακομιστή.
2. Ο πελάτης στέλνειDESCRIBEΜέθοδος, απάντηση διακομιστή.
3. Ο πελάτης στέλνειSETUPΜέθοδος, απάντηση διακομιστή.
2. Ο πελάτης στέλνειPLAYΜέθοδος, απάντηση διακομιστή.
2. Ο πελάτης στέλνειTEARDOWNΜέθοδος, απάντηση διακομιστή.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Το πλήρες πακέτο ροής έχει ως εξής:

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

Τα παρακάτω θα αναλύσουν κάθε μέθοδο RTSP και απάντηση που χρησιμοποιήθηκαν στο προηγούμενο μήνυμα.

✨5.1, μέθοδος OPTION

Λάβετε διαθέσιμες μεθόδους από τον διακομιστή:
Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο πελάτης στέλνει τη μέθοδο OPTIONS και χρησιμοποιείCSeq Για να καθορίσετε τον αριθμό σειράς αιτημάτων, χρησιμοποιήστεUser-Agent προσδιορίζει τον δικό του αντιπρόσωπο·
Ο διακομιστής θα απαντήσει στο αίτημα χρησιμοποιώνταςCSeq Για να υποδείξετε σε ποιο αίτημα ανταποκρίνεται, χρησιμοποιήστε τοDateκαθορίστε την ημερομηνία,PublicΚαθορίζει τη μέθοδο που παρέχεται.


✨5.2, μέθοδος ΠΕΡΙΓΡΑΦΗΣ

Λήψη από διακομιστήrtsp://192.168.3.225:554/wbcπεριγραφή του αντικειμένου μέσων, όπουAcceptΤο πεδίο καθορίζει τη μορφή περιγραφής:

Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο πελάτης στέλνει τη μέθοδο DESCRIBE και χρησιμοποιείCSeq Για να καθορίσετε τον αριθμό σειράς αιτημάτων, χρησιμοποιήστεUser-Agent αναγνωρίστε τον αντιπρόσωπό σας,AcceptΤο πεδίο καθορίζει τη μορφή περιγραφής ως SDP.

Ο διακομιστής θα απαντήσει σε αυτό το αίτημα χρησιμοποιώντας CSeq Για να υποδείξετε σε ποιο αίτημα ανταποκρίνεται, χρησιμοποιήστε τοDateκαθορίστε την ημερομηνία,Content-TypeΥποδεικνύει ότι ο τύπος περιεχομένου είναι SDP,Content-LengthΚαθορίστε το μήκος του περιεχομένου.

Ειδοποίηση
1. Για ορισμένα που απαιτούν όνομα χρήστη και κωδικό πρόσβασης, ο διακομιστής θα επεξεργαστεί τη μέθοδο DESCRIBE για έλεγχο ταυτότητας. Εάν οι πληροφορίες ελέγχου ταυτότητας εξουσιοδότησης δεν μεταφερθούν ή ο έλεγχος ταυτότητας αποτύχει, ο διακομιστής θα επιστρέψει μια απάντηση με αριθμό σφάλματος 401. Όταν ο πελάτης λάβει την απάντηση 401, πρέπει να δημιουργήσει Εξουσιοδότηση με βάση τις πληροφορίες ελέγχου ταυτότητας γνωστού χρήστη και να στείλει ξανά περιγραφή. Εάν ο έλεγχος ταυτότητας είναι επιτυχής, ο διακομιστής επιστρέφει πληροφορίες απόκρισης που φέρουν SDP.
2. Οι πληροφορίες SDP που επιστρέφονται από τον διακομιστή θα αναλυθούν σε επόμενο άρθρο.


✨5.3, μέθοδος SETUP

Ο πελάτης ζητά από τον διακομιστή να δημιουργήσει μια συνεδρία και να προετοιμαστεί για μετάδοση. Οι πληροφορίες αιτήματος περιλαμβάνουν κυρίως το πρωτόκολλο μετάδοσης και τον αριθμό θύρας του πελάτη.

Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο πελάτης στέλνει τη μέθοδο SETUP και χρησιμοποιείCSeq Για να καθορίσετε τον αριθμό σειράς αιτημάτων, χρησιμοποιήστεUser-Agent αναγνωρίστε τον αντιπρόσωπό σας,TransportΤο πεδίο καθορίζει το αποδεκτό πρωτόκολλο μετάδοσης RTP/AVP και τη θύρα (εδώ η θύρα RTP είναι 55320 και η θύρα RTCP είναι 55321).

Ο διακομιστής θα απαντήσει σε αυτό το αίτημα χρησιμοποιώντας CSeq Για να υποδείξετε σε ποιο αίτημα ανταποκρίνεται, χρησιμοποιήστε τοDateκαθορίστε την ημερομηνία,TransportΚαθορίστε το πρωτόκολλο μεταφοράς RTP/AVP, τη διεύθυνση προορισμού, τη διεύθυνση πηγής, τη θύρα πελάτη (το RTP είναι 55320, το RTCP είναι 55321), τη θύρα διακομιστή (το RTP είναι 6970, το RTCP είναι 6971),SessionΚαθορίστε το αναγνωριστικό περιόδου σύνδεσης.

Ειδοποίηση
Σε αυτό το παράδειγμα, το RTP μεταδίδεται μέσω πρωτοκόλλου UDP Μερικές φορές, το RTP θα μεταδοθεί μέσω TCPTransport Τα πεδία θα διαφέρουν. Μπορεί να είναι ως εξής:

客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"

RTP/AVP/TCPΥποδεικνύει ότι η ροή RTP μεταδίδεται μέσω TCP Όταν εμφανίζεται αυτή η τιμή, το μήνυμα δεν έχει το πεδίο client_port.
interleaved=0-1Αντιπροσωπεύει το streamid, προσδιορίζοντας το RTP streamid=0;
Όταν η ροή κώδικα μεταδίδεται μέσω TCP, μοιράζεται μια σύνδεση TCP με το RTSP, επομένως δεν χρειάζεται να δημιουργήσει μια νέα σύνδεση για να διακρίνει τα πρωτόκολλα RTP, RTCP και RTSP, πρέπει να προστεθεί ένα αναγνωριστικό κεφαλίδας Το πεδίο κεφαλίδας χρησιμοποιείται εδώ και η ενότητα tcphead είναι τέσσερις λέξεις, η μορφή είναι η εξής:

| magic number | channel number | embedded data length | data |

magic number: 1 byte, σταθερό σε0x24, είναι ένας χαρακτήρας$, υποδεικνύοντας ότι τα δεδομένα που μεταδίδονται δεν είναι το πρωτόκολλο rtsp.
channel number: 1 byte, αναγνωριστικό καναλιού, που προσδιορίζει τον τύπο ροής, που είναι το streamid που αναφέρθηκε προηγουμένως.
embedded data length : 2 byte, υποδεικνύοντας το μήκος ροής
data: Υποδεικνύει δεδομένα πακέτων RTP/RTCP


✨5.4, μέθοδος PLAY

Ο πελάτης ειδοποιεί ενεργά τον διακομιστή να ξεκινήσει την αποστολή δεδομένων χρησιμοποιώντας τον μηχανισμό που καθορίζεται από το SETUP.

Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο πελάτης στέλνει τη μέθοδο PLAY και χρησιμοποιείCSeq Για να καθορίσετε τον αριθμό σειράς αιτημάτων, χρησιμοποιήστεUser-Agent αναγνωρίστε τον αντιπρόσωπό σας,SessionΤο πεδίο καθορίζει το αναγνωριστικό συνεδρίας,RangeΤο πεδίο καθορίζει την ώρα έναρξης και λήξης της αναπαραγωγής.

Ο διακομιστής θα απαντήσει σε αυτό το αίτημα χρησιμοποιώντας CSeq Υποδείξτε σε ποιο αίτημα ανταποκρίνεται η χρήσηDateκαθορίστε την ημερομηνία?RangeΤο πεδίο καθορίζει την ώρα έναρξης και λήξης της αναπαραγωγής.SessionΤο πεδίο καθορίζει το αναγνωριστικό περιόδου σύνδεσης.RTP-InfoΤο πεδίο περιγράφει τις πληροφορίες RTP της ροής κώδικα που θα σταλεί, όπως η συνέχεια και ο χρόνος rtp του πρώτου πακέτου RTP.


✨5.5, μέθοδος TEARDOWN

Ο πελάτης ζητά να σταματήσει την αποστολή της καθορισμένης ροής URL και να αποδεσμεύσει σχετικούς πόρους.
Εισαγάγετε την περιγραφή της εικόνας εδώ
Ο πελάτης στέλνει τη μέθοδο TEARDOWN και χρησιμοποιείCSeq Για να καθορίσετε τον αριθμό σειράς αιτημάτων, χρησιμοποιήστεUser-Agent αναγνωρίστε τον αντιπρόσωπό σας,SessionΤο πεδίο καθορίζει το αναγνωριστικό περιόδου σύνδεσης.

Ο διακομιστής θα απαντήσει σε αυτό το αίτημα χρησιμοποιώντας CSeq Υποδείξτε σε ποιο αίτημα ανταποκρίνεται η χρήσηDateΚαθορίστε την ημερομηνία.


Εισαγάγετε την περιγραφή της εικόνας εδώ

🎄六、RTSP 响应错误码

Το περιεχόμενο απόκρισης του RTSP συνήθως περιέχει έναν ακέραιο κωδικό απόκρισης και μια αιτιολογική φράση Ο σκοπός της φράσης είναι να δώσει μια σύντομη περιγραφή κειμένου του κωδικού κατάστασης. Σύμφωνα με τη διαφορά μεταξύ του πρώτου ψηφίου του κωδικού απάντησης, μπορεί να χωριστεί στις ακόλουθες πέντε κατηγορίες:

  • 1xx: Συμβουλή - το αίτημα ελήφθη και βρίσκεται υπό επεξεργασία
  • 2xx: Επιτυχία - το αίτημα διεκπεραιώθηκε με επιτυχία
  • 3xx: Ανακατεύθυνση - πρέπει να γίνουν περαιτέρω ενέργειες για την ολοκλήρωση του αιτήματος
  • 4xx: Σφάλμα πελάτη - Το αίτημα περιείχε λανθασμένες παραμέτρους ή σύνταξη και το αίτημα δεν μπορούσε να εκπληρωθεί.
  • 5xx: Σφάλμα διακομιστή - Ο διακομιστής δεν μπόρεσε να εκπληρώσει το σωστό αίτημα του πελάτη

Φυσικά, οι κωδικοί σφαλμάτων RTSP και οι μέθοδοι RTSP συνδέονται στενά με ορισμένα σφάλματα μόνο σε συγκεκριμένες μεθόδους.

κωδικός λάθουςαιτιολογική φράσημέθοδος απόκρισης
100Να συνεχίσειΟλα
200ΕπιτυχίαΟλα
201ΔημιουργήθηκεΡΕΚΟΡ
250Χαμηλό αποθηκευτικό χώροΡΕΚΟΡ
300Πολλαπλές επιλογέςΟλα
301μετακινήθηκε για πάνταΟλα
302μετακινήθηκε προσωρινάΟλα
303Βλέπε ΆλλαΟλα
305Χρήση διακομιστή μεσολάβησηςΟλα
400Κακό αίτημαΟλα
401ΑνεξουσιοδότητοςΟλα
402Απαιτείται πληρωμήΟλα
403ΑπαγορευμένοςΟλα
404Δεν βρέθηκεΟλα
405μη επιτρεπτή μέθοδοςΟλα
406Μη αποδεκτόΟλα
407Απαιτείται έλεγχος ταυτότητας διακομιστή μεσολάβησηςΟλα
408Αίτημα χρονικού ορίουΟλα
410ΧαμένοςΟλα
411Απαιτούμενο μήκοςΟλα
412Η προϋπόθεση απέτυχε ΠΕΡΙΓΡΑΦΗΡΥΘΜΙΣΗ
413Αίτημα οντότητας πολύ μεγάλοΟλα
414Αίτημα-URI Πολύ μεγάλοΟλα
415Μη υποστηριζόμενος τύπος μέσουΟλα
451Μη έγκυρη παράμετροςΡΥΘΜΙΣΗ
452Παράνομο αναγνωριστικό συνδιάσκεψηςΡΥΘΜΙΣΗ
453Δεν υπάρχει αρκετό εύρος ζώνηςΡΥΘΜΙΣΗ
454Η συνεδρία δεν βρέθηκεΟλα
455Η μέθοδος δεν ισχύει σε αυτήν την κατάστασηΟλα
456Το πεδίο κεφαλίδας δεν είναι έγκυροΟλα
457Μη έγκυρο εύροςΠΑΙΖΩ
458Η παράμετρος είναι μόνο για ανάγνωσηSET_PARAMETER
459Δεν επιτρέπεται η συνολική λειτουργίαΟλα
460Επιτρέπεται μόνο η συνολική λειτουργίαΟλα
461Μη υποστηριζόμενη μεταφοράΟλα
462Ο προορισμός δεν είναι προσβάσιμοςΟλα
500Εσωτερικό Σφάλμα ΔιακομιστήΟλα
501Δεν εφαρμόζεταιΟλα
502κακή πύληΟλα
503Μη διαθέσιμη υπηρεσίαΟλα
504Πύλη Ώρα αναχώρησηςΟλα
505Η έκδοση RTSP δεν υποστηρίζεταιΟλα
551Η επιλογή δεν υποστηρίζεταιΟλα

Εισαγάγετε την περιγραφή της εικόνας εδώ
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

αναφέρομαι σε:
Πρωτόκολλο ροής σε πραγματικό χρόνο—RTSP [λεπτομερής εξήγηση]
Κύρια αιτήματα και απαντήσεις RTSP από την αρχή 1
Λεπτομερής επεξήγηση του πρωτοκόλλου ροής μέσων RTSP