If streaming video to an iOS device, do I have to use HTTP Live Streaming? Is HDS supported? The problem is we have limited storage space and HTTP Live Streaming would require us to have more video files. Can someone give me some elucidation on these matters?
If your app will stream more than 10 minutes of video Apple requires that you use HTTP Live Streaming to deliver the video, otherwise your app will be rejected when you submit it to the app store. (This happened to me the first time I submitted my app, before I knew about this requirement.)
From the HTTP Live Streaming Overview:
Warning iOS apps submitted for distribution in the App Store must
conform to these requirements.
If your app delivers video over cellular networks, and the video
exceeds either 10 minutes duration or 5 MB of data in a five minute
period, you are required to use HTTP Live Streaming. (Progressive
download may be used for smaller clips.)
If your app uses HTTP Live Streaming over cellular networks, you are
required to provide at least one stream at 64 Kbps or lower bandwidth
(the low-bandwidth stream may be audio-only or audio with a still
image).
These requirements apply to iOS apps submitted for distribution in the
App Store for use on Apple products. Non-compliant apps may be
rejected or removed, at the discretion of Apple.
iOS devices support HTTP progressive download for .mp4 files, the server could be simply Apache or Nginx. The user experience is quite similar to HTTP live streaming.
RTSP is also possible. You can migrate live555 to iOS platform as the RTSP client, as use DarwinStreamingServer as the RTSP server.
I think that HTTP progressive download is the alternative solution. We already done it through a simple HTTP server. For RTSP or other type of protocol you have to implement it by yourself.
David
Related
Is it possible to play rstp video&audio on ionic (cordova) ?
If so, how can we accomplish it ?
I want to stream live rstp with my ionic app.
With many audio and video features you are dependent on the underlying devices capabilities and rules.
Specifically, iOS devices require you to use HLS at this time, if your app is to work on a mobile network (https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW5):
Requirements for Apps
Warning: iOS apps submitted for distribution in the App Store must conform to these requirements.
If your app delivers video over cellular networks, and the video exceeds either 10 minutes duration or 5 MB of data in a five minute period, you are required to use HTTP Live Streaming. (Progressive download may be used for smaller clips.)
If your app uses HTTP Live Streaming over cellular networks, you are required to provide at least one stream at 64 Kbps or lower bandwidth (the low-bandwidth stream may be audio-only or audio with a still image).
These requirements apply to iOS apps submitted for distribution in the App Store for use on Apple products. Non-compliant apps may be rejected or removed, at the discretion of Apple.
There do exist apps which appear to be able to play RTSP on iOS (e.g. https://itunes.apple.com/us/app/rtsp-player/id1070125481?mt=8 ) so it is not clear if they comply with the duration size rules above or this is just an example of Apple's 'discretion'.
Android devices should support RTSP (depending on version and possibly model etc) - https://developer.android.com/guide/appendix/media-formats.html, although Android media players can be tricky (look through stackoverflow question around video playback on Android).
I am working on an iOS application to stream live video from iPhone to a media server and then make it available to a larger audience using RTSP.
Which protocol or method I should use to send the video stream to a server.
Thanks.
HTTP Live streaming is not designed for you needs, it's for server->clients + I won't comment about huge delay it implies
You better check RTSP or RTMP protocol and LivU blog
For Celluar
Apple seems to make a distinction between apps that are used for just streaming content from servers and those that are used for some type of conferencing.
I think VOIP types are safe, and it seems like gocoder presenter types apps don't have issues either. There's no official page detailing this, but there is some mention under what apples considers VOIP app.
No app has issues if its over wifi only.
I am checking one question in SO, which is this, and I thought a question can iPhone also play this files or it will only support M3U8 for live streaming.
I recommend checking out the RadioTunes SDK. You may have a one time payment, but it's a great streaming solution library you can drop into your application. I used it for one of my previous clients who wanted to create a Radio Streaming app and he was very satistifed
http://yakamozlabs.com/products/radiotunes
So, I recently submitted my first iphone app to Apple.
I did not stream my videos and they are over 10 minutes long, so my app was denied because I did not use HTTP Live Streaming.
So, we stream live videos every week. Those files are stored somewhere, but I am a little unsure of where. I want the video files that I made a feed for to be converted into streamed videos. But I don't want to use Apple's HTTP Live software. I do not know how to code into streamed video.
Is there anyway to either figure out where my streamed files are storing or is there a software that will convert videos into streamed video? Will take any suggestions.
Thanks
The main problem is that you must use HTTP Live Streaming if you wan't your app to be approved, and also be aware of the Apple restrictions (you must set different bitrates, one of 64kbps or lower).
If you don't want to use Apple tools, you can use ffmpeg. Take a look at ioncannon.net http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
With Apple tools is easier. You just need mediafilesegmenter/mediastreamsegmenter.
There is also professional services out there, but not free, that will take care of all the process.
If you don't know where are your files, maybe you can use a sniffer and check where is your computer "listening to".
The easiest solution is to simply require that your users be on WiFi in order to watch the videos. The 10 min. / 5MB restriction only applies to video that is sent over Cellular networks, not WiFi. See Apple's "Reachability" code for an example of how to test the user's network connection at run-time.
I have an app that is playing archived *.mov files from a server. Some of them are longer than 10 minutes. Is this ok? Can anyone point me to the guidelines for playing video?
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW5
Requirements for Apps
If your app delivers video over cellular networks, and the video exceeds either 10 minutes duration or 5 MB of data in a five minute period, you are required to use HTTP Live Streaming. (Progressive download may be used for smaller clips.)
If your app uses HTTP Live Streaming over cellular networks, you are required to provide at least one stream at 64 Kbps or lower bandwidth (the low-bandwidth stream may be audio-only or audio with a still image).
These requirements apply to iOS apps submitted for distribution in the App Store for use on Apple products. Non-compliant apps may be rejected or removed, at the discretion of Apple.