FFmpeg poate publica o sursă de test RTMP la un endpoint atribuit, însă o comandă finalizată nu reprezintă rezultatul de acceptare. Folosiți o intrare cunoscută, protejați URL-ul și cheia, apoi verificați activitatea publicatorului, media decodificată și traseul de receptor selectat.
Alegeți mai întâi modul de acces
În modul controlat, Publicatorul și Receptorul sunt roluri separate pentru același nume de flux configurat și pot folosi același URL RTMP. În modul Invitat, deschideți intenționat endpointul și folosiți un nume de flux nevid; receptorul trebuie să folosească același nume.
Înainte de publicare
Obțineți URL-ul de publicare RTMP și cheia de flux din implementare. Nu lipiți o cheie reală în istoricul shellului, într-un tichet sau într-un articol. Confirmați că distribuția FFmpeg oferă suport RTMP: documentația de protocoale FFmpeg descrie opțiunile de protocol; documentația despre formate acoperă comportamentul multiplexorului.
ffmpeg -protocols | grep rtmp
Rezultat așteptat: comanda afișează o variantă de protocol RTMP acceptată de acea distribuție. Dacă nu o afișează, adaptați testul la distribuția instalată în loc să presupuneți că un pachet include protocolul.
Publicați un fișier în ritm real
ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f flv "rtmp://INGEST_HOST:PORT/APP/STREAM_NAME_OR_KEY"
Rezultat așteptat: FFmpeg continuă să raporteze progresul cadrelor în loc să trimită fișierul cu viteza maximă permisă de stocare. -re citește un fișier la rata sa nativă pentru acest test limitat. Înlocuiți substituenții cu valorile emise pentru listener; nu modificați calea aplicației sau cheia.
Transcodificați când contractul de ieșire o cere
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"
Rezultat așteptat: receptorul vede un publicator continuu, cu video și audio decodificabile. Acesta este un exemplu, nu o prescripție universală de codare: alegeți rata de cadre, intervalul GOP/cadru-cheie, rata de biți, rezoluția și parametrii audio pentru receptorul și fluxul de livrare reale.
Verificați la server, apoi rezultatul dorit
- Confirmați că RTMP Server raportează publicatorul așteptat și rata de biți de intrare.
- Verificați imaginea și sunetul de la receptorul configurat sau din punctul de monitorizare.
- Testați singura ieșire downstream dorită: înregistrarea, ruta sau playerul din browser.
- Întrerupeți procesul o dată și verificați starea receptorului și planul de recuperare.
Pentru un dispozitiv de captură live, înlocuiți intrarea de fișier cu sintaxa de intrare FFmpeg documentată pentru acesta și păstrați aceleași verificări de acceptare pe server. Evitați buclele automate de reconectare până când știți cum tratează listenerul sesiunile duplicate; o buclă poate ascunde prima eroare utilă.
Alegeți protocolul endpointului furnizat
Folosiți protocolul endpointului furnizat pentru această activitate. Callaba RTMP Server oferă listenerul, regulile de acces și vizualizarea activității; vizualizarea în browser folosește o ieșire configurată separat.
Configurație asociată
Configurați listenerul în Callaba RTMP Server, folosiți ghidul operatorului pentru verificări de acces și stare sau urmați RTMP către HLS când rezultatul dorit este livrarea în browser.
Expeditor și receptor local de diagnostic
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"
Rezultat așteptat: FFmpeg raportează cadre video la aproximativ 30 fps și un flux audio; Callaba raportează rata de biți de intrare. Valoarea GOP de 60 oferă un cadru-cheie la fiecare două secunde, la 30 fps, un punct de pornire practic pentru un flux de lucru cu segmente de două secunde, nu o setare obligatorie a serverului.
Copiați doar după verificarea intrării: ffprobe -v error -show_entries stream=codec_name,codec_type -of default=nw=1 input.mp4. Folosiți această ieșire pentru a compara codecul de intrare și detaliile audio cu contractul documentat al receptorului. Copierea este rezonabilă numai după ce acestea coincid. Pentru un receptor de diagnostic, ffplay -fflags nobuffer "rtmp://RECEIVER_HOST:PORT/APP/STREAM_NAME_OR_KEY" ar trebui să deschidă imaginea și tonul după conectarea receptorului. Consultați sursele de filtre FFmpeg pentru testsrc2 și sine.
Pașii următori
Configurați listenerul în Callaba RTMP Server, apoi verificați accesul și activitatea în ghidul operatorului.