To serve a video file over a slow network, you should be using HTTP Live Streaming (HLS).
Your code need not change, however the URL you call it with should point to the stream's index file. The index file amounts to a playlist of individual (often 10 second) MPEG Transport Stream files.
Explore the details on Apple's HTTP Live Streaming page, or get an overview and list of server software at Wikipedia.
As an aside, you don't show the declaration of videoPlayerController
, but you need to make sure that it's a property of your view-controller, or in some way make sure that its lifetime is going to be as long as the video is being played for.