How to play large duration video files in iPhone/iPad - iphone

I am developing a video app. Some video files having a long (43 minuite) duration and some files are less than 10 min duration.
Apple suggested if video duration is more than 10 min they want me use Httplive streaming. I am placing video control in web view and am loading the URL.
If I used large video files in MP4 format, will I get any problems? And what video size do I need to use that both iPhone and iPad orientates.
Can you suggest me video size, duration, and formats. Thanks in advance.

Apple will reject any app that doesn't use HTTP Live Streaming for videos longer than 10 minutes. So if you're using the native video player then you'll have to encode your video files accordingly.

Related

How to play video while it is downloading using AVPro video in unity3D?

I want to play the video simultaneously while it is downloading via unitywebrequest. Will AVPro video support this? If so please provide me some guidance, as i am new to unity and avpro video. I can able to play the video which is downloaded fully through FullscreenVideo.prefab in AVPro demo. Any help will be much appreciated.
There are two main options you could use for displaying the video while it is still downloading.
Through livestream
You can stream a video to AVPro video using the "absolute path or URL" option on the media player component, then linking this to a stream in rtsp, MPEG-DASH, HLS, or HTTP progressive streaming format. Depending on what platforms you will be targeting some of these options will work better than others
A table of which file format supports what platform can be found in the AVProVideo Usermanual that is included with AVProVideo from page 12 and onwards.
If you want to use streaming you also need to set the "internet access" option to "required" in the player settings, as a video cannot stream without internet access.
A video that is being streamed will automatically start/resume playing when enough video is buffered.
This does however require a constant internet connection which may not be ideal if you're targeting mobile devices, or unnecessary if you're planning to play videos in a loop.
HLS m3u8
HTTP Live Streaming (HLS) works by cutting the overall stream into shorter, manageable hunks of data. These chunks will then get downloaded in sequence regardless of how long the stream is. m3u8 is a file format that works with playlists that keeps information on the location of multiple media files instead of an entire video, this can then be fed into a HLS player that will play the small media files in sequence as dictated in the m3u8 file.
using this method is usefull if you're planning to play smaller videos on repeat as the user will only have to download each chunk of the video once, which you can then store for later use.
You can also make these chunks of video as long or short as you want, and set a buffer of how many chunks you want to have pre-loaded. if for example you set the chunk size to 5 seconds, with a buffer of 5 videos the only loading time you'll have is when loading the first 25 seconds of the video. once these first 5 chunks are loaded it will start playing the video and load the rest of the chunks in the background, without interrupting the video (given your internet speed can handle it)
a con to this would be that you have to convert all your videos to m3u8 yourself. a tool such as FFMPEG can help with this though.
references
HLS
m3u8
AVPro documentation

IPhone Video Streaming Problem

I want to implement video streaming in my project. So, Is there any tutorial that works? Videos are stored at server side. So, to fetch video using url and play it on MPMoviePlayerViewController .
Thank You.
For video streaming in iPhone you can use ffmpeg concept.FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library.Have a look at these sites for samples,
https://github.com/FFmpeg/FFmpeg
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
Check this solution, it's a full audio and video streamer.

MPMoviePlayerController on iPhone - Streaming or progressive download?

In my iPhone App I need to show the videos which are in Flash format.
I asked the client to change the videos in iPhone compatible format. They stored the converted the video on a server and I am able to show the video using MPMoviePlayerController.
Now we need to store around 25 videos (Each around 300 MB) and access them via iPhone App using MPMoviePlayerController
I have to help the client figure out how or where to host these files.
So some questions are there
1) What all things need to be taken care on server side for better performance? Is there any document available for this?
2) The video will be streaming or progressive download ? Do we have a choice?
I am sure many people would have done it. So kindly help in this regard.
if video is more then 10 minutes then you have to use streaming not progressive and you have to prepared playlist on server side with .m3u8 format. you just need to pass this url with .m3u8 into the mpmediaplayercontroller and this will take care of every thing from client side.
For server side functionality you can search apple code for streaming video.

Live streaming using iPhone and saving the video

What technology is used for live streaming of video from iPhone cam to a distant server.
I want to show live streaming as well as save the video, once it gets finished.
The way its being done right now is by capturing the frames as the movie is taken (right now its being done through a screenshot private api, but now with 4.0 u can grab the frame of videos a better way, cant discuss that right now tho), then take some number of frames, encode them using ffmpeg or some ohter encoding library, send the video chunks to your server and live stream them using the live http streaming...thats a birdeye view of how its being done..hope it helps

How to ensure YouTube API only returns videos that are streamable on iPhone?

I'm building some YouTube search functionality into an iPhone app and want to ensure that I only receive results that will be playable on the device. According to the Searching for videos section in the API reference doc this seems to be relatively straightforward:
The format parameter specifies that videos must be available in a particular video format. Your request can specify any of the following formats:
I've tried setting "format=1" to limit to:
RTSP streaming URL for mobile video playback. H.263 video (up to 176x144) and AMR audio.
This provides a high proportion of playable videos but some are still unplayable and I'm worried that it's not returning others that would be playable.
When I leave the format field blank I receive an even higher proportion of non-streamable URLs.
This does not sound appropriate. My understanding is that iPhone does not stream RTSP rather it supports Apple's HTTP Streaming of segmented files for live and HTTP streaming of MPEG4 video files via range requests. I'd also expect the video to be H.264 and AAC audio.
Your setting sounds appropriate for low-end cellphones In particular, the 176x144 is a QCIF resolution commonly used on non-smartphones.
When you look at the XML file returned by a call to
http://gdata.youtube.com/feeds/api/videos/<your video id>
then you will notice that videos which are not playable on the iPhone will have the following tag:
<yt:state name='restricted' reasonCode='limitedSyndication'>Syndication of this video was restricted by its owner.</yt:state>
Just make sure to look for the above tag and ignore the video if the tag is present.