[FFmpeg-devel] [PATCH] avformat: Add AMQP version 0-9-1 protocol support

Andriy Gelman andriy.gelman at gmail.com
Sun Feb 23 17:58:06 EET 2020


On Sun, 09. Feb 17:30, Andriy Gelman wrote:
> On Sun, 09. Feb 14:32, Timo Rothenpieler wrote:
> > On 01.02.2020 20:02, Andriy Gelman wrote:
> > > From: Andriy Gelman <andriy.gelman at gmail.com>
> > > 
> > > Supports connecting to a RabbitMQ broker via AMQP version 0-9-1. The
> > > broker can redistribute content to other clients based on "exchange" and
> > > "routing_key" fields.
> > > ---
> > > 
> > > Compilation notes:
> > > - Requires librabbitmq-dev package (on ubuntu).
> > > - The pkg-config libprabbitmq.pc has a corrupt entry.
> > >    The line "Libs.private: rt; -lpthread" should be changed to
> > >    "Libs.private: -lrt -lpthread". I have made a bug report.
> > > - Compile FFmpeg with --enable-librabbitmq
> > > 
> > > To run an example:
> > > #
> > > # Start the RabbitMQ broker (I use docker)
> > > # The following starts the broker on localhost:5672. A webui is available on
> > > # localhost:15672 (User/password is "guest" by default)
> > > #
> > > $ docker run -it --rm --name rabbitmq -p 127.0.0.1:5672:5672 -p 127.0.0.1:15672:15672 rabbitmq:3-management
> > > 
> > > #
> > > # Stream to the RabbitMQ broker:
> > > #
> > > $ ./ffmpeg -re -f lavfi -i yuvtestsrc -codec:v libx264 -f mpegts -routing_key "amqp" -exchange "amq.direct" amqp://localhost:5672
> > > 
> > > #
> > > # Connect any number of clients to fetch data from the broker:
> > > # The clients are filtered by the routing_key and exchange.
> > > #
> > > $ ./ffplay -routing_key "amqp" -exchange "amq.direct" amqp://localhost:5672
> > > 
> 
> > 
> > Isn't RabbitMQ, and any message broker like it, more designed to pipe short
> > messages around?
> > I'd imagine it's really not designed to shovel huge amounts of data, like a
> > full on video stream, around.
> 
> I didn't have any problems streaming to/from the broker, but I have to evaluate
> at which point it breaks. I'll share these numbers with ffmpeg-devel.
> 

I did a test on my intel i7-6600U CPU @ 2.6GHz with 16GB ram   

- One RabbitMQ broker started with: 
$ docker run -it --rm --name rabbitmq -p 127.0.0.1:5672:5672 -p 127.0.0.1:15672:15672 rabbitmq:3-management

- 1 client streaming to the broker (1280x720, 30fps, bitrate: 1236kb/s) 
$ ./ffmpeg -re input.mp4 -codec:v copy -an -f mpegts amqp://localhost

- 300 clients connecting to the broker and writing the output to null:
$ ./ffmpeg -i amqp://localhost -codec:v copy -f null -

- 2 clients playing the stream with ffplay
$ ./ffplay -i amqp://localhost

All the connections were visible on the broker monitor, and streams were running
at speed ~1.0x
At this point all my cores were close to 100%.

-- 
Andriy


More information about the ffmpeg-devel mailing list