很忙,所以研究的时间就少。不过利用red5录制视频非常简单是真的,可能所有的类fms都一样吧,视频录制视作基本功能之一,自然要使用最简单的方法来实现。
以前做过一个摄像头牌照的程序,这里就用上了。把所有的类复制过来,然后把那个main.as改名为camera_window.as,再把里面的构造函数和类声明一修改,直接new一个,编译通过,操作也是对的。面向对象的复用性真是好出多多~~~
然后修改data_model,增加一个NetStream对象来进行视频的捕捉和发送,增加两个方法,分别是“开始广播(start_broadcast)”和“结束广播(stop_broadcast)”。对于客户端而言,只要发布(publish)视频就好,至于是录像啊,还是直播啊,都由服务器端来操作就行,或者由其它客户端来点播。
点击开始广播后,会把camera_window的摄像头对象传给data_model,然后利用_ns.attachCamera()方法来获取视频流,再通过_ns.publish("meat_video","record");的方式发送给服务器。publish方法的第一个参数是视频的名称,这个名称也是服务器端甄别不同视频的方法;第二个参数则是要求服务器对视频做不同的处理,具体帮助手册上都有,这里就不再赘述。点击停止广播后,则调用_ns.attachCamera(null)方法,停止继续发布视频。
测试,打开摄像头,干会儿别的。关掉程序,找到\red5\webapps\meat_app,发现里面多了一个“stream”文件夹,打开一开,meat_video.flv赫然在目,哈哈,录制视频,原来这么简单。
当然我是不会仅仅满足于录个视频的,于是跑去把ApplicationAdapter里面相关的几个事件和org.red5.server.api.stream底下几个文档翻译了一下,明天就开始用事件来驱动客户端点播等等。唔唔,如果有事件的话……
PS:其实我也像帖源码上来的,那样的话可以给别人提供更大的帮助。可惜这个博客贴起源码来实在太丑,于是只好作罢。附件也是,不让上传附件,不知道什么时候能有修改。
以前做过一个摄像头牌照的程序,这里就用上了。把所有的类复制过来,然后把那个main.as改名为camera_window.as,再把里面的构造函数和类声明一修改,直接new一个,编译通过,操作也是对的。面向对象的复用性真是好出多多~~~
然后修改data_model,增加一个NetStream对象来进行视频的捕捉和发送,增加两个方法,分别是“开始广播(start_broadcast)”和“结束广播(stop_broadcast)”。对于客户端而言,只要发布(publish)视频就好,至于是录像啊,还是直播啊,都由服务器端来操作就行,或者由其它客户端来点播。
点击开始广播后,会把camera_window的摄像头对象传给data_model,然后利用_ns.attachCamera()方法来获取视频流,再通过_ns.publish("meat_video","record");的方式发送给服务器。publish方法的第一个参数是视频的名称,这个名称也是服务器端甄别不同视频的方法;第二个参数则是要求服务器对视频做不同的处理,具体帮助手册上都有,这里就不再赘述。点击停止广播后,则调用_ns.attachCamera(null)方法,停止继续发布视频。
测试,打开摄像头,干会儿别的。关掉程序,找到\red5\webapps\meat_app,发现里面多了一个“stream”文件夹,打开一开,meat_video.flv赫然在目,哈哈,录制视频,原来这么简单。
当然我是不会仅仅满足于录个视频的,于是跑去把ApplicationAdapter里面相关的几个事件和org.red5.server.api.stream底下几个文档翻译了一下,明天就开始用事件来驱动客户端点播等等。唔唔,如果有事件的话……
PS:其实我也像帖源码上来的,那样的话可以给别人提供更大的帮助。可惜这个博客贴起源码来实在太丑,于是只好作罢。附件也是,不让上传附件,不知道什么时候能有修改。