Red5实现直播

发布端(Publish):
var nc:NetConnection = new NetConnection();

nc.connect("rtmp://125.67.234.97/Red5Stream");
nc.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);

function connectHandler(par:NetStatusEvent):void {
trace(par.info.code);
var camera:Camera = Camera.getCamera();
camera.setQuality(163854,100);

var stream:NetStream = new NetStream(nc);
stream.attachCamera(camera);
stream.publish("red5");
}

接收端
package {
import flash.display.*;
import flash.utils.*;
import flash.events.*;
import flash.net.*;
import flash.media.Video;
import fl.data.DataProvider;
import flash.media.Camera;

public class NetStreamTestDocument extends Sprite {
var nc:NetConnection;
public function NetStreamTestDocument() {
nc= new NetConnection();
nc.connect("rtmp://125.67.234.97/Red5Stream");
nc.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);


}
public function connectHandler(par:NetStatusEvent):void {
var ns:NetStream = new NetStream(nc);
var video:Video=new Video(320,240) ;
video.attachNetStream(ns);
ns.play("red5");
addChild(video);
}
}
}

服务端:
package com.conjs;

import org.red5.server.adapter.MultiThreadedApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.Red5;
import org.red5.server.api.stream.IBroadcastStream;
import org.red5.server.api.stream.IStreamCapableConnection;
import org.red5.server.api.stream.support.SimpleConnectionBWConfig;

public class OtherApplication extends MultiThreadedApplicationAdapter {
@Override
public void streamPublishStart(IBroadcastStream stream) {
IConnection conn=Red5.getConnectionLocal();
measureBandwidth(conn);
if (conn instanceof IStreamCapableConnection) {
IStreamCapableConnection streamConn = (IStreamCapableConnection) conn;
SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig();
bwConfig.getChannelBandwidth()[3] = 1048576L;

bwConfig.getChannelInitialBurst()[3] = 131072L;

streamConn.setBandwidthConfigure(bwConfig);

super.streamPublishStart(stream);
}
}

@Override
public void streamBroadcastClose(IBroadcastStream arg0) {
super.streamBroadcastClose(arg0);
}

}

以下是官方在 H.264 和 1080P 方面支持的Demo ,我没有测试过,代码如下:
package org.red5.demos.oflaDemo;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IBandwidthConfigure;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.stream.IServerStream;
import org.red5.server.api.stream.IStreamCapableConnection;
import org.red5.server.api.stream.support.SimpleConnectionBWConfig;

public class Application extends ApplicationAdapter {

private IScope appScope;
private IServerStream serverStream;

public boolean appStart(IScope app) {
appScope = app;
return true;
}

public boolean appConnect(IConnection conn, Object[] params) {
measureBandwidth(conn);
if (conn instanceof IStreamCapableConnection) {
SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig();
bwConfig.getChannelBandwidth()[IBandwidthConfigure.OVERALL_CHANNEL] =
1024 * 1024;
bwConfig.getChannelInitialBurst()[IBandwidthConfigure.OVERALL_CHANNEL] =
128 * 1024;
bwConfig.setUpstreamBandwidth(1024 * 1024);
}
return super.appConnect(conn, params);
}

public void appDisconnect(IConnection conn) {
if (appScope == conn.getScope() && serverStream != null) {
serverStream.close();
}
super.appDisconnect(conn);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值