Μετάβαση στο περιεχόμενο
Callaba

Δημοσιεύστε μια ροή RTMP με το FFmpeg και επαληθεύστε την

Σε αυτή τη σελίδα

Το FFmpeg μπορεί να δημοσιεύσει μια δοκιμαστική πηγή RTMP σε ένα εκχωρημένο τελικό σημείο, αλλά η επιτυχής ολοκλήρωση της εντολής δεν αποτελεί το αποτέλεσμα αποδοχής. Χρησιμοποιήστε γνωστή είσοδο, προστατεύστε το URL και το κλειδί και κατόπιν επαληθεύστε τη δραστηριότητα του εκδότη, το αποκωδικοποιημένο μέσο και την επιλεγμένη διαδρομή δέκτη.

Επιλέξτε πρώτα τον τρόπο πρόσβασης

Στην ελεγχόμενη λειτουργία, ο Εκδότης και ο Δέκτης είναι ξεχωριστοί ρόλοι στο ίδιο διαμορφωμένο όνομα ροής και μπορούν να χρησιμοποιούν το ίδιο URL RTMP. Στη λειτουργία Guest, ανοίξτε σκόπιμα το τελικό σημείο και χρησιμοποιήστε ένα μη κενό όνομα ροής· ο δέκτης πρέπει να χρησιμοποιεί το ίδιο όνομα.

Πριν δημοσιεύσετε

Λάβετε το URL δημοσίευσης RTMP και το κλειδί ροής από την ανάπτυξη. Μην επικολλάτε πραγματικό κλειδί στο ιστορικό του κελύφους, σε ticket ή σε άρθρο. Επιβεβαιώστε ότι η έκδοση του FFmpeg που χρησιμοποιείτε εκθέτει υποστήριξη RTMP: η τεκμηρίωση πρωτοκόλλων του FFmpeg περιγράφει επιλογές πρωτοκόλλων· η τεκμηρίωση μορφών καλύπτει τη συμπεριφορά του muxer.

Command
ffmpeg -protocols | grep rtmp

Αναμενόμενο αποτέλεσμα: η εντολή εμφανίζει μια παραλλαγή πρωτοκόλλου RTMP που υποστηρίζεται από αυτή την έκδοση. Αν δεν την εμφανίζει, προσαρμόστε τη δοκιμή στην εγκατεστημένη έκδοση αντί να υποθέσετε ότι το πακέτο περιλαμβάνει το πρωτόκολλο.

Δημοσιεύστε ένα αρχείο με ρυθμό πραγματικού χρόνου

Command
ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f flv "rtmp://INGEST_HOST:PORT/APP/STREAM_NAME_OR_KEY"

Αναμενόμενο αποτέλεσμα: το FFmpeg συνεχίζει να αναφέρει πρόοδο καρέ αντί να στέλνει το αρχείο όσο γρήγορα επιτρέπει ο αποθηκευτικός χώρος. Το -re διαβάζει ένα αρχείο στον εγγενή ρυθμό του για αυτή την περιορισμένη δοκιμή. Αντικαταστήστε τα σύμβολα κράτησης θέσης με τιμές που εκδόθηκαν για τον ακροατή· μην αλλάζετε τη διαδρομή της εφαρμογής ή το κλειδί.

Κωδικοποιήστε ξανά όταν το απαιτεί το συμβόλαιο εξόδου

Command
ffmpeg -re -stream_loop -1 -i input.mov -c:v libx264 -pix_fmt yuv420p -g 60 -c:a aac -ar 48000 -b:a 128k -f flv "rtmp://INGEST_HOST:PORT/APP/STREAM_NAME_OR_KEY"

Αναμενόμενο αποτέλεσμα: ο δέκτης βλέπει έναν συνεχή εκδότη με αποκωδικοποιήσιμο βίντεο και ήχο. Αυτό είναι παράδειγμα και όχι καθολική συνταγή κωδικοποίησης: επιλέξτε ρυθμό καρέ, διάστημα GOP/keyframe, ρυθμό bit, ανάλυση και παραμέτρους ήχου για τον πραγματικό δέκτη και τη ροή εργασίας διανομής.

