我想在运行时为本地存储的视频文件创建别名。例如,我有一个"test/video.flv"文件,并创建一个"abc123"别名(如果扩展名很重要,则创建"abc123.flv")。
我想使用这些别名的唯一和一次性视频路径。所以我需要在1次使用后将其移除。
- 如何在运行时创建别名
- 如何在运行时删除它
我找到了更好的解决方案!在red5-web.xml文件中,我添加了一个bean<bean id="streamFilenameGenerator" class="myapp.FilenameGenerator"></bean>
,并为它创建了public class FilenameGenerator implements IStreamFilenameGenerator
类。现在我只需要覆盖负责文件名解析的public String generateFilename(IScope scope, String name, GenerationType type)
函数。name参数是请求的流名称,返回值是解析的流名称。从这一点来看,现在这很简单,例如,创建一个键=别名,值=真实现有文件路径的HashMap。
您有多种选择来实现这一点:
一种方法是创建一个符号链接,这样您就可以使用底层操作系统欺骗red5存在一个文件。然后,您必须在ApplicationAdapter中添加侦听器才能侦听所需的事件。例如:http://dl.fancycode.com/red5/api/org/red5/server/adapter/ApplicationAdapter.html=>stream启动/停止等。您必须查找您的Red5版本的ApplicationAdapter,才能查看您在使用的Red5版中可以侦听的所有可能的事件!
第二种解决方案是编写一个自定义流处理程序。然而,这需要进一步调查。我不认为有一种标准的机制可以修改文件请求以对其应用某种通配符。它的工作原理与第一个解决方案类似,但您需要重写/覆盖ApplicationAdapter的一些机制来处理文件请求。
因此,基本上最好的方法是研究ApplicationAdapter并找到您正在寻找的事件侦听器。