How to stream MP4 files from subdirectories with Flowplayer?
Asked Answered
M

2

5

I am using Wowza Media Server to enable streaming of MP4 files and as video player I use Flowplayer.

To get some structure for my content I use sub directories within the configured StorageDir for my Wowza application.

The problem I have is that no matter what URL-format I use, Wowza keep looking for the file in the root storage directory.

I've tried using the URL format specified by Wowza here, but with no luck:

rtmp://[wowza-ip-address]/myapp/_definst_/mp4:mysubdirectory/sample.mp4

I also tried everything suggested in posts on the Wowza forum:

But Wowza keeps looking in the root storage directory, throwing exceptions like these:

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)

Somehow Wowza thinks it should look for an FLV file in the root storage directory, even though the URL specify that it is an MP4 file in a subdirectory. Why is that?

Miocene answered 23/1, 2014 at 8:49 Comment(0)
M
9

After spending hours looking into this, I finally found this post on the Wowza forum.

The problem:

Apparently there is an issue with some flash-based video players (like Flowplayer that I use), that accept a single string for the RTMP connection and stream name. Some of these players do not separate the RTMP connection and stream name properly when using sub directories.

When breaking this URL apart:

rtmp://[wowza-address]:1935/vod/_definst_/mp4:subfolder/sample.mp4

The player will use this as the RTMP connection:

rtmp://[wowza-address]:1935/vod/_definst_/mp4:subfolder

The player will then try to play sample.mp4 instead of subfolder/sample.mp4 which will fail.

The solution:

To remedy this problem, there is a plugin for Wowza that fixes the URL, available for download here:

Unzip the package and copy the JAR file into your Wowza /libs directory, then add this to your /conf/[app-name]/Application.xml configuration file:

<Module>
    <Name>ModuleFixStreamPath</Name>
    <Description>ModuleFixStreamPath</Description>
    <Class>com.wowza.wms.plugin.collection.module.ModuleFixStreamPath</Class>
</Module>

Doing so got it all working for me!

Miocene answered 23/1, 2014 at 8:49 Comment(0)
T
0

I fix this problem by creating symlinks using PHP code before output video component template

$relativeVideoLink = str_replace("/", "__", $videoFileRelativePath);
if (!file_exists($wowzaDir . $relativeVideoLink)) {
    symlink($wowzaDir . $videoFileRelativePath, $wowzaDir . $relativeVideoLink);
}

After creating symlink i put it to tag

<video src="http://00.00.00.00:1935/vod/mp4:<?=$relativeVideoLink?>/manifest.mpd"></video>
Testa answered 16/5, 2019 at 8:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.