如何使用Flowplayer从子目录流式传输MP4文件?

时间:2014-01-23 08:49:30

标签: flowplayer wowza

我正在使用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文件。那是为什么?

2 个答案:

答案 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>