Wowza Community

Running playlists with live application and S3 bucket/Digital Ocean with Media Cache

I’m trying to stream playlists using a live Wowza application with my media located on an DigitalOcean Spaces bucket that emulates an Amazon S3 bucket. It looks like I’m having trouble with Media Cache getting the S3 bucket content.

The error in the server log looks like this:

MediaReaderH264.open[live/MyApp]: Not found: /usr/local/WowzaStreamingEngine/content/RemoteMediaDrive/sample.mp4.: java.io.FileNotFoundException: /usr/local/WowzaStreamingEngine/content/RemoteMediaDrive/sample.mp4 (No such file or directory)|at java.base/java.io.RandomAccessFile.open0(Native Method)|at java.base/java.io.RandomAccessFile.open(Unknown Source)|at java.base/java.io.RandomAccessFile.(Unknown Source)|at java.base/java.io.RandomAccessFile.(Unknown Source)|at com.wowza.io.WowzaRandomAccessFile.(WowzaRandomAccessFile.java:12)|at com.wowza.io.DirectRandomAccessReader.open(DirectRandomAccessReader.java:236)|at com.wowza.wms.mediareader.h264.MediaReaderH264.open(MediaReaderH264.java:262)|at com.wowza.wms.stream.publish.PublishingProviderMediaReader.a(PublishingProviderMediaReader.java:239)|at com.wowza.wms.stream.publish.PublishingProviderMediaReader.(PublishingProviderMediaReader.java:97)|at com.wowza.wms.stream.publish.Stream.a(Stream.java:957)|at com.wowza.wms.stream.publish.Stream.run(Stream.java:278)|at java.base/java.lang.Thread.run(Unknown Source)|

My bucket is named “remotemediadrive” and I have the media cache source set up like this:

Prefix: RemoteMediaDrive/
Base Path: http:/sfo3.digitaloceanspaces.com/remotemediadrive/
Use Amazon bucket name in domain: false

My SMIL file with the playlist for testing looks like this:

<smil>
    <head>
    </head>
    <body>

        <stream name="LoopUntilLiveSteam"></stream>		
        <stream name="myStream"></stream>


        <playlist name="LiveLoop" playOnStream="LoopUntilLiveSteam" repeat="true" scheduled="2021-06-14 16:00:00">
            <video src="mp4:RemoteMediaDrive/sample.mp4" start="0" length="-1"/>
        </playlist>

        <playlist name="pl1" playOnStream="myStream" repeat="true" scheduled="2021-06-14 16:00:00">
            <video src="mp4:RemoteMediaDrive/sample.mp4" start="5" length="5"/>
            <video src="mp4:RemoteMediaDrive/sample.mp4" start="50" length="5"/>
            <video src="mp4:RemoteMediaDrive/sample.mp4" start="150" length="5"/>
        </playlist>

    </body>
</smil>

Any ideas where I’m going wrong?

Thanks,

Ron

I’ve updated my S3 base path to:

https://remotemediadrive.sfo3.digitaloceanspaces.com/

This seems like it’s closer to working, but now I’m getting HTTP 302 errors. I’ve seen seen others on the forum speak of 302 errors with AWS and the answer seems to be to include a awsSigningVersion and awsDefaultRegion property the MediaCache.xml file. But I’m using DigitalOcean, not Amazon, so I’m not sure what to do. I’ve seen others ask similar questions about using DigitalOcean “S3-compatible” Spaces and it looks like they haven’t had success.

Are DigitalOcean “S3-compatible” Spaces a no-go on Wowza?

I should have included my latest error code concerning the HTTP 302 error:

MediaCacheItemHTTPImpl.getItemInfo[remotemediadrive.sfo3.digitaloceanspaces.com/sample.mp4]: HTTP response: 302

Thanks,

Ron

Ok, I got rid of the 302 error by changing the base path prefix from “http” to “https”. But guess what… my original error is back! Here’s the error that I’m seeing now:

MediaReaderH264.open[live/MyApp]: Not found: /usr/local/WowzaStreamingEngine/content/RemoteMediaDrive/sample.mp4.: java.io.FileNotFoundException: /usr/local/WowzaStreamingEngine/content/RemoteMediaDrive/sample.mp4 (No such file or directory)|at java.base/java.io.RandomAccessFile.open0(Native Method)|at java.base/java.io.RandomAccessFile.open(Unknown Source)|at java.base/java.io.RandomAccessFile.(Unknown Source)|at java.base/java.io.RandomAccessFile.(Unknown Source)|at com.wowza.io.WowzaRandomAccessFile.(WowzaRandomAccessFile.java:12)|at com.wowza.io.DirectRandomAccessReader.open(DirectRandomAccessReader.java:236)|at com.wowza.wms.mediareader.h264.MediaReaderH264.open(MediaReaderH264.java:262)|at com.wowza.wms.stream.publish.PublishingProviderMediaReader.a(PublishingProviderMediaReader.java:239)|at com.wowza.wms.stream.publish.PublishingProviderMediaReader.(PublishingProviderMediaReader.java:97)|at com.wowza.wms.stream.publish.Stream.a(Stream.java:957)|at com.wowza.wms.stream.publish.Stream.run(Stream.java:278)|at java.base/java.lang.Thread.run(Unknown Source)|

Well you’re not doing anything wrong @Ron_Benditt, Amazon S3 buckets are integrated with the Media Cache functionality, however Digital Ocean spaces are not directly integrated at this time with the Wowza MediaCache feature. We have this feature in backlog, but no ETA on when we will support it.

Sorry you spent so much time trying to work on it, I’ll edit this post title to include Digital Ocean and mark this as the answer so it’s more clear when using the search bar.

Hello Rose,
Thanks so much for responding and letting me know. I would have spent many more hours at it if you hadn’t said anything.

I’ll look into using a genuine Amazon S3 instead of a DigitalOcean facsimile then. My biggest concern is that the Wowza Streaming Engine server is on DigitalOcean and if the media bucket is on AWS, will playlist items load fast enough? I could, for example, have a 5 second station bumper on the playlist followed by a two hour movie. Will MediaCache cache the files with enough advance notice for this to play smoothly? How far in advance does MediaCache kick in and get what it needs?

Thanks,

Ron

Hi Ron, I haven’t personally tested that workflow, but it might be worthwhile to submit a ticket because our engineers in tech support have come across so many different scenarios, they may have a suggestion based on previous tickets/tests. Glad I saved you some time, but I still hope we can figure out a low latency path.

Keep in mind too that you can schedule the streams to pull from AWS and start a certain time. We have some customers that schedule it say 9:55 to give it some time to be live to the viewers at 10am and they can have an image at the beginning of the stream saying “Starting soon” or something like that." Gives you a little buffer time. That would be the Stream Publisher workflow with MediaCache.

Thanks for your help. I can’t really put up a placard at the beginning, because in my workflow there is no beginning… its a continuous 24/7 live stream.

Anyway, I’m trying a different approach, connecting to DigitalOcean Spaces as if it were just a NAS drive. I can see the files fine from my server by navigating to the right path, but I’m still having trouble getting Wowza to see them. I’ve opened up a new thread about this: Not finding media outside of content directory

Thanks,

Ron