Streaming files from S3, all protocols possible?

This is what we have:

1.- Amazon EC2 Instance with Wowza Media Server.

2.- Amazon S3 Bucket with media files arranged in directories.

This is what we need: Stream those files into Android & Blackberry (RTSP), iPod, iPad & iPhone (HTTPS), Web Browser (RTMP). We have tested the videos in all apps directly from Amazon S3 (through HTTP), and they work fine.

For the sake of argument, let’s say:

Bucket name: theBucket

Directory name: theDirectory

Video file: theVideo.mp4

Server Address: theServer.com

So, from what I can glean in these forums:

RTSP = rtsp://theServer.com:1935/vods3/mp4:theBucket/theDirectory/theVideo.mp4

Result: Doesn’t work on Android, works on VLC, works on Blackberry

HTTPS = http://theServer.com:1935/vods3/definst/mp4:theBucket/theDirectory/theVideo.mp4/playlist.m3u8

Result: Doesn’t work.

RTMP =

Streamer: rtmp://theServer.com:1935/vods3/

File: mp4:theBucket/theDirectory/theVideo.mp4

Result: Works on VLC, doesn’t work on JWPlayer nor FlowPlayer

I have gone through all the steps I can find in the forum (which consists of mounting the S3 bucket, adding PlayMethod:none and restarting Wowza) and can’t get it to work. What am I doing wrong here?

You should add definst to the rtsp url also. And to rule out encoding problems, test with the Wowza sample.mp4 file

rtsp://theServer.com:1935/vods3/_definst_/mp4:theBucket/theDirectory/sample.mp4

For RTMP, test with Wowza SimpleVideoStreaming player:

Server: rtmp://theServer.com:1935/vods3/

Stream: mp4:theBucket/theDirectory/sample.mp4

Follow the mobile trouble shooting guide:

https://www.wowza.com/docs/how-to-troubleshoot-rtsp-rtp-playback)

There is a mobile test linked above, and RTSP guide:

https://www.wowza.com/docs/how-to-set-up-an-application-for-rtsp-rtp-streaming

Richard

RTSP streaming to mobile devices is difficult. Not all devices/carriers work. Some work on wifi but not 3g. That’s why this test page is provided. The idea is if you cannot stream from the Wowza rtsp example, it is probably not going to work from your server either.

Some of these devices support Flash 10.1+, so you have the option of doing RTMP or San Jose (Flash HTTP) streaming, which is easier, more reliable and has many more features from security to multi-bitrate streaming.

Richard

Wowza is definitely doing something to the video file when sending it through RTSP. I have tested my video, a random MP4 from the web and the Wowza sample.mp4 and they work in all Androids (Samsung Galaxy S, Samsung Galaxy Tab, Sony Xperia 1100, Motorola Xoom) through regular HTTP, but when sending the same exact videos through RTSP it only works on the Galaxy S and the others give a “video not supported” error.

I don’t know how to fix this since it seems to be something inside Wowza itself.

This is my Application.xml just in case.

<Root>
	<Application>
		<!-- Uncomment to set application level timeout values
		<ApplicationTimeout>60000</ApplicationTimeout>
		<PingTimeout>12000</PingTimeout>
		<ValidationFrequency>8000</ValidationFrequency>
		<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
		<MaximumSetBufferTime>60000</MaximumSetBufferTime>
		<MaximumStorageDirDepth>25</MaximumStorageDirDepth>
		-->
		<Connections>
			<AutoAccept>true</AutoAccept>
			<AllowDomains></AllowDomains>
		</Connections>
		<!--
			StorageDir path variables
			
			${com.wowza.wms.AppHome} - Application home directory
			${com.wowza.wms.ConfigHome} - Configuration home directory
			${com.wowza.wms.context.VHost} - Virtual host name
			${com.wowza.wms.context.VHostConfigHome} - Virtual host config directory
			${com.wowza.wms.context.Application} - Application name
			${com.wowza.wms.context.ApplicationInstance} - Application instance name
			
		-->
		<Streams>
			<StreamType>default</StreamType>
			<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
			<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
			<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater -->
			<LiveStreamPacketizers></LiveStreamPacketizers>			
			<Properties>
			</Properties>
		</Streams>
		<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming -->
		<HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming</HTTPStreamers>			
		<SharedObjects>
			<StorageDir></StorageDir>
		</SharedObjects>
		<Client>
			<IdleFrequency>-1</IdleFrequency>
			<Access>
				<StreamReadAccess>*</StreamReadAccess>
				<StreamWriteAccess>*</StreamWriteAccess>
				<StreamAudioSampleAccess></StreamAudioSampleAccess>
				<StreamVideoSampleAccess></StreamVideoSampleAccess>
				<SharedObjectReadAccess>*</SharedObjectReadAccess>
				<SharedObjectWriteAccess>*</SharedObjectWriteAccess>
			</Access>
		</Client>
		<RTP>
			<!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
			<Authentication>
				<PublishMethod>digest</PublishMethod>
				<PlayMethod>none</PlayMethod>
			</Authentication>
			<!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
			<AVSyncMethod>senderreport</AVSyncMethod>
			<MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
			<IdleFrequency>75</IdleFrequency>
			<RTSPSessionTimeout>90000</RTSPSessionTimeout>
			<RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
			<RTSPBindIpAddress></RTSPBindIpAddress>
			<RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
			<RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
			<IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
			<Properties>
			</Properties>
		</RTP>
		<MediaCaster>
			<Properties>
			</Properties>
		</MediaCaster>
		<MediaReader>
			<Properties>
				<Property>
					<Name>randomAccessReaderClass</Name>
					<Value>com.wowza.wms.plugin.amazonaws.ec2.mediacache.MediaCacheRandomAccessReaderAmazonEC2</Value>
				</Property>
				<Property>
					<Name>bufferSeekIO</Name>
					<Value>true</Value>
					<Type>Boolean</Type>
				</Property>
			</Properties>
		</MediaReader>
		<MediaWriter>
			<Properties>
			</Properties>
		</MediaWriter>
		<LiveStreamPacketizer>
			<Properties>
			</Properties>
		</LiveStreamPacketizer>
		<HTTPStreamer>
			<Properties>
			</Properties>
		</HTTPStreamer>
		<Repeater>
			<OriginURL></OriginURL>
			<QueryString><![CDATA[]]></QueryString>
		</Repeater> 
		<Modules>
			<Module>
				<Name>base</Name>
				<Description>Base</Description>
				<Class>com.wowza.wms.module.ModuleCore</Class>
			</Module>
			<Module>
				<Name>properties</Name>
				<Description>Properties</Description>
				<Class>com.wowza.wms.module.ModuleProperties</Class>
			</Module>
			<Module>
				<Name>logging</Name>
				<Description>Client Logging</Description>
				<Class>com.wowza.wms.module.ModuleClientLogging</Class>
			</Module>
			<Module>
				<Name>flvplayback</Name>
				<Description>FLVPlayback</Description>
				<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
			</Module> 
			<Module>
				<Name>ModuleStreamNameAlias</Name>
				<Description>ModuleStreamNameAlias</Description>
				<Class>com.wowza.wms.plugin.streamnamealias.ModuleStreamNameAlias</Class>
			</Module>
		</Modules>
		<Properties>
			<Property>
				<Name>aliasMapFileStream</Name>
				<Value>${com.wowza.wms.context.VHostConfigHome}/conf/aliasmap.stream.txt</Value>
			</Property>
			<Property>
				<Name>aliasMapFilePlay</Name>
				<Value>${com.wowza.wms.context.VHostConfigHome}/conf/aliasmap.play.txt</Value>
			</Property>
			<Property>
				<Name>aliasMapPathDelimiter</Name>
				<Value>/</Value>
			</Property>
			<Property>
				<Name>aliasMapNameDelimiter</Name>
				<Value>=</Value>
			</Property>
			<Property>
				<Name>aliasMapDebug</Name>
				<Value>true</Value>
				<Type>Boolean</Type>
			</Property>
		</Properties>
	</Application>
</Root>

I haven’t changed anything else, its a clean Wowza EC2 which I started up this morning.

More information:

From this page:

Direct RTSP URL:

rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov

  • Works on Galaxy 9000

  • Does not work on Galaxy Tab

  • Does not work on Xperia 1100

  • Does not work on Motorola Xoom

Direct HTTP URL to sample file:

https://www.wowza.com/_h264/BigBuckBunny_175k.mov

  • Works on Galaxy 9000

  • Works on Galaxy Tab

  • Does not work on Xperia 1100

  • Works on Motorola Xoom

I am assuming this is always the exact same file, served over different protocols, so it is something with Wowza’s RTSP protocol that’s weird.

Is there a place I can file a bug report with more details?