Wowza 3.0.3 + JW Player 5.9 MP4 Streaming

Hi All,

I’ve come across several bits and pieces of instruction but none seem to make sense to a noob like me so I’ve decided to start my own thread.

I’ve got root access to my server and have installed Wowza Media Server 3 Monthly Edition 3.0.3 build882 on my server.

I know the “live” application is working because I’m able to run WireCast and do live streams successfully.

However, now I need to be able to schedule pre-recorded MP4 videos for streaming. This is giving me a lot of problems.

On my site, www.itv.sg, I’m using JW Player as my media player. Currently the server is playing a select xml playlist of videos randomly. This is not what I want. I need to create a TV Channel.

I’ve already configured a new Wowza application, “prerecord” and linked it to a public_html folder “mv”

I also already have in place a PHP uploading mechanism that allows me to upload video files and playlists into this same folder.

My JW player already reads the active playlist location from a mySQL database and uses it as its “file” attribute.

This is what I need now:

  1. I need to be able to stream “live” my playlist

  2. I’ll need to be able to change this playlist on the fly without having to restart the Wowza Server

How do I configure my server to do this. And what kind of playlist do I now require to do this?

Where do I go from here?

Take a look at this scheduler example:

https://www.wowza.com/docs/how-to-schedule-streaming-with-wowza-streaming-engine-streampublisher

Richard

This will create streams in the “prerecord” application, as configured.

This is server listener which runs at server start. There are many approaches, and a HTTPProvider that your PHP process loads is one way.

Basic API:

https://www.wowza.com/docs/stream-class-example

Real-time controller:

https://www.wowza.com/docs/how-to-control-stream-class-streams-dynamically-modulestreamcontrol

Another approach to switching:

https://www.wowza.com/docs/how-to-switch-streams-using-stream-class-streams

Right put the .smil in the content location, StorageDir

You can set start and length as in the example provided

Richard

Kumar,

It is very very helpful to run Wowza in stand-alone (/bin/startup.bat) mode so that you can see log output in the console.

If that doesn’t help, restart Wowza so the ServerListener runs, then try to playback the stream.

Then zip up conf and logs folders and send them to support@wowza.com

Include a link to this thread.

Richard

The mp4 files and streamschedule.smil are found in the public_html/mv/

This above wrong. is The mp4 files and .smil file should be where you have set the application’s StorageDir: /home/itv/public_html/mv

Richard

I see the problem, you have set the start value to “-2”. Change that to “0”. Use start value “-2” if the item’s source is a live stream. The item’s source in your case is a static file

Richard

You don’t need the Transcoder. The cupertino url is:

http://itv.sg:1935/prerecord/Stream1/playlist.m3u8

Make the Application.xml /LiveStreamPacketizers include “cupertinostreamingpacketizer”, as configured in this tutorial

https://www.wowza.com/docs/how-to-set-up-live-streaming-using-an-rtmp-based-encoder

Richard

Thanks Richard,

Please bear with me here.

As per instructions on the page,

I’ve downloaded, unzipped and moved wms-plugin-collection.jar into the WowzaMediaServer’s lib folder and restarted the Wowza Server.

Before restarting, I’ve also made the following changes:

Added Server Listener:

com.wowza.wms.plugin.collection.serverlistener.ServerListenerStreamPublisher

Added Property:

PublishToApplication

prerecord

  1. Will this affect my live application which every now and then I will still need to use when using Wirecast? Can I still use it without any complication?

  2. At this point, I also understand that I will need to restart the Wowza Server everytime i upload a new SMIL playlist. This is not ideal. I would like to simply upload a new playlist via PHP and expect the server to read that new playlist. The PHP i know how to use. How do I get Wowza to read the updated playlists without restarting the Server?

  3. My SMIL file is now in the “mv” folder which has been configured to be the of the “prerecord” Application. How do I configure JW Player to read Stream1 of this particular playlist.

  4. Do I need to specify the start and length values? I would like the list of MP4 videos to be streaming according to the TV schedule.

Thank you.

Richard,

I’m still getting a Stream not found: Stream1 error at www.itv.sg/player-test.html.

My streamschedule.smil file is in the /mv folder which has been defined as the StorageDir of the “prerecord” application.

How can I check if my “prerecord” application has been set up correctly?

Do I need to create an instance of the application for it to work correctly?

Kumar

I’m starting to think if my configurations are all correct. I’m having some problems using some of the debugging tools because I’m not very adept with the CentOS server I’m using.

I installed the Wowza Media server in the root directory

It’s configured in /usr/local/WowzaMediaServer

My html folders are located at /home/itv/public_html/

The mp4 files and streamschedule.smil are found in the public_html/mv/

I’ve configured the of my “prerecord” Application to /home/itv/public_html/mv

In addition, I’ve made the above mentioned changes to the Server.Xml file.

Wirecast is able to stream to the prerecord application without any issue.

Am I doing it correctly?

Hi Richard,

This is the output I’m getting from the standalone:

INFO server comment - CMDInterface now listening: [any]:8083

INFO vhost vhost-start defaultVHost -

INFO server comment - defaultVHost threads[h/t]:120/80 home:/usr/local/WowzaMediaServer

INFO vhost comment defaultVHost Bind attempt ([any]:1935:4)

INFO vhost comment defaultVHost Bind successful ([any]:1935)

INFO vhost comment defaultVHost Bind attempt ([any]:554:4)

INFO vhost comment defaultVHost Bind successful ([any]:554)

INFO vhost comment defaultVHost Bind attempt ([any]:8086:1)

INFO vhost comment defaultVHost Bind successful ([any]:8086)

INFO server comment - ServerListenerStreamPublisher Started.

INFO application app-start definst prerecord/definst

INFO server comment - ServerListenerStreamPublisher: Streame name is ‘Stream1’

INFO stream create - -

INFO stream publish Stream1 -

INFO server comment - scheduled playlist: Stream1 on stream: Stream1 for:Fri Dec 11 16:00:00 SGT 2009

INFO server comment - ServerListenerStreamPublisher Scheduled: Stream1 for: 2009-12-11 16:00:00

INFO server comment - Wowza Media Server is started!

INFO server comment - ServerListenerStreamPublisher Scheduled stream is now live: Stream1

INFO server comment - Stream.switch[prerecord/definst/Stream1]: index: 0 name:mp4:SSeowEpisode 25_qtp.mp4 start:-2 length:60

INFO server comment - ServerListenerStreamPublisher PlayList Item Start: mp4:SSeowEpisode 25_qtp.mp4

INFO session connect-pending 116.15.210.142 -

INFO session connect 116.15.210.142 -

INFO stream create - -

INFO server comment - Stream.switch[prerecord/definst/Stream1]: index: 0 name:mp4:SSeowEpisode 25_qtp.mp4 start:-2 length:60

INFO server comment - ServerListenerStreamPublisher PlayList Item Start: mp4:SSeowEpisode 25_qtp.mp4

INFO server comment - Stream.switch[prerecord/definst/Stream1]: index: 0 name:mp4:SSeowEpisode 25_qtp.mp4 start:-2 length:60

INFO server comment - ServerListenerStreamPublisher PlayList Item Start: mp4:SSeowEpisode 25_qtp.mp4

INFO server comment - Stream.switch[prerecord/definst/Stream1]: index: 0 name:mp4:SSeowEpisode 25_qtp.mp4 start:-2 length:60

INFO server comment - ServerListenerStreamPublisher PlayList Item Start: mp4:SSeowEpisode 25_qtp.mp4

However in the test page from which its supposed to play, I see nothing but a constant loading:

www.itv.sg/player-test.html

Any ideas?

Yes Richard, they are in the same locations. I’ve confirmed from the output above that the prerecord application is correctly configured. Now the issue is the playback. As in the above output, I see that the stream is starting and the playlist item is loaded.

However, all I see is loading but the video never actually plays.

Perfect! Thank you so much Richard.

Now I’m going to start work on the dynamic control of the playlist!

Just a quick question though. How do I get this working on the iPhone?

I’ve tried enabling the transcoder with the transcoder

I’ve tried using

http://itv.sg:1935/prerecord/ngrp:Stream1_all/playlist.m3u8 for my iOS devices but without any success.

That did it. Thanks a lot! I’ll return after cracking my skull on the dynamic playlist updating.