Frequently Asked Questions

How do I time out a broadcast?

QUESTION:

Is there a way to stop a particular broadcast after a certain timeframe from the server side?

ANSWER:

1.  Please compile and integrate a BroadCaster.java file (content at end of FAQ) into your project to stop a broadcast from the server. If you edit the

red5/webapps/live/WEB-INF/red5-web.xml

web handler to be that class instead of the Red5ProLive class, then you can recycle the live app files and put the BroadcastCloser class in the proper place:

red5/webapps/live/WEB-INF/classes/com/infrared5/red5pro/live/BroadcastCloser.class

after compiling.  Here is our git project for Red5ProLive.

BroadcastCloser.java: 

package com.infrared5.red5pro.live;


import org.red5.server.adapter.MultiThreadedApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.Red5;
import org.red5.server.api.scheduling.IScheduledJob;
import org.red5.server.api.scheduling.ISchedulingService;
import org.red5.server.api.scope.IScope;
import org.red5.server.api.stream.IStreamPublishSecurity;

/**
* This app adapter will close the publisher after 60 seconds.
*
*/

public class BroadcastCloser extends MultiThreadedApplicationAdapter implements IStreamPublishSecurity {
public boolean appStart(IScope scope){
super.appStart(scope);
this.registerStreamPublishSecurity(this);
return true;
}

/**
* called when publish begins
*/

@Override
public boolean isPublishAllowed(IScope arg0, String arg1, String arg2) {
//get the publisher connection
final IConnection connection = Red5.getConnectionLocal();
//how many miliseconds to allow.
long miliseconds = 60000;
//schedule the thread and thread task
this.schedulingService.addScheduledOnceJob(milliseconds, new IScheduledJob(){
//this is the future task
@Override
public void execute(ISchedulingService arg0)throws CloneNotSupportedException {
//close it. Server will clean up live stream.
connection.close();
}});

//return yes, publish is allowed.
return true;
}

}