Επαληθεύστε στον διακομιστή και έπειτα στο επιδιωκόμενο αποτέλεσμα

  1. Επιβεβαιώστε ότι ο RTMP Server αναφέρει τον αναμενόμενο εκδότη και τον εισερχόμενο ρυθμό bit.
  2. Ελέγξτε εικόνα και ήχο από τον διαμορφωμένο δέκτη ή το σημείο παρακολούθησης.
  3. Δοκιμάστε τη μία επιδιωκόμενη κατάντη έξοδο: εγγραφή, δρομολόγηση ή πρόγραμμα αναπαραγωγής προγράμματος περιήγησης.
  4. Διακόψτε τη διεργασία μία φορά και επαληθεύστε την κατάσταση του δέκτη και το σχέδιο αποκατάστασης.

Για συσκευή ζωντανής λήψης, αντικαταστήστε την είσοδο αρχείου με την τεκμηριωμένη σύνταξη εισόδου FFmpeg και διατηρήστε τους ίδιους ελέγχους αποδοχής στην πλευρά του διακομιστή. Αποφύγετε βρόχους αυτόματης επανασύνδεσης έως ότου γνωρίζετε πώς ο ακροατής χειρίζεται διπλές συνεδρίες· ένας βρόχος μπορεί να αποκρύψει το πρώτο χρήσιμο σφάλμα.

Επιλέξτε το πρωτόκολλο του παρεχόμενου τελικού σημείου

Χρησιμοποιήστε το πρωτόκολλο τελικού σημείου που παρέχεται για αυτή την εργασία. Ο Callaba RTMP Server παρέχει τον ακροατή, τους κανόνες πρόσβασης και την προβολή δραστηριότητας· η προβολή σε πρόγραμμα περιήγησης χρησιμοποιεί ξεχωριστά διαμορφωμένη έξοδο.

Σχετική διαμόρφωση

Διαμορφώστε τον ακροατή στο Callaba RTMP Server, χρησιμοποιήστε τον οδηγό χειριστή για ελέγχους πρόσβασης και κατάστασης ή ακολουθήστε το RTMP προς HLS όταν το επιδιωκόμενο αποτέλεσμα είναι διανομή στο πρόγραμμα περιήγησης.

Τοπικός διαγνωστικός αποστολέας και δέκτης

Command
ffmpeg -re -f lavfi -i testsrc2=size=1280x720:rate=30 -f lavfi -i sine=frequency=1000:sample_rate=48000 -c:v libx264 -pix_fmt yuv420p -g 60 -c:a aac -b:a 128k -f flv "rtmp://INGEST_HOST:PORT/APP/STREAM_NAME_OR_KEY"

Αναμενόμενο αποτέλεσμα: το FFmpeg αναφέρει καρέ βίντεο περίπου στα 30 fps και μία ροή ήχου· το Callaba αναφέρει ρυθμό bit εισόδου. Η τιμή GOP 60 δίνει ένα keyframe κάθε δύο δευτερόλεπτα στα 30 fps, ένα πρακτικό σημείο εκκίνησης για ροή εργασίας τμημάτων δύο δευτερολέπτων — όχι υποχρεωτική ρύθμιση διακομιστή.

Κάντε αντιγραφή μόνο αφού ελέγξετε την είσοδο: ffprobe -v error -show_entries stream=codec_name,codec_type -of default=nw=1 input.mp4. Χρησιμοποιήστε αυτή την έξοδο για να συγκρίνετε τον codec εισόδου και τις λεπτομέρειες ήχου με το τεκμηριωμένο συμβόλαιο του δέκτη. Η αντιγραφή είναι λογική μόνο αφού ταιριάζουν. Για διαγνωστικό δέκτη, το ffplay -fflags nobuffer "rtmp://RECEIVER_HOST:PORT/APP/STREAM_NAME_OR_KEY" πρέπει να ανοίξει εικόνα και τόνο μετά τη σύνδεση του δέκτη. Συμβουλευτείτε τις πηγές φίλτρων του FFmpeg για τα testsrc2 και sine.

Επόμενα βήματα

Διαμορφώστε τον ακροατή στο Callaba RTMP Server, έπειτα επαληθεύστε την πρόσβαση και τη δραστηριότητα στον οδηγό χειριστή.