MediaCache, Adaptive Streaming, AWS S3

I’ve setup MediaCache on a dedicated linux box to stream vod content from Amazon S3 through Wozwa 3. Let’s say I have a S3 Bucket: s3.example.com and MediaCacheSource configured with prefix “s3”:

http

http://s3.example.com.s3.amazonaws.com/

s3/

and an application named “vod”.

Playing mp4 files stored in this bucket with Strobe Media Playback and other Flash players works fine. If I create the f4m manifest files manually, RTMP based Dynamic streaming works as expected as well.

Unfortunately I am having problems getting SMIL files stored on S3 to work. As I’ve read in other posts, it should be simple as putting the SMIL files in the same folder as the media files and point to them with a relative path.

So I have a sample SMIL file named test.smil and two mp4 files stored on S3, all in the same folder:

Is the bucket or item have limiited ACL access? You have to add AWS keys to /conf/MediaCache.xml. Then restart. Or give change the bucket permission to Everyone = read

Richard

Hm, what is the smil plugin? I have not needed to use that to playback using a Wowza .smil file and the Flash Media Playback player. Just follow this guide:

Note at bottom:

Flash HTTP (Sanjose) Streaming

This player can also play Flash HTTP (Sanjose) streams. Check the box labeled "In the Flash Media Playback configurator, you have to check “Are you using HTTP Streaming or Flash Access 2.0?”. Then enter a URL like:

http://[wowza-ip-address]:1935/vod/smil:sample.smil/manifest.f4m

The correct URL for you is:

http://{streaming-server}:1935/vod/_definst_/smil:s3/test.smil/manifest.f4m

Richard

Great! Thanks for the update

Richard

Are you using “smil:” prefix? Show the names ou are using for the smil and for one of the working .mp4 files

Richard

What is the issue? The smil file is stored on S3 along-side the vod files that it references. The smil itself will be unchanged. You will playback the smil with smil: prefix and the same amazons3 prefix as single file. Like this:

http://[wowza-ec2-address]:1935/vods3/smil:amazons3/sample.smil/manifest.f4m

Richard

Are you using the “vods3” application that is included in default Wowza EC2 AMIs? You have to use that or another application that is configured for MediaCache.

Re-start Wowza and test what you are doing. Then zip up /conf and current access log showing the re-start and test to support@wowza.com

Richard

Is the bucket or item have limiited ACL access? You have to add AWS keys to /conf/MediaCache.xml. Then restart. Or give change the bucket permission to Everyone = read

Richard

Thanks, Richard. All items in bucket are public. AWS Keys are set correctly. Streaming video files from S3 through Media Cache is working. Just having issues working with SMIL files. It works if I create the f4m manifest files from within my web app. I can live with that for RTMP dynamic streaming… In order to avoid additional encoding jobs I’d really like to use Wowza for adaptive streaming on mobile devices (m3u8) as well.

Thanks again for your advice, Richard. Actually I haven’t investigated the source for the smil plugin, yet: http://sourceforge.net/apps/mediawiki/osmf.adobe/index.php?title=SMIL_Support

Unfortunately, I am still having no luck. Wowza responds with an empty media list. I’ll further investigate my setup on another freshly installed self-hosted linux box plus an EC2 instance.

Update

Well, everything works fine on an EC2 instance. No smill_plugin needed for Strobe Media Playback. Works on my dedicated linux boxes as well: Just copied the Application.xml and MediaCache.xml settings from EC2 and tweaked according to my needs. Seems like I made a mistake while setting up MediaCache in the first step. Just wondering why it worked for mp4 files but not smill…

Thank you very much for your patience and fast support!

I am having a similar issue. I have successfully streamed from ec2/s3 using the default vods3 application. Now I am trying to use a smil file for HLS, however the server error log says:

WARN	server	comment	2013-04-04	06:43:04	-	-	-	-	-	25.363	-	-	-	-	-	-	-	-	MediaCacheItemHTTPImpl.getItemInfo[our-vod.s3.amazonaws.com/stream.smil]: HTTP response: 307
WARN	server	comment	2013-04-04	06:43:04	-	-	-	-	-	25.364	-	-	-	-	-	-	-	-	MediaCacheItemBase.init: Item does not exist: amazons3/our-vod/stream.smil
WARN	server	comment	2013-04-04	06:43:04	-	-	-	-	-	25.364	-	-	-	-	-	-	-	amazons3/our-vod/stream.smiopen: java.io.IOException: MediaCacheRandomAccessReader.open: Item not in cache: amazons3/our-vod/stream.smil
WARN	server	comment	2013-04-04	06:43:04	-	-	-	-	-	25.365	-	-	-	-	-	-	-	-	HTTPStreamerCupertinoIndexPlaylist.indexFile[vods3/_definst_/smil:amazons3/our-vod/stream.smil]: MediaList is empty.

Yes, I have quadruple-checked the permissions for the bucket and the smil file and its all public. What else could it be?

The smil file lives in a bucket called ‘our-vod’. Along side the smil file in the ‘our-vod’ bucket are 3 folders: ‘1mb’, ‘700kb’, ‘300kb’. This is what the smil looks like:

[HTML]

Is this what you mean?

The smil file is called ‘stream.smil’ and is publicly accessable here: https://s3-ap-southeast-2.amazonaws.com/our-vod/stream.smil

The video file is called ‘AU064593-M.mp4’ and there is a copy (encoded accordingly) in each of the folders ‘1mb’, ‘700kb’, ‘300kb’.

Here is one of the video files publicly accessible: https://s3-ap-southeast-2.amazonaws.com/our-vod/700kb/AU064593-M.mp4

This is the link construction:

http://ec2-54-252-81-153.ap-southeast-2.compute.amazonaws.com:1935/vods3/definst/smil:amazons3/our-vod/stream.smil/playlist.m3u8

Aah ok, so I’m not going crazy. The problem is that Amazon are using a redirect in my bucket, which MediaCache doesn’t like?

The problem is the bucket is responding with a 307

WARN server comment 2013-04-04 06:43:04 - - - - - 25.363 - - - - - - - - MediaCacheItemHTTPImpl.getItemInfo[our-vod.s3.amazonaws.com/stream.smil]: HTTP response: 307

and this will not work with MediaCache.

Andrew.

Phaex i am currently hosting my video transcoded in 3 diffrent bitrates and mp4 format stored in s3 . can you please help in providing the detail how you were able to call smil file from s3 storage for HLS delivery . i am using ec2 instance running wowza application. For single bitrate delivery there is no issue and media cache works fine but for multibitrate delivery using HLS protocol i am facing the issue .

i did the same but the video is not getting played. where as if i put the files in wowza content folder it works fine . there seems to be some issue with smil file reference on s3 storage which media cache is not able to fetch properly