·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[RTMP]Red5常见一些问题的指引说明(2)

时间:2012-11-19 22:17blueidea.com
自己的IStreamFilenameGenerator 想要自定义视频目录的路径,我们必须implements一个自己的文件产生器,代码如下: importorg.red5.server.api.IScope; importorg.red5.server.api.stream.IStreamFilenameGenerator; p

自己的IStreamFilenameGenerator
想要自定义视频目录的路径,我们必须implements一个自己的文件产生器,代码如下:

  1. import org.red5.server.api.IScope; 
  2. import org.red5.server.api.stream.IStreamFilenameGenerator; 
  3.  
  4. public class CustomFilenameGenerator implements IStreamFilenameGenerator { 
  5.  
  6. /** Path that will store recorded videos. */ 
  7. public String recordPath = "recordedStreams/"
  8. /** Path that contains VOD streams. */ 
  9. public String playbackPath = "videoStreams/"
  10.  
  11. public String generateFilename(IScope scope, String name, 
  12. GenerationType type) { 
  13. // Generate filename without an extension. 
  14. return generateFilename(scope, name, null, type); 
  15.  
  16. public String generateFilename(IScope scope, String name, 
  17. String extension, GenerationType type) { 
  18. String filename; 
  19. if (type == GenerationType.RECORD) 
  20. filename = recordPath + name; 
  21. else 
  22. filename = playbackPath + name; 
  23.  
  24. if (extension != null) 
  25. // Add extension 
  26. filename += extension; 
  27.  
  28. return filename; 

上述代码所构成的文件发生器,将产生类似recordedStreams/red5RecordDemo1234.flv的视频录制文件以及将 videoStreams作为VOD点播的默认目录

修改配置文件另我们的文件管理器生效
下一步,我们自定义的文件产生器必须通过配置文件来生效,这样才能对我们的应用产生影响.
修改你的项目中WEB-INFO/red5-web.xml
<bean id="streamFilenameGenerator"/>

请注意,实际上你的CustomFilenameGenerator肯定是在其他的包中,因此这里我们用path.to.your来表示.你需要用实际的路径来代替它,例如com.D5Power.CustomFilenameGenerator.

这样一来,你就可以通过我们编写的CustomFilenameGenerator来控制你想要的视频播放目录和录制目录了,但是对于一个项目来说,这样似乎很麻烦,我们要修改目录的时候总是要去修改源代码,并重新进行编译.我们需要象原来的0.6版程序一样,只通过配置文件就可以进行配置.这样更方便一些.那么,对我们的代码做一些修改吧.

向CustomFilenameGenerator中增加以下两个方法

  1. public void setRecordPath(String path) { 
  2. recordPath = path
  3.  
  4. public void setPlaybackPath(String path) { 
  5. playbackPath = path

接下来,把我们的bean的配置代码改成下面这样
<bean id="streamFilenameGenerator">
<property name="recordPath" value="recordedStreams/" />
<property name="playbackPath" value="videoStreams/" />
</bean>

当然,你还可以把这两个变量的声明移到你的应用中WEB-INF/red5-web.properties文件中,于是上述代码变成了:
<bean id="streamFilenameGenerator">
<property name="recordPath" value="${recordPath}" />
<property name="playbackPath" value="${playbackPath}" />
</bean>

而在red5-web.properties中多出以下两个变量的声明就可以了
recordPath=recordedStreams/
playbackPath=videoStreams/

D5附:其实我们也从这个例子中看到了RED5中一些参数的获取原理.我们也可以通过类似的方法进行mysql等资料的配置.呵呵,活学活用~~

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器