Re-stream RPT to HTTP Live streaming

Hello everybody.

I have a problem streaming video to iPhones and iPads.

I have a server with CentOS installed and it recieves live video stream with RTP protocol on 8888 port. In VLC I’ve used rtp://@:8888 to open that stream.

I need to transcode this stream to H.264 video and AAC audio with MPEG-TS incapsulation so iPhones and iPads could play it.

Is it possible to do with Wowza? I’ve used VLC, but it’s not fail-safe and there is a bug with idr_pic_id (x264 bug) which is the purpose of problems with playing stream. I’m looking for alternative and want to know, if it possible to re-stream my RTP stream to HTTP Live streaming with Wowza Media Server. And if it’s possible, how to configure Wowza for this aim. I’ve tried to find any guide, but I didn’t find any suitable guide.

I’ll appreciate any help.

Thanks.

Wowza does not do any transcoding. If the original RTP stream is encoded as H.264/AAC, Wowza can packetize it and transmit it for iPhone/iPad via HLS. To do this, you’d want to use the rtp-live application type and enable cupertino packetizer and streamer in your Application.xml.

Several folks posting here have had success with VLC and ffmpeg for transcoding a live stream, but those methods aren’t officially supported. If you dig around, you can probably find a config that works for you.

-ian

Upgrade to Wowza 2.2.0 and it should fix these errors.

Charlie

An http url ending with /playlist.m3u8 is for Cupertino (IPhone, etc) streaming. If won’t work in a browser.

Try the Wowza LiveVideoStreaming Example player:

Server: rtmp://[wowza-address]:1935/live

Stream: mpegts.stream

Richard

Try reducing the keyframe frequency, and make sure it is a multiple of chunkDurationTarget, which is 10 by default, unless you add these properties and change it:

Configure Apple HLS packets for HTTP streaming)

Wowza adds this bandwidth info, and it should be very accurate if you are using 2.1.2.06. If you aren’t you can get Patch 6 here:

This package will help to create the required 64kbs stream:

Create streams compliant with Apple App Store)

But note that AAC audio is required, and the audio track must be 64kbs.

You should be able to get rid of these warnings:

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

7: #EXTINF:16,

~~

But these are hard to get rid of completely, but a few should be okay:

WARNING: Media segment bitrate outside of target playlist bitrate by 46.371 % (93677 vs. 64000 bps, limit is 10 %).

10: media_1713.ts?wowzasessionid=329465679

Richard

Did you use a text editor for the smil? One possibility is that there are word processor characters in the file.

Richard

If you are doing origin-edge (?) and this is a liverepeater-edge, yes, use the appropriate LiveStreamPacketizer

With the auto-generate you don’t need a smil file if you play one video that has an 64kbs AAC audio track. Wowza auto-generates it. You can use a smil where one video has the 64kbs AAC audio track that you mark with wowza-audio-only=true, but you wouldn’t also make its system-bitrate 64000. In your example above, you might as well not use the smil.

Richard

On the edge, only use cupertinostreamingrepeater. Remove the others.

Completely take out the auto-generate configuration since you don’t need it. Use the smil item pointing to the 64kbs audio stream, as you were doing but without the wowza-audio-only=“true”

Richard

The StreamType should be “liverepeater-edge”

Richard

For Wowza’s role in your process, this is the essential guide:

https://www.wowza.com/docs/how-to-publish-and-play-a-live-stream-mpeg-ts-based-encoder)

Richard

You see “killed” in the logs, as below?

Wowza only logs the first few chunks. But chunking should continue.

Richard

Great, thanks for the update, glad it’s working.

Richard

One way to test it in a browser would be to use Safari and an HTML5

http://www.w3schools.com/html5/tag_video.asp

If you do src=“http://…m3u8”, you should be able to see the HLS video. Only works in Safari/Mac, though, and you need a pretty recent version of OSX.

Thanks for the info!

See http://discovervideo.com/transcoder

Now working with adaptive bit rate streaming (Smoothstreaming)

ping me at rmavro@discovervideo.com and I’ll send you a live link. Don’t want to post it here (it is bandwidth limited right now).

Thanks for the reply.

Original RTP stream is encoded as H.264/MP3, I’m not sure that iPhones would “understand” this, but I’m ready to try.

As I understood you the right way, you’re advicing to use this guide: https://www.wowza.com/quickstart_2_1_2.html#live-ip-camera step-by-step, but enabling cupertino and streamer, right? Is that guide is fully for me?

Could you advice, how to set Wowza for listening 8888 RTP stream on port? I should put rtp://@:8888 into [install-dir]/content/camera.stream?

Thanks again.

Ok, now that’s what I’ve done.

I’ve followed this guide: https://www.wowza.com/docs/how-to-publish-and-play-a-live-stream-mpeg-ts-based-encoder - it contains rtp stream as input and mpeg-ts stream as output, so I’ve decided to use this guide.

In step: “4. Using a text editor create the file [install-dir]/content/mpegts.stream set the contents of this file to udp://0.0.0.0:10000 (if you are receiving a multicast stream, change the 0.0.0.0 part to the multicast address of the stream)”

I’ve typed rtp://0.0.0.0:8888

I made everything the same as in that guide and when I’m trying to open http://[wowza-address]:1935/live/mpegts.stream/playlist.m3u8 in browser, it says that page not found.

Why is that? What I’ve done wrong? I’ve opened 1935 port and 8086 - is it necessary to open any other ports?

Original RTP stream is encoded with VLC and it’s H.264/AAC (RTP/MPEG Transport Team as destination).

Help me if somebody met with such case of using Wowza.

Thanks.

Thanks to everybody who helped me.

I’ve done it - with the guide I linked above, I recieve RPT/MPEG-TS packed stream with H.264/AAC and successfully re-stream it to iPhone app.

But there is one more thing - I have mistiming of sound and video. Sound has a delay in ~0.5-0.8 sec. It’s quite a big amount. Is there a way to avoid this?

Hi again. I’ve done with sound delay and now I’m going to approve my iPhone application.

I’m running media validator and it says that my playlist is wrong. Here are the warnings:

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

5: #EXTINF:17,

~~

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

7: #EXTINF:18,

~~

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

9: #EXTINF:17,

~~

WARNING: Media segment bitrate outside of target playlist bitrate by 78.100 % (113984 vs. 64000 bps, limit is 10 %).

6: media_1709.ts?wowzasessionid=329465679


WARNING: Media segment bitrate outside of target playlist bitrate by 68.377 % (107761 vs. 64000 bps, limit is 10 %).

8: media_1710.ts?wowzasessionid=329465679

WARNING: Media segment bitrate outside of target playlist bitrate by 100.224 % (128143 vs. 64000 bps, limit is 10 %).

10: media_1711.ts?wowzasessionid=329465679


WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).

5: #EXTINF:18,

~~

WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).

7: #EXTINF:17,

~~

WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).

9: #EXTINF:16,

~~

WARNING: Media segment bitrate outside of target playlist bitrate by 49.130 % (95443 vs. 64000 bps, limit is 10 %).

10: media_1712.ts?wowzasessionid=329465679

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

5: #EXTINF:17,

~~

WARNING: INF tag with duration 2 seconds or more above the playlist’s target duration (10.000 seconds).

7: #EXTINF:16,

~~

WARNING: Media segment bitrate outside of target playlist bitrate by 46.371 % (93677 vs. 64000 bps, limit is 10 %).

10: media_1713.ts?wowzasessionid=329465679


WARNING: INF tag with duration 2 seconds or more above the playlist's target duration (10.000 seconds).

5: #EXTINF:16,

~~

WARNING: Media segment bitrate outside of target playlist bitrate by 49.681 % (95795 vs. 64000 bps, limit is 10 %).

10: media_1714.ts?wowzasessionid=329465679

WARNING: Media segment bitrate outside of target playlist bitrate by 84.836 % (118295 vs. 64000 bps, limit is 10 %).

10: media_1715.ts?wowzasessionid=329465679

The content of my playlist is (I’ve downloaded it with browser):

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000

http://ip:1935/live/mpegts.stream/playlist.m3u8?wowzasessionid=1459010386

How it knows what BANDWIDTH option to use? I didn’t set it up.

Can I modify playlist settings for my stream to be correct? And if yes, then how?

Thanks for the help.