.avi file video not play in MPMoviePlayerController ios player

913 Views Asked by At

I'm using MPMoviePlayerController to play avi formatted video files. The audio works, but the video doesn't. Why is that?

2

There are 2 best solutions below

2
remyr3my On

I think you cannot play .avi file using MPMoviePlayerController in ios.

As .avi format contents are not possible to decode the video on a iOS device.

1
Oleh Zayats On

MPMoviePlayerViewController only supports .mov, .mp4,.mpv, and .3gp and is deprecated.

From Apple's documentation:

The MPMoviePlayerViewController class is formally deprecated in iOS 9. (The MPMoviePlayerController class is also formally deprecated.) To play video content in iOS 9 and later, instead use the AVPictureInPictureController or AVPlayerViewController class from the AVKit framework, or the WKWebView class from WebKit.

You should use AVPlayerViewController:

import AVFoundation
import AVKit

let videoPath = "https://video.avi"
let videoURL = URL(string: videoPath)
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
present(playerViewController, animated: true) {
    playerViewController.player?.play()
}

or just add AVPlayer in as a subview:

let videoURL = URL(string: videoPath)
let player = AVPlayer(url: videoURL!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
view.layer.addSublayer(playerLayer)
player.play()

it supports the following audio/video formats: .mpeg, .mpeg-2-video, .avi, .aifc-audio, .aac-audio, .mpeg-4, .au-audio, .aiff-audio, .mp2, .3gpp2, .ac3-audio, .mp3, .mpeg-2-transport-stream, .3gpp, .mpeg-4-audio