博客园  :: 联系 :: 管理

【集】使用Red5和FFMpeg搭建在线Flash流媒体分享平台

Posted on 2010-08-19 14:54  独孤雁  阅读(1729)  评论(0编辑  收藏  举报

使用Red5和FFMpeg搭建在线Flash流媒体分享平台

最近视频的东西比较火,前些天我也稍微了解了一下使用开源软件建在线Flash流媒体播放平台的解决方案,还是有一些收获。

Red5是一款基于java的开源的Flash流媒体Server软件,可以作为取代Macromedia提供的商业版本FMS。Red5使用RSTP作为流媒体传输协议,内置了一些示例,这些示例实现了在线录制, flash流媒体播放,在线聊天,视频会议等一些基本的功能。由于系统本身是开源的,在碰到问题的时候也比较容易解决,大不了直接改代码,在成本方面也可以省下一笔不小的开销,为未来的功能扩展也提供了充分的空间。

如果仅仅是实现在线录制,在线播放,那么Red5也就差不多够了,但可能我们有时候还需要用户上传自己拍摄的视频文件,而要把这些视频文件转成可播放的flv文件就需要视频编码软件了。FFMpeg提供了录制,播放,视频流处理的完整解决方案。它自身也带了一个基于HTTP的流媒体广播程序以及其它几个实用的程序,但我们的重点还是它的视频转换程序,似乎GoogleVideo也是用的它的程序作为视频转换工具。

我用FFMpeg转了几个视频,效果还可以,在声音上碰到了一些问题,在不添加参数的情况下,有一部分视频的声音会有问题,有的视频无论怎么添加参数,都出不来声音,报错提示的是不支持所带的声音采样格式,只支持几种固定的格式,我看了一下代码,确实是这样子,但理论上应该是能够解决的。 FFMpeg自带的libavcodec是一套很牛的编码库,为了保证质量和性能,里面的很多codec都是从头开发的。

这两个加起来,实现一些简单的在线视频功能就差不多了。


RED5—从下载到HELLO WORLD!

D5Power Studio原创,转载请注明出处~谢谢!

RED5的中文资料象牛毛一样稀少。。从下载到完全调试成功,大概花费了1天多的时间。在这个把中间出现的问题罗列出来,希望给想研究RED5的朋友一点帮助。


需要用到的软件:
RED5 0.6 RC2 : http://osflash.org/red5
Eclipse 3.2 : http://www.eclipse.org
ant: http://ant.apache.org/
JDK: http://java.sun.com/javase/downloads/index.jsp
如果想直接通过SVN获得最新的RED5,还需要安装Eclipse的SVN插件:http://subclipse.tigris.org/

呵呵,装的东西够多吧?简单说一下各个软件的用途。如果是直接从SVN下载获得RED5,那么这里是不具备WIN下运行的文件的,所以就需要ant server来编译运行。下载安装包的朋友就不需要再用ANT来编译了(不过做开发的话,建议还是拖下来比较好,又不大,10几M而已)。Eclipse 是开发RED5服务器端的必须工具,JDK是RED5运行的必要环境。

这里,我以SVN下载版为例来介绍配置。

首先在Eclipse中用SVN插件(右上角有一个小加号的图标->other->SVN xxx)从RED5官方网站获得最新的代码(我下了至少两个小时,美国到中国好远啊。。。)SVN地址在RED5的官方网站,我下载的时候为http://svn1.cvsdude.com/osflash/red5/java/server/trunk,连接上以后,在最上面的那一级点右键,选择check out,然后选择目标路径什么的就不再多说了。。

下载完成后,需要为Eclipse指定RED5的Build文件,在左边的列表顶端文件上点右键,然后选择External tools(工具栏绿色的PLAY图标,有红色锁的那个。。),打开后选左侧择蚂蚁图标(ANT),右键->Creat,输入文件名 server_all,然后点第一行的浏览按钮,在弹出的窗口中选择build.xml,确定。然后选择target标签,在下面的选择中把all勾选, 并选中该行,然后Apply.再操作一次,新建server_server,同样选择build.xml,然后在target中把all的勾选取消,选择 server,同样选中该行,点Apply.

这个时候运行server_all,我在这里出现了错误(详细见上一篇日志),解决办法为修改build.properti中的JAVA版本号与本机实际JDK版本号一致。另外也有人说报其他错误,要修改BUILD.XML,但我没有遇到这个问题(参见http://hi.baidu.com/flash%5Fzb/blog/item/412384230961d444ac34ded5.html)。

当你看到BUILD SUCCESS的时候,恭喜你,编译成功咯。

OK,接下来可以建立第一个应用程序了,为了省事,可以去RED5的webapps里面,把test直接复制一份,改名为demo,然后把里面除了 WEB-INF以外的其他文件删除,再进WEB-INF中,把src和class两个文件夹清空,在把除了这两个文件夹以外的其他文件夹删除(如果有的话),现在终于清净了,在Eclipse中把工作区设置在RED5的webapps,然后新建一个项目,命名为demo,这个时候你会发现刚才弄好的文件夹demo中的内容已经显示在左边了:)右键选择src,BuildPath->Use as Source Folder,将其指定为代码文件夹,然后在项目名demo上右键选择Properties,选择Java Bulid Path,在选择Source标签,在下面的Browse中选择Class目录,将其指定为目标目录。删除左边自动生成的BIN目录,OK!

为了编译RED5程序,我们要把RED5的包导入到现在的项目中来。在项目名上点右键选择Properties,然后在Java Build Path中选择Libraries,点击Add External JERS将RED5中的red5.jar包含入项目。然后,就可以按照RED5自带的指导文件建立第一个RED5程序啦!


公司今天需要装一台RED5的服务器用来开发程序。发现RED5的0.6已经正式放出,以前我写过一篇关于用SVN进行抽取,然后建立RED5项目的文章。而对于一般的开发者来说,不需要去修改RED5本身的程序,只需要建立自己的应用程序就可以了。现在把建立过程记录下来,希望对各位有所帮助。本文适合第一次接触RED5(WIN平台下),而不知道如何开始建立自己的应用程序的用户。

流程:

1.下载最新版本的RED5http://osflash.org/red5

2.安装RED5,注意在安装RED5前要先安装好JRE,安装RED5的时候会要求指定JRE的目录的。

3.到RED5的安装目录,找到doc/templates目录,该目录中存放了一个标准的RED5应用程序模版myapp,将其复制到RED5安 装目录中的webapps目录下,并改名为你喜欢的文件夹名,比如你要开发一个聊天的程序,那么可以把myapp改为myChat,这个名字就是以后你要 连接的服务名了。

4.在WEB-INF中新建一个文件夹src用来存放程序的源代码,新建一个classes文件夹用来存放编译后的文件。

5.打开Eclipse,将工作区指定为RED5安装目录下webapps,然后新建一个项目,项目名为myChat.这个时候你应该发现刚才 myChat中的文件都被加载进来了,我们首先把src目录指定为源代码目录,右键选择src,在弹出的菜单中选择Build Path->Use as SourceFolder,即将其指定为代码文件夹。接下来要指定项目的目标目录,在项目名上右键选择Properties,选择Java Bulid Path,在选择Source标签,在下面的Browse中选择Class目录,将其指定为目标目录。然后选择Libraries,点击Add External JARs,将RED5安装目录下的red5.jar包含进来。

6.这个时候,在Eclipse的左边应该多了WEB-INF/src这样一个东东,我们将要在这里开始写入我们的第一个项目代码。右键选择它,在 弹出的菜单中选择New->Package,新建一个包,举例,包名可以为org.d5.first,然后再在生成的org.d5.first这个 包上继续右键选择New->File,输入文件名Application.java。并在建好的文件中输入以下代码:


package org.d5.first;

import org.red5.server.adapter.ApplicationAdapter;

public class Application extends ApplicationAdapter {

public String login(){
return "Welcome to Chat Servers";
}

}

7.进行配置。编辑WEB-INF下的red5-web.xml,找到bean id=”web.handler”一句,将class=”XXX”中的XXX位置修改为org.d5.first.Application,这样本程序将 以刚才写的Application来运行。删除后面的bean id=”server.handler…整句,因为我们暂时用不到这个东东。编辑web.xml,找到webAppRootKey,将其下面的param -value标签中的值修改为/myChat。编辑red5-web.properties,将第一句修改为webapp.contextPath= /myChat

8.编译项目

9.重新启动RED5服务器

10.在FLASH中新建一个文件,输入以下代码:


nc = new NetConnection();
nc.connect("rtmp://localhost/myChat");

nc.onResult = function(obj){
trace(obj);
}
nc.call("login",nc);

 

运行程序,显示结果为Welcome to Chat Servers。第一个RED5应用程序诞生了,呵呵:)

 


Red5 简单安装指南howto

Red5是个开源的flash服务器,相对fms 4500$的一个lic的价格,能省好多钱哦,今天就测试安装一下Red5

1.配置java环境
去sun网站下载最新的jdk1.5.0_07,怎么安装不说了,直接解压安装到/usr/java/jdk1.5.0_07目录

然后在/etc/profile添加以下几句信息
export PATH=$PATH:/usr/java/jdk1.5.0_07/bin:/usr/java/jdk1.5.0_07/jre/bin
export JAVA_HOME=/usr/java/jdk1.5.0_07
exportCLASSPATH="./:/usr/java/jdk1.5.0_07/lib:/usr/java/jdk1.5.0_07/jre/lib"
exportLD_LIBRARY_PATH=/usr/java/jdk1.5.0_07/jre/lib/i386:/usr/java/jdk1.5.0_07/jre/lib/i386/server

注意,默认的as4可能自带java,把自带的先删除了!!

2.安装apche-ant
去apache网站下载最近的版本,安装方法跟jdk差不多,也是解压到/usr/local/ant目录

然后在/etc/profile添加以下几句信息
export ANT_HOME=/usr/local/ant
export PATH=$PATH:/usr/local/ant/bin


source /etc/profile 让配置生效

3.安装Red5

可以用svn下载最新的版本

svn co http://svn1.cvsdude.com/osflash/red5/java/server/tags/0_5/red5

cd red5

编译:输入ant命令,自动编译

运行
./red5.sh &


4.简单的配置,使用demo
配置端口:conf/red5.properties 修改此文件就行

访问http://ip:5080

可以运行自带的demo,记住如果你配了ip,自带的demo里的地址localhost都要换成你的真实地址

在线录制的例子:
http://www.acmewebworks.com/red5/videos/SimpleStreamRecording.html

在线播放的例子:
http://www.acmewebworks.com/red5/videos/SimpleLiveBroadcast.html

分享例子,类似远程演示:
http://www.acmewebworks.com/OSProjects/mtasc/videos/BallControl.html


开源的视频会议系统openmeetings——安装

OpenMeetings是一个开源的视频会议软件。它是基于OpenLaszlo’s的新流媒体格式和开源的Flash服务器---Red5!

  本文以安装openmeetings目前的最新版本openmeetings05Beta5为例,详细说一下我的安装过程。这一版本的官方安装说明见http://code.google.com/p/openmeetings/wiki/InstallationOf05RC5Beta5,不过是英文的。官方的安装给出了基于多种数据库和不同操作系统的安装方法。下面仅以基于mysql数据库和windows 2003 server的安装为例,来说明整个安装过程。

  1. 到http://code.google.com/p/openmeetings/downloads/list上下载openmeetings的最新版本(目前为止最新是openmeetings05Beta5)。

  2. 安装mysql数据库,我安装的是mysql-5.0.41-win32的版本,安装后创建一个空的数据库,名为xmlcrm。

  3. 安装Open-Office-Service,我安装的是openoffice.org2.2。

   a. 安装完毕后,打开“开始”-〉“程序”->“OpenOffice.org2.2”-〉OpenOffice.org Base(若是第一次运行,需要注册并配置,填写注册信息,不要进行数据库配置)

   b. 软件运行后,点“开始”-〉“运行”-〉cmd,进入“命令提示符”;

   c. 进入openoffice的安装目录下的program目录,如:C:\Program Files\OpenOffice.org2.2\program

   d. 输入以下命令使openoffice在手动模式下运行在8100端口上:soffice.exe -headless -nologo-norestore-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager

   e. 输入以下命令检查服务是否正常运行:netstat -anptcp

   f. 点“回车”后会出现一个列表,当发现列表中有如下一行,说明配置成功:TCP 127.0.0.1:8100 0.0.0.0:0 LISTENING

  4. 安装“ImageMagick”,我安装的是ImageMagick-6.3.6-1-Q16-windows-dll

  5. 安装Ghostscript,我装的是Ghostscript 8.51

  6. 安装SWFTools,我装的是swftools-0.8.1

  7. 安装jre,我装的是jre1.5.0

  8. 安装Red5 Server,我装的是red5-0.6.3,下载地址http://dl.fancycode.com/red5/0.6.3/win/setup -red5-0.6.3.exe

  9. 将openmeetings的压缩包解压,得到的xmlcrm文件夹放到$RED5-HOME/webapps/目录下。那么,现在$RED5- HOME/webapps/xmlcrm/就是视频会议系统的主目录($RED5-HOME表示red5的安装目录,接下来我们用$ OPENMEETINGS-HOME代表视频会议系统的主目录)

  10. 到$OPENMEETINGS-HOME/install文件夹下,找到文件mysql_hibernate.cfg.xml,改名为hibernate.cfg.xml,打开它,修改下列语句:

  <property name="connection.username">root</property>

  <propertyname="connection.password"></property>

  <propertyname="connection.url">jdbc:mysql://localhost:3306/xmlcrm</property>

  11. 重新启动red5,打开浏览器,会出现图1的画面,点击“continue with STEP 1”,出现图2的画面;

  12. 将图2的所有信息填写完整后,点击“senden”,等待几分钟的时间(因为此时要执行安装过程,主要是要向数据库中创建好多表,你可以到$RED5- HOME/log目录下找到red5.log文件查看安装记录,以确定安装过程是否正常),若最后出现图3的画面,则表示安装成功,点击“Enter the Application”进入系统。

 

图1

 

图2

 

图3


 

关于red5——开源的Flash流媒体服务器red5简介

在介绍RED5之前,有必要先介绍一下Flash Media Server。

  Flash Media Server,简称FMS,以前也叫Flash Communication Server(FCS),是Flash大家庭里的一员,被称为是目前开发Web音视频应用程序(比如,视频聊天室、视频会议系统、播客系统、音视频留言等 等)的最方便最快捷的解决方案。也在web应用程序开发上有着越来越广泛的应用。FMS如此的优良功能当然并不是免费提供给广大用户的,4000美金每个 点的价格让很多开发人员望而却步。于是,开源的Red5成为人们的新宠。

  Red5是一个采用Java开发开源的Flash流媒体服务器,功能上与fms类似。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。

  Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。

  Red5的官方网站是http://osflash.org/red5,它目前正处在研发阶段,现在发布的测试版本为0.6.3,它的最终正式版为1.0,red5研发的进程已列在了官方网站上:http://osflash.org/red5/roadmap。

  下面介绍几个比较好的学习Red5的网站:

  Openred5中文开源社区:

  http://www.openred5.cpm/bbs/index.php

  一个red5学习者的博客:

  http://blog.tianya.cn/blogger/view_blog.asp?BlogName=weitiger

  第五动力:

  http://www.d5power.com/thread.php?fid=20