关于Red5点播视频路径的问题,red5默认是在当前域下的streams目录下的视频才能通过rtmp://localhost/vod/test.flv进行播放。
点播的时候的执行顺序StreamService-->SingleItemSubscriberStream-->PlayEngine-->ProviderService。ProviderService会去getStreamFile获取视频路径
DefaultStreamFilenameGenerator。
private String getStreamDirectory(IScope scope) {
final StringBuilder result = new StringBuilder();
final IScope app = ScopeUtils.findApplication(scope);
final String prefix = "streams/";
while (scope != null && scope != app) {
result.insert(0, scope.getName() + "/");
scope = scope.getParent();
}
if (result.length() == 0) {
return prefix;
} else {
result.insert(0, prefix).append('/');
return result.toString();
}
}
所以要想支持其它的目录,及所有盘符下的视频都能播放,集成IStreamFilenameGenerator接口
public class VodApp extends ApplicationAdapter implements IStreamFilenameGenerator{
@Override
public String generateFilename(IScope scope, String name, GenerationType type) {
return generateFilename(scope,name,null,type);
}
@Override
public String generateFilename(IScope scope, String name, String extension,
GenerationType type) {
String result = name;
if(extension!=null && !extension.equals("")){
result += extension;
}
return result;
}
@Override
public boolean resolvesToAbsolutePath() {
return true;
}
}
播放地址:rtmp:/localhost/vod/F:/a/b/c/a.flv
如有疑问qq:1512161790