AVPlayer doesn't switch from Audio-Only to Video stream - ios

I'm using AVPlayer to play the HTTP Live stream. Often I observed that AVPlayer switches to Audio-Only mode when the network is Low, but when the network recovers to High, it doesn't switch to Video stream or takes very long to switch to Video stream.
I did a test to observe the behaviour closely by simulating the Low network conditions using "Network Link Conditioner" in my iPad and my observations are same i.e AVPlayer doesn't switch to Video stream or takes a very long time.
Is anyone else facing this problem? or Am I doing something wrong?
Thanks in advance,
Vasu

Related

How can I forbid AVPlayer switching to audio only tracks in HLS stream

The main source of my worries comes from the m3u8 manifests I use to play video in my app.
They contain variants with audio & video and some containing only audio.
The problem occurs when I load this type of manifest in avplayercontroller/avplayer while having a bad network or low bandwidth.
In every case avplayer witch to the tracks with no video to clear some bandwidth, resulting in no image appearing on the player.
I would like to know if there is a way to force avplayer or avplayercontroller to only focus on the manifest tracks containing audio and video and forbid audio only tracks to be selected, loaded, and played.
Thank you in advance to any tips or pointers you can give me on this subject.

iOS AVPlayer too slow when streaming online video

I'm using AVPlayer to play online video content. Server supports byte ranges as according to RFC 2616.
Thing is that it takes too long for AVPlayer to have playable status.
For a 1GB video (duration = 1h 45min) it takes 1min-2min to start playback. I notice that seek works rather good after that.
Playing same video on default Android media player takes 15sec to start.
It seems as if AVPlayer downloads chunks in different parts of media space for better seek support. But I want video to start as soon as possible. Is such a thing possible - to configure AVPlayer for quicker play?

Capture when recording audio, stops to receiving audio AVAudioRecorder

There is a talking cat app well known for iOS devices, in which you speak your voice and he repeats. Analyzing this app, you'll see that it stops talking when you stop talking, that is, it stops to capture the audio when not receive another voice.
I was giving a analyzing the methods of AVAudioRecorder class, and not found any method in which to capture when the User stop to talking or recorder stops to receive external audio.
How can I capture when the audio recorder stops to receiving audio.
Process the audio stream as it is coming through. You can look at the frequency and volume of the stream. From there you can determine if the user has stopped talking.
I suggest frequency and volume as the recorder still picks up background audio. If the volume drops dramatically then the sounds the recorder is picking up must be further away from the device than before. The frequency can also lend itself to:
A.) Filter out the background audio in the audio used to replay the audio with a pitch change or any other changes. etc.
B.) I do not know the limits of frequency for the average human. But this covers the use case where the user has stopped talking, but have moved the device in such a way that the recorder still picks up load shuffling from moving fingers near the mic.

Increase video buffer for HLS (Apple HTTP Live Stream), possible?

We're using Wowza 3.5 in our server to stream videos, and JW Player for the player.
The streaming of videos are working fine when viewed in iPhone and iPad.
What we are trying to do now is, when a video is playing on an iOS device and a user paused it we would like the video to buffer (download) while it is paused so even if the user lost connection to the internet he could still watch the video until. Currently it is only buffering for 30 seconds to 1 minute.
How could we increase this buffer time to possibly buffer / download the whole video while the player is paused?
Is this even possible in HLS?
This is not possible when you're playing a video using HLS in a webpage using the default browser.
You need to create your own app to control the video buffer when playing videos using HLS.
There is an App with Wowza called nDVR, you can pause, play and record using nDVR. Also I think you can increase the buffer length in application.xml, make sure.

IOS - Live streaming using MPMoviePlayerController losing video but not audio

I am Streaming a live video (.m3u8) with MPMoviePlayerViewController, however during playback sometimes the video is lost and only the Quicktime logo is displayed, however the audio still goes on.
This happens at random times, sometimes never, maybe when the internet is not as strong as it needs, but console doesn't log any errors or changes in the playback.
Is there a way to notice when this happens and to recover the video image from the streaming?
This is how HTTP live streaming is designed to work. It will progressively choose higher or lower quality streams based on the strength of the internet connection. If the connection is not fast enough the "last resort" is to continue to play audio but no video. The only way to recover the video image in this case is to improve the speed of the internet connection.

Resources