`
jenth
  • 浏览: 32651 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Red5 怎样用流从自定义目录读取或记录

    博客分类:
  • Red5
阅读更多
前言
本文章描述了怎样用流按需从自定义目录读取视频数据或记录到自定义目录,而不是应用中默认的流目录。

文件名生成器服务
Red5的功能使用了scope services概念,一些功能在一定scope中才提供。IStreamFilenameGenerator是scope service之一,它能够为视频点播(VOD)流生成文件名来播放或记录。

自定义生成器
要在不同的文件夹中生成文件名,必须实现一个新的文件名生成器。
import org.red5.server.api.IScope;
import org.red5.server.api.stream.IStreamFilenameGenerator;

public class CustomFilenameGenerator implements IStreamFilenameGenerator {

    /** Path that will store recorded videos. */
    public String recordPath = "recordedStreams/";
    /** Path that contains VOD streams. */
    public String playbackPath = "videoStreams/";
    
    public String generateFilename(IScope scope, String name,
            GenerationType type) {
        // Generate filename without an extension.
        return generateFilename(scope, name, null, type);
    }

    public String generateFilename(IScope scope, String name,
            String extension, GenerationType type) {
        String filename;
        if (type == GenerationType.RECORD)
            filename = recordPath + name;
        else
            filename = playbackPath + name;
        
        if (extension != null)
            // Add extension
            filename += extension;
        
        return filename;
    }
}

上面的类会生成一个文件名来记录流数据如recordedStreams/red5RecordDemo1234.flv,同时将videoStreams目录做为视频点播流的源目录。

激活自定义生成器
在下一步中,自定义生成器必需在应用的配置文件中激活。
把下面的定义加到yourApp/WEB-INF/red5-web.xml中:
<bean id="streamFilenameGenerator" 
      class="path.to.your.CustomFilenameGenerator" />

这样才会用刚才定义的类生成流文件名。

通过配置改变路径
现在类能够按预期工作了,但是有一点不方便当要改路径时要在代码中修改,之后必须要重新编译类。
为此你可以在上一步中,配置文件里定义bean时传递参数来指定使用的路径。
在类中添加了两个方法,当解析配置文件的时候会被执行:
public void setRecordPath(String path) {
    recordPath = path;
}

public void setPlaybackPath(String path) {
    playbackPath = path;
}

现在你可以在bean定义中设置路径:
<bean id="streamFilenameGenerator" 
      class="path.to.your.CustomFilenameGenerator">
    <property name="recordPath" value="recordedStreams/" />
    <property name="playbackPath" value="videoStreams/" />
</bean>

你也可以把路径写在yourApp/WEB-INF/red5-web.properties文件里通过参数访问他们:
<bean id="streamFilenameGenerator" 
      class="path.to.your.CustomFilenameGenerator">
    <property name="recordPath" value="${recordPath}" />
    <property name="playbackPath" value="${playbackPath}" />
</bean>

这样你就得添加以下几行到你的属性文件:
recordPath=recordedStreams/
playbackPath=videoStreams/
分享到:
评论
1 楼 bthniu 2012-11-27  
你好,请问应当怎样实现red5接收客户端传过来的视频流并将其保存在服务器上呢?谢谢!

相关推荐

    Esri-Map-Areas:该软件包包含一个Lightning组件,该组件将从Salesforce相关列表中读取的多边形绘制到嵌入在记录页面中的Esri地图上。 该组件允许用户在地图的街道,拓扑和卫星视图之间进行选择

    该软件包包含一个Lightning组件,该组件将从Salesforce相关列表中读取的多边形绘制到嵌入在记录页面中的地图上。 该组件允许用户在地图的街道视图,拓扑视图和卫星视图之间进行选择。 配置 该组件从相关列表中的记录...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    java开源包5

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包7

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包8

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包1

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包11

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包2

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包3

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包6

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包10

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包9

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包101

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    Java资源包01

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    API精灵源码(C#编)

    2004.03.10 0:48:52 完成了用StringBuilder数组对原ComboBox的替换,可以使程序不用从新读取数据库就可以刷新修改后的信息! 2004.03.10 18:00:00 完成了用ArrayList对StringBuilder数组的替换节省2M内存 2004.03...

Global site tag (gtag.js) - Google Analytics