When I load a video from the internet (10-40MB large) I am unable to provide a smooth playing experience.
My AVPlayer either loads the whole video and then plays it,
Since iOS 10.x, you can make some buffer settings, for example you can decide how many seconds you'll need to buffering your video:
if #available(iOS 10.0, tvOS 10.0, OSX 10.12, *) {
avPlayer?.automaticallyWaitsToMinimizeStalling = .playWhenBufferNotEmpty
//preferredForwardBufferDuration -> default is 0, which means `AVPlayer` handle it independently, try more seconds like 5 or 10.
playerItem.preferredForwardBufferDuration = TimeInterval(5)
}