0

我已经安装了 Red5 服务器。我创建了一个与 oflaDemo 相同的自定义应用程序。我可以在我的应用程序的 /streams 文件夹中播放视频,我的应用程序名称是 demo。我想将我的应用程序从中访问视频的目录 RED5_HOME/demo/webapps/streams 更改为共享机器中的文件夹。我可以切换到本地机器中的目录,例如“c:\streams”。我已经使用实现 IStreamFilenameGenerator 的 CustomFileNameGenerator 实现了这一点。但我无法访问共享文件夹。这是我的 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电脑。我还尝试使用 Windows 中的映射网络驱动器功能将共享文件夹 /192.168.1.20/streams 映射到网络驱动器,并将该驱动器命名为 Z:。然后我尝试给出路径 Z://streams 现在它也不起作用。任何人都请帮助我在哪里弄错了。我已经为此苦苦挣扎了两天。请帮我解决这个问题。

提前非常感谢。

4

2 回答 2

0

如果你调试过

generateFilename

在你的应用程序中被调用过吗?首先可能是在代码中添加一些 log.debug 语句并查看 red5.log(或 std.out)。

塞巴斯蒂安

于 2012-11-03T09:34:23.933 回答
0

尝试:

public String generateFilename(IScope scope, String name, String extension, GenerationType type) { ...

返回播放路径+文件名;

}

于 2013-03-06T19:36:19.627 回答