Skip to content

Cum să trimiți streamuri RTMP cu elementul rtmpsink în GStreamer

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să trimiți streamuri RTMP cu elementul rtmpsink în GStreamer. We cover key concepts, practical examples, and best practices.

În acest ghid vei învăța cum să trimiți streamuri RTMP folosind elementul rtmpsink în GStreamer. RTMP este protocolul standard pentru streaming live către platforme precum Twitch, YouTube sau Facebook, iar rtmpsink simplifică transmiterea.

The Wrong Way

Trimiterea unui stream neprocesat direct la rtmpsink:

gst-launch-1.0 videotestsrc ! rtmpsink location="rtmp://live.twitch.tv/app/streamkey"

Videotestsrc produce date raw pe care rtmpsink nu le poate interpreta.

The Right Way

Pipeline complet pentru streaming RTMP:

gst-launch-1.0 videotestsrc ! videoconvert ! x264enc tune=zerolatency ! flvmux ! rtmpsink location="rtmp://live.twitch.tv/app/streamkey live=1"

Output:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
Stream trimis către serverul RTMP.

Cu audio:

gst-launch-1.0 videotestsrc ! videoconvert ! x264enc ! queue ! flvmux name=mux ! rtmpsink location="rtmp://example.com/live/key" audiotestsrc ! audioconvert ! voaacenc ! queue ! mux.

Prevenție

  • Codifică video în H264 cu x264enc înainte de a trimite la rtmpsink
  • Folosește flvmux pentru a multiplexa streamul în format FLV (cerut de RTMP)
  • Adaugă tune=zerolatency pe x264enc pentru streaming live
  • Folosește queue între elemente pentru a preveni blocarea

Greșeli Comune

  1. Fără codare video — rtmpsink așteaptă date comprimate, nu raw
  2. Fără flvmux — RTMP transmite date în format FLV, multiplexarea este obligatorie
  3. Stream key incorect — asigură-te că URL-ul RTMP conține stream key-ul corect
  4. Latență mare — fără tune=zerolatency, latența poate fi prea mare pentru live
  5. Fără queue pentru sincronizare — audio și video se dezincronizează fără queue

FAQ

### Ce diferență este între rtmpsink și rtmpsrc?

rtmpsink trimite streamuri RTMP (destinație), iar rtmpsrc primește streamuri RTMP (sorginte).

Pot trimite RTMPS (securizat)?

Da, folosește location="rtmps://..." pentru conexiuni securizate TLS.

De ce am nevoie de flvmux pentru RTMP?

Protocolul RTMP utilizează formatul FLV pentru transport. Fără flvmux, datele nu sunt în formatul așteptat de server.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează perfect cu GStreamer pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro