Hi Folks.
New here, so apologies if this is not how its done, but I have a tiny patch to
fix a fundamental flaw in FFMPEG on macOS.
The Problem:
-------------------
On macOS Try to run 2 copies of FFMPEG each consuming an RTP Multicast which
are on *different* multicast addresses - but the *same* port.
The second copy will fail with a bind error and possibly a crash.
The Solution:
------------------
Very simple - on macOS you need to use SO_REUSEPORT as well as SO_REUSEADDR to
avoid this sort of issue.
Thanks
Mark Gilbert
CTO: Gallery SIENNA.
PATCH FOLLOWS:
--------------------------
--- /Users/mark/Downloads/udpORIG.c 2018-08-16 15:39:21.000000000 +0100
+++ /Users/mark/Downloads/udp.c 2018-08-16 15:40:55.000000000 +0100
@@ -828,7 +828,11 @@
s->reuse_socket = 1;
if (setsockopt (udp_fd, SOL_SOCKET, SO_REUSEADDR, &(s->reuse_socket),
sizeof(s->reuse_socket)) != 0)
goto fail;
- }
+ #ifdef __APPLE__ // MacOS/X requires an additional call
+ if (setsockopt (udp_fd, SOL_SOCKET, SO_REUSEPORT, &(s->reuse_socket),
sizeof(s->reuse_socket)) != 0)
+ goto fail;
+ #endif
+ }
if (s->is_broadcast) {
#ifdef SO_BROADCAST
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel