Video quality selection in iOS - ios

I am working on video player app which streams video from m3u8 url.
Due to apple limitation, I can't set specific video quality during playtime or startup. I am curious because i can see this feature supported in Youtube iOS app.
Apple provides preferredPeakBitRate but it doesn't guarantee whether video will be played in that bitrate.
How do youtube able to achieve that video quality or maintaining specific video quality in iOS?
Just let me know if i am doing anything wrong or missing anything. Thanks in advance

Related

Fast video stream start

I am building an app that streams video content, something like TikTok. So you can swipe videos in table, and when new cell becomes visible the video starts playing. And it works great, except when you compare it to TikTok or Instagram or ect. My video starts streaming pretty fast but not always, it is very sensible to network quality, and sometimes even when network is great it still buffering too long. When comparing to TikTok, Instagram ... in same conditions they don't seam to have that problem. I am using JWPlayer as video hosting service, and AVPlayer as player. I am also doing async preload of assets before assigning them to PlayerItem. So my question is what else can I do to speed up video start. Do I need to do some special video preparations before uploading it to streaming service. (also I stream m3U8 files). Is there some set of presets that enables optimum streaming quality and start speed. Thanks in advance.
So theres a few things you can do.
HLS is apples preferred method of streaming to an apple device. So try to get that as much as possible for iOS devices.
The best practices when it comes to mobile streaming is offering multiple resolutions. The trick is to start with the lowest resolution available to get the video started. Then switch to a higher resolution once the speed is determined to be capable of higher resolutions. Generally this can be done quickly that the user doesn't really notice. YouTube is the best example of this tactic. HLS automatically does this, not sure about m3U8.
Assuming you are offering a UICollectionView or UITableView, try to start low resolution streams of every video on the screen in the background every time the scrolling stops. Not only does this allow you to do some cool preview stuff based off the buffer but when they click on it the video is already established. If thats too slow try just the middle video.
Edit the video in the background before upload to only be at the max resolution you expected it to be played at. There is no 4k resolution screen resolutions on any iOS device and probably never will be so cut down the amount of data.
Without getting more specifics this is all I got for now. Hope I understood your question correctly. Good luck!

Manual Bit rate control of video in swift

I wanted to implement a video quality control in video player in swift.I have used preferredPeakBitRate of avplayer item but I am not able to change the quality of video while the video is playing.I have the manifest file URL that contains different bit rates of video.Kindly suggest me any third party video player that used manual video quality control or tell me how I can achieve using avplayer in swift.

Video playback on cube Webgl / Three.js IOS

is it possible to get video playback working on a square with IOS?
Ideally the video would come from a youtube stream.
I have been searching but I cant find anything that seems to work.
My end goal is to make a WebVR web app that can play videos in IOS.
Thanks for any thoughts / advice.

How to set the video quality to low in Android Youtube API?

I am adding a function to play Android YouTube API to play videos in my app. The problem is that the video quality is automatically always set to highest quality available. But it causes lagginess when the internet is not good. Is there a way for me to set the quality to "auto" or specify a lower quality playback?

Youtube api and Samsung SmartTV App resolutions

im working on Smart TV app for Samsung which should use youtube api to play videos. Embedded videos will work only when app resolution and yt player size are 960x540 or below,
if I set higher resolution (1280x720 or 1920x1080) player stucks, behaves really slow, and videos will buffer infinitely.
Has anyone succeeded in embedding yt videos with higher resolution player?
Thx in advance.
Video player work in FullHD resolution in fullscreen regardless of widget resolution.
If you have troubles with buffering, check your connection speed. Try play file from local network to check that selected resolution and codecs hadled well by TV.
recently i found this case. The youtube apps working great on 720p resolution if the video length is below 10min, but longer than that for example 30min the player will stuck just like as you said.
When changing the app resolution to 540p the youtube player working great again for all videos. I suppose the youtube is using progressive download on their player and Smart TV storage itself is not enough to prepare the long video storage space with 720p resolution rendering.
The conclusion is when using flash player/youtube in apps the best at using 540p app resolution.
Thx all for answering,
in the end I used different approach which showed like best solution.
I used 720p resolution, and youtube cue video functionality.
Basically i cued video, and on "videoCued" event i called "playVideo" method.
This allowed player to get ready and initialize before playing video.

Resources