自定义Red5中的流播放路径以从共享计算机访问文件

时间:2012-11-02 09:09:46

标签: path customization directory red5

我已经安装了Red5服务器。我创建了一个与oflaDemo相同的自定义应用程序。我可以在我的应用程序的/ streams文件夹中播放视频,我的应用程序名称是demo。我想将我的应用程序访问视频的目录RED5_HOME / demo / webapps / streams更改为共享计算机中的文件夹。我可以更改为本地计算机中的目录,例如“c:\ streams”。我使用CustomFileNameGenerator实现了IStreamFilenameGenerator。但我无法访问共享文件夹。这是我的CustomFileNameGenerator类

   import java.io.File;

   import org.apache.log4j.Logger;
   import org.red5.server.api.scope.IScope;
   import org.red5.server.api.stream.IStreamFilenameGenerator;


   public class CustomFilenameGenerator implements IStreamFilenameGenerator {

   Logger log = Logger.getLogger(CustomFilenameGenerator.class);

   /** Path that will store recorded videos. */
   /public String recordPath = "recordedStreams/";/
   /** Path that contains VOD streams. */
   public String playbackPath;



   /** Set if the path is absolute or relative */
   public Boolean resolvesAbsolutePath;


   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 = null;
   if (type == GenerationType.PLAYBACK)
   {
   filename = playbackPath + name;
   }
   log.info("file Name " + filename);
   if (extension != null)
   // Add extension
   filename += extension;
   log.info("Extension and file name " + filename);


   return filename;
   }
   public boolean resolvesToAbsolutePath()
   {

   log.info("resolvesAbsolutePath" + resolvesAbsolutePath);
   return resolvesAbsolutePath;
   }
   public void setPlaybackPath(String playbackPath) {
   this.playbackPath = playbackPath;
   }
   public void setResolvesAbsolutePath(Boolean resolvesAbsolutePath) {
   this.resolvesAbsolutePath = resolvesAbsolutePath;
   }



   }

以下是我的red5-web.properties文件中的属性:

   webapp.contextPath=/demo
   webapp.virtualHosts=*, 192.168.1.20, 192.168.1.20:8088, 127.0.0.1:8088,       192.168.1.20:1935

   playbackPath=C://streams/
   resolvesAbsolutePath=true

以下是我的red5-web.xml文件中的bean定义

   <bean id="streamFilenameGenerator" class="com.abhinow.demo.CustomFilenameGenerator" >

   <property name="playbackPath" value="${playbackPath}" />
   <property name="resolvesAbsolutePath" value="${resolvesAbsolutePath}" />
   </bean>

上面给出的代码工作正常,我可以在C:\ streams文件夹中播放视频,但是当我将播放路径更改为共享文件夹时        /192.168.1.20/streams 它不起作用。我正在使用Windows电脑。我还尝试将共享文件夹/192.168.1.20/streams映射到使用Windows中的地图网络驱动器功能的网络驱动器,并将该驱动器的名称命名为Z:。然后我试着通过这条道路        Z://流 现在也没有用。 任何人请帮助我弄错了。我一直在努力奋斗两天。请帮我解决这个问题。

提前多多感谢。

2 个答案:

答案 0 :(得分:0)

你是否调试了

generateFilename
你的申请中有没有打过

? 第一件事可能是在代码中添加一些log.debug语句并查看red5.log(或std.out)。

塞巴斯蒂安

答案 1 :(得分:0)

尝试:

  

public String generateFilename(IScope范围,字符串名称,字符串扩展名,GenerationType类型){   ...

     

返回playbackPath + filename;

     

}