Red5实现直播

http://pxchen.iteye.com/blog/714591

发布端(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、付费专栏及课程。

余额充值