Set RTSP/UDP-Puffer-Größe in FFmpeg/LibAV

Hinweis: ich bin mir bewusst, ffmpeg und libav sind verschiedene Bibliotheken. Dies ist ein gemeinsames problem der beiden.

Haftungsausschluss: Duplizieren von ALSO Frage gekennzeichnet, beantwortet aber eigentlich nicht eine richtige Lösung.


Unzureichende UDP-Puffer-Größe bewirkt, dass gebrochen streams für mehrere hochauflösende video-streams. In LibAV/FFMPEG ist es möglich, die udp-buffer Größe für udp-urls (udp://...) durch Anhängen einige Optionen (buffer_size).

Jedoch für die RTSP-urls dies ist nicht unterstützt.

Diese sind die einzigen Lösungen die ich gefunden habe:

  • Wiederaufbau ffmpeg/libav die änderung der UDP_MAX_PKT_SIZE in der udp.c Quelldatei.
  • Mit einem fiesen hack zu finden und ändern Sie den gewünschten Wert ein, durch Gießen einige private Strukturen.
  • Mit einem anderen Decodierung Bibliothek (vorgeschlagene Lösung zu den oben genannten verwandten SO Frage).

Keiner von Ihnen tatsächlich eine Lösung. Von was ich gefunden habe sollte es möglich sein, die API zu verwenden ist AVOptions zu finden und setzen Sie diesen Wert. Oder andere, die AVDictionary.

Es ist sehr schwer zu finden, wie Sie diese in der gesamten Dokumentation von entweder libav oder ffmpeg.

Update:

Den folgenden patches vorlegen zu Libav die Bewältigung dieses Themas, Dank Libav-Entwickler @lu_zero :

Anbieten soll, ein Hinweis darauf, wie, diese zu implementieren, dennoch sind diese noch nicht verfügbar sind über die offizielle stabile API.

Sie könnte erhöhen Sie die Standard-OS-UDP-Puffer-Grenzen, denke ich. Verbesserung der UDP-Peformance
Nicht verfügbar für Windows, es kann funktionieren, für andere Plattformen.. aber noch sollte dies durch die API.
Für Windows finden Sie unter diesem question
Danke. Aber ich will nicht zu lösen, die es nur für windows. Außerdem weiß ich, dass es möglich sein sollte, zu tun so in meiner Anwendung nur. Es ist nur so, dass die API ist nicht klar.

InformationsquelleAutor Sergio Basurco | 2015-03-16

Schreibe einen Kommentar