I am upgrading my video app, In this app, I used mpmovieplayer to play video, All functionality working properly, but i have one major problem memory issue,
When i play video from server memory goes to 50 mb, then after play anthor video memory increase 50 to 70 MB. Every time i play new video memory increase.
I have release mpmovieplayer object in viewdiddisapper, remove observer but not work any of them
func startplaying()
{
if a >= 0 && a <= videoID.count - 1
{
player = MPMoviePlayerController(contentURL: self.url)
if defaults?.bool(forKey: "Rotation") == true
{
player?.view.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height)
}
else
{
player?.view.frame = self.movieplayer.frame
}
self.img.isHidden = false
defaults.set(videoTitle[a], forKey: "play_video")
player?.scalingMode = MPMovieScalingMode.aspectFill
player?.controlStyle = MPMovieControlStyle.none
player?.movieSourceType = MPMovieSourceType.streaming
player?.initialPlaybackTime = 0.0
player?.initialPlaybackTime = 0.0
defaults.set(false, forKey: "Shuffle")
if self.slid > 0.0
{
player?.currentPlaybackTime = TimeInterval(self.slid)
}
let origImage2 = UIImage(named: "play_normal");
let tintedImage2 = origImage2?.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
if self.a == 0 && self.pause.image(for: UIControlState()) == tintedImage2 {
player?.pause()
}
else
{
if a == 0
{
player?.prepareToPlay()
}
else
{
player?.prepareToPlay()
}
}
defaults?.removeObject(forKey: "bValue")
defaults.set(a, forKey: "aValue")
if self.url != nil
{
let asset = AVURLAsset(url: self.url!, options: nil)
let genImg = AVAssetImageGenerator(asset: asset)
genImg.appliesPreferredTrackTransform = true
var time = asset.duration
time.value = 50000
do
{
try refImg = genImg.copyCGImage(at: time, actualTime: nil)
}
catch
{
}
}
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(SimpleplayerViewController.updateTime), userInfo: nil, repeats: true)
self.view.addSubview((player?.view)!)
NotificationCenter.default.addObserver(self, selector: #selector(SimpleplayerViewController.RepeatSongs(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,object:player)
}
}
Can any one give me proper solution how can i solve this issue.