Wowza Community

Publishing video to a load balancer with ffmpeg

Hello,

I’ve configured 3 Wowza Streaming Engine servers following manuals for Load Balancer Plugin 4.0, one balancer and two edge servers. All servers are CentOS 6.5 based and running WowzaStreamingEngine-4.2.0. All of them have public IP addresses and networking is correct. I’m deploying a custom live streaming application involving load balancing for video pushing and high availability. The wowza platform is going to receive several streamings from autonomous video devices and the load balancer should direct these incoming streams to the edge servers. The mechanism for accesing the correct edge server after publishing the video to stream it back to the clients is not a problem thanks to a custom plugin which notifies another application server, so I think this is a bit of inverted use of the Wowza application.

I’ve configured the Live application to allow publishing with no restrictions in all 3 servers, and the edge with 2 connections limit for these tests. The policy is based in connection numbers and I can publish video directly to the edge servers, check the connections in the [load-balancer]:1935/loadbalancerInfo page and get the edge server with less connections when accessing [load-balancer]:1935/redirect/?request=server

I’m trying to publish a video with ffmpeg to the load balancer, which should redirect this incoming stream to one of the edges. The command to publish the video is

 ffmpeg -re -i "C:\sample.mp4" -vcodec libx264 -vprofile default -vprofile baseline -r 24 -g 48 -vb 150000 -strict experimental -acodec aac -ab 96000 -ar 48000 -ac 2 -f rtsp -muxdelay 0.1 rtmp://[load-balancer]:1935/live/myStream 

Although this balancer is configured to only act as load balancer server,

      
      <Property>
        <Name>loadbalanceType</Name>
        <Value>Server</Value>
        <Type>String</Type>
      </Property>

the video publishing is not redirected to one of the edge servers, the load balancer receives it as an incoming stream and I can stream it in

http://[load-balancer]:1935/live/myStream/playlist.m3u8

with VLC

Also, I’ve created a “redirect” application as stated in the manual and added the module com.wowza.wms.plugin.loadbalancer.redirect.ClientConnections after the last one; but if I try to use the /redirect application publishing with

ffmpeg -re -i "C:\sample.mp4" -vcodec libx264 -vprofile default -vprofile baseline -r 24 -g 48 -vb 150000 -strict experimental -acodec aac -ab 96000 -ar 48000 -ac 2 -f rtsp -muxdelay 0.1 rtmp://[load-balancer]:1935/redirect/myStream

neither redirection is performed and the video is published in the “redirect” application of the load balancer.

I can see it in the Incoming Streams section of the Live/redirect Application in the manager, and only the load balancer traffic increases.

I don’t know if load balancer is intended for redirection of incoming streamings, and I know a better approximation would be to get the edge server with less connections first with a simple http request to the load balancer and then publish the video there, but this is currently not possible and I would like to get the rtmp redirection when publishing. The ffmpeg compilation I’m using includes --enable-librtmp but I’m not getting any information involving redirections when publishing the stream.

Thanks in advance for any help you can provide, and sorry for any mistakes, English is not my first language. I can provide logs, configurations and debug information if needed.

Hi telcia,

Unfortunately, the Wowza Load Balancer AddOn is not designed to handle incoming publishers, but for playback connections only. You will need to implement a different load balancer workflow for your incoming streams. One good workflow is to implement a round-robin DNS server.

Michelle

Hi Michelle,

Thanks for your answer. I’ll talk to the devel team to see if we can use the http request workaround for this.

Greetings.

Im’ reopening this thread to ask if it would be possible to associate the 2 edge server to 2 different Load Balancer servers, in order to avoid the single point of failure in the Load Balancer. Is it possible to add two loadbalanceServerIP in the configuration of the Load-Balancing (backend) servers?