JasonAddFour
JasonAddFour

Reputation: 163

Does AVPlayer auto adjust when playing a m3u8 playlist?

After spending some time setting up a transcoding process on AWS I am finding that the loading times for videos has not been lowered as expected with HLS (m3u8).

It seems that if I am using AVPlayer directly, without AVPlayerViewController, I a may need to do the managing of the video stream quality myself? My understanding was that if I had a m3u8, that things would be done automatically and the best quality would be used depending on network conditions / device / etc?

So far it seems that the loading times are the same if not slightly worse than without the m3u8 if AVPlayer is used as is.

To better understand what's going on I've been trying out a few things.

1) While doing this has worked to reduce loading times, I would prefer to do a bit more than just lower it all the way when not on wfifi:

self.player?.currentItem?.preferredPeakBitRate = 1

This seems to give me a pretty low quality video but it loads pretty quickly. I have yet to figure out how to detect the actual bitrate being used though (since setting this value has improved loading times dramatically, I am going to assume AVPlayer does not handle the adjustments on its own?).

2) Also, haven't had any luck with (causes infinite spinner, even with the preferredPeakBitRate set to 1):

self.player.automaticallyWaitsToMinimizeStalling = false

3) I am open to using a third party library that might handle this, found something called VKVideoPlayer that might do some of this?

Thanks

Upvotes: 1

Views: 2326

Answers (1)

casillas
casillas

Reputation: 16803

It's possible now in iOS8 and onwards.

Following copied from Apple's documentation:

The desired limit, in bits per second, of network bandwidth consumption for this item. SWIFT: var preferredPeakBitRate: Double OBJECTIVE-C: @property(nonatomic) double preferredPeakBitRate

Set preferredPeakBitRate to non-zero to indicate that the player should attempt to limit item playback to that bit rate, expressed in bits per second.

If network bandwidth consumption cannot be lowered to meet the preferredPeakBitRate, it will be reduced as much as possible while continuing to play the item.

Upvotes: 1

Related Questions