我正在使用Wowza Media Server启用MP4文件流,而我使用Flowplayer作为视频播放器。
要为我的内容获取一些结构,我在配置的StorageDir
中使用子目录作为我的Wowza应用程序。
我遇到的问题是无论我使用什么URL格式,Wowza都会继续在根存储目录中查找该文件。
我尝试使用Wowza here指定的网址格式,但没有运气:
rtmp://[wowza-ip-address]/myapp/_definst_/mp4:mysubdirectory/sample.mp4
我也尝试了Wowza论坛帖子中建议的所有内容:
但是Wowza一直在寻找根存储目录,抛出这样的异常:
404 b0c9be70-a33c-41ce-9692-199e3a1caccf.mp4
open: java.io.FileNotFoundException:
C:\Program Files (x86)\Wowza Media Systems\Wowza Media Server 3.6.2\content\b0c9be70-a33c-41ce-9692-199e3a1caccf.mp4.flv
(The system cannot find the file specified)
不知何故,Wowza认为它应该在根存储目录中查找FLV文件,即使URL指定它是子目录中的MP4文件。那是为什么?
答案 0 :(得分:9)
在花了好几个小时研究之后,我终于在Wowza论坛上找到了this帖子。
问题:
显然,某些基于闪存的视频播放器(如我使用的Flowplayer)存在问题,它接受RTMP连接和流名称的单个字符串。使用子目录时,其中一些播放器不会正确分离RTMP连接和流名称。
将此网址拆开时:
rtmp://[wowza-address]:1935/vod/_definst_/mp4:subfolder/sample.mp4
播放器将此作为RTMP连接使用:
rtmp://[wowza-address]:1935/vod/_definst_/mp4:subfolder
播放器将尝试播放sample.mp4
而不是subfolder/sample.mp4
,这将失败。
解决方案:
为了解决这个问题,Wowza有一个修复URL的插件,可在此处下载:
解压缩包并将JAR文件复制到Wowza /libs
目录中,然后将其添加到/conf/[app-name]/Application.xml
配置文件中:
<Module>
<Name>ModuleFixStreamPath</Name>
<Description>ModuleFixStreamPath</Description>
<Class>com.wowza.wms.plugin.collection.module.ModuleFixStreamPath</Class>
</Module>
这样做让我一切都在为我工作!
答案 1 :(得分:0)
我通过在输出视频组件模板之前使用PHP代码创建符号链接来解决此问题
$relativeVideoLink = str_replace("/", "__", $videoFileRelativePath);
if (!file_exists($wowzaDir . $relativeVideoLink)) {
symlink($wowzaDir . $videoFileRelativePath, $wowzaDir . $relativeVideoLink);
}
创建符号链接后,我将其放入标签
<video src="http://00.00.00.00:1935/vod/mp4:<?=$relativeVideoLink?>/manifest.mpd"></video>