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

[color=red][b]前言[/b][/color]
本文章描述了怎样用流按需从自定义目录读取视频数据或记录到自定义目录,而不是应用中默认的流目录。

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

[b][color=red]自定义生成器[/color][/b]
要在不同的文件夹中生成文件名,必须实现一个新的文件名生成器。
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目录做为视频点播流的源目录。

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

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

[color=red][b]通过配置改变路径[/b][/color]
现在类能够按预期工作了,但是有一点不方便当要改路径时要在代码中修改,之后必须要重新编译类。
为此你可以在上一步中,配置文件里定义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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值