views:

249

answers:

2

Thank you for submitting APPNAME_HERE. We have reviewed your application and have determined that it cannot be posted to the App Store at this time because it is not using a baseline stream of 64 kbps for the HTTP Live Streaming protocol to broadcast streaming video. HTTP Live Streaming is required when streaming video feeds over the cellular network, in order to have an optimal user experience and utilize cellular best practices. This protocol automatically determines bandwidth available to users and adjusts the bandwidth appropriately, even as bandwidth streams change. This allows you the flexibility to have as many streams as you like, as long as 64 kbps is set as the baseline feed.

This is what I have gotten from Apple, eventhough I have a 48kbps, 64kbps, 128kbps AND 384kbps stream available. How do I set the baseline feed? The way my app works now is it loads the lowest available first and then scales upwards with the bandwidth. This is my index m3u8

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=48000
stream-soundonly.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
stream-64k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=128000
stream-128k.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=384000
stream-384k.m3u8

Apple is really being nitpicky

+3  A: 

We ran into the same issue. Apple doesn't only inspect your M3U8 file to ensure it complies. They also monitor your streams to make sure they are what you say they are. Our stream turned out to be higher-than-64K -- because we didn't factor in the audio bandwidth (a careless, but important oversight). Remember that 64K applies to the entire stream: Video + Audio <= 64000.

If you are in doubt, Apple also offers the same stream-monitoring software. If you ask them, they will provide you a link to it. At least they did to my group.

Andrew
Ok that may be, but my 48K m3u8 file is below 64k, so I could just replace that one in the list right?
hecta
Probably. Hook up a network monitor to find out for sure. I'd give it a try and resubmit. I'd also suggest that you send them an email. They are not fast about getting back to you (especially over a weekend) but they will explain exactly what the issue is and how to rectify it. You definitely do not want to leave that stream at 48K. It will look terrible and there are a lot of users on EDGE. You can switch streams after approval, but then you will have trouble if you need to update your app.
Andrew
Ok thanks for your help, Apple didn't respond yet. But do you mean with stream monitoring tool the "Media Stream Validator" from the connect.apple.com site?
hecta
Yes. That's it. If it reports you are going over, believe it and do what you can to get the numbers down. Usually it is a simple configuration mistake that causes the excess bandwidth. I believe you can still go slightly over without triggering any warnings and it's the warnings that Apple's engineers are going to be worried about.
Andrew
Having trouble getting my streams validated. I encode via ffmpeg 64 audio only, but I get warnings that my stream is at ~70-75
hecta
That sounds an awful lot like a 64K video stream + 11K audio stream. You should try dropping the video to around 53K and see if that has an effect.
Andrew
It's an audio-only stream with a still image which is 4kb big. That's what my 64k stream says: --Playlist target bitrate: 64.00 kbit/sAverage segment bitrate: 70.46 kbit/s (9.17 % of target)Audio codec: aac Audio sample rate: 44100 Hz --Do you know how much % above or below the target is acceptable?
hecta
Unfortunately, I don't. There's [a thread on Wowzamedia.com](http://www.wowzamedia.com/forums/showthread.php?t=9127) that says no warning is issued when bandwidth was 5.5% above target. But 70Kb/s for mostly audio is crazy high for a "low-bandwidth version". I don't know if your encoder allows down-sampling, but I'd recommend really cranking down your audio. If you're doing 44KHz @ 16b stereo, that would account for your overage. Dropping the sampling frequency to 22Kb/s will give you an immediate boost without badly affecting quality. You'll know better than me if you really need stereo.
Andrew
Okay thanks for your support. You were right 22kHz and a bitrate of about 48kbit/s is enough for sound. I just hope they approve the stream as long as it's smaller or equal 64kbit/s and not straight 64k +- 5%
hecta
A: 

Another thing that may be helpful is to factor in variable bitrate encoding, which means that it is difficult to predict exactly what the average and maximum bitrate will be for any given segment.

When encoding, set the target bitrate of your audio-only stream low enough so that no segments go above 64kbit/s (the right number takes a bit of trial and error).

Chris Livdahl
True, right now I'm using a CBR of 40k which still sounds ok on an iPhone. So add a still image and I'm still pretty much safe. Thanks for your thought
hecta