如何使用Flex将视频流发送到Red5服务器?

时间:2010-07-02 10:17:09

标签: flex flash actionscript-3 red5

我正在尝试使用Flex将视频流发送到Red5服务器。

我的Red5设置似乎适用于远程方法调用和共享对象,但我还没有成功地使视频正常工作。

这是连接到Red5的AS3代码:

# connect to RTMP server
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
netConnection.connect("rtmp://localhost/context_name");
# omitted code for waiting for connection success, and setting up shared
# objects (which works fine - the Red5 setup is hence OK)

当收到NetConnection.Connect.Success时,运行以下代码以开始发送流:

# when NetConnection.Connect.Success then the following code is run:
var netStream:NetStream = new NetStream(netConnection);
netStream.publish("name_of_stream", "live");
netStream.attachCamera(Camera.getCamera());

然而,这不起作用,所以我做错了。

这是绑定到我正在连接的Red5上下文的Java应用程序:

package com.company;

public class NameOfApplication extends ApplicationAdapter {
    // Empty class.
}

我正在运行Red5 0.9.1,我所做的唯一配置是通过编辑WEB-INF/red5-web.xml并添加:

来设置我的应用程序
<bean id="context_name.context" class="org.red5.server.Context" autowire="byType" />
<bean id="context_name.scope" class="org.red5.server.WebScope" init-method="register">
     <property name="server" ref="red5.server" />
     <property name="parent" ref="global.scope" />
     <property name="context" ref="context_name.context" />
     <property name="handler" ref="context_name.handler" />
     <property name="contextPath" value="/context_name" />
     <property name="virtualHosts" value="*,localhost, localhost:5080, 127.0.0.1:5080" />                  
 </bean>
 <bean id="context_name.handler" class="com.company.NameOfApplication" />

这些是我在连接并尝试发送视频时在Red5控制台中收到的日志消息:

org.red5.server.net.rtmp.RTMPHandler - Connecting to: [WebScope@68e0ada6 Depth = 1, Path = '/default', Name = 'application_name']
org.red5.server.net.rtmp.RTMPHandler - Remembering client buffer on stream: 0
org.red5.server.stream.ClientBroadcastStream - Provider connect
org.red5.server.stream.ClientBroadcastStream - Stream start
org.red5.server.stream.ClientBroadcastStream - Provider connect
org.red5.server.stream.ClientBroadcastStream - Close
org.red5.server.stream.ClientBroadcastStream - Provider disconnect
org.red5.server.stream.ClientBroadcastStream - Provider disconnect

我做错了什么?如上所述,请注意Red5设置可以完美地用于远程方法调用和共享对象,但不适用于奇怪的视频。

2 个答案:

答案 0 :(得分:1)

从你的配置/课程中没有任何东西跳出来,一切看起来都不错。您是否尝试过发布其中一个演示以排除您的客户? oflaDemo还是直播?

答案 1 :(得分:0)

只是一个想法,但你知道你的相机使用的编解码器吗?

我设法获得了一个简单的Flex应用程序&amp;运行到一个Red5示例服务器应用程序,从我所能说的是你做的几乎和你做的一样。

如果您将“live”更改为“record”,是否会将任何内容保存在服务器应用的streams目录中?