Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ios版怎么连续播放呢? #76

Closed
boluomeng opened this issue Sep 23, 2014 · 9 comments
Closed

ios版怎么连续播放呢? #76

boluomeng opened this issue Sep 23, 2014 · 9 comments

Comments

@boluomeng
Copy link

ios版只能每次重新生成一个播放器播放一个新地址,而且可能导致下一个视频在上一个资源回收中造成无声音现象,请问有什么好的解决方法吗

@bbcallen
Copy link
Contributor

如果是压制参数完全相同的视频,可以用ffmpeg的concat协议。

@boluomeng
Copy link
Author

如果不同,那只能关闭后再重新开启一个播放器?

@bbcallen
Copy link
Contributor

目前是。

@boluomeng
Copy link
Author

那再麻烦请帮我看下我这样回收资源有问题吗?
-(void)playAD:(NSURL *)url{

self.adplayer = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil];
self.adplayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.adplayer.view setFrame:self.bounds];
[self.adplayer.view insertSubview:self atIndex:0];

[self installMovieNotificationObservers];

[self.adplayer prepareToPlay];
[self.adplayer play];

}
-(void)closeADplayer{
if (self.adplayer) {
if ([self.adplayer isPlaying] || [self.adplayer isPreparedToPlay]) {
[self.adplayer stop];
}
[self.adplayer shutdown];
}
[self removeMovieNotificationObservers];
}

@bbcallen
Copy link
Contributor

还差一个
[player.view removeFromSuperview];

@boluomeng
Copy link
Author

这个流程可以正常播放,但是存在一定的出错概率,主要在音频解码上,蹦过两次。还有就是shutdown过程在下一段视频播放后才执行完,导致无声音的异常。

@bbcallen
Copy link
Contributor

  1. 方便的话,请提供崩溃的堆栈。
  2. 按照你的描述,你是在shutdown还没完成的时候,就打开下一个视频么?

按照目前的仿 MPMoviePlayerController 接口的方式,是不保证多实例共存的安全性的。

@boluomeng
Copy link
Author

http://pan.baidu.com/s/1mgzEGBI可以看下我的DEMO 崩溃信息没有保存下来 是有一定概率出现崩溃

@bbcallen
Copy link
Contributor

你的调用方式没有什么问题,试试把 IJKFFMoviePlayerController 里的 shutdown 改成下面的代码看看

  • (void)shutdown
    {
    if (!_mediaPlayer)
    return;

    [self setScreenOn:NO];

    ijkmp_stop(_mediaPlayer);
    ijkmp_shutdown(_mediaPlayer);
    ijkmp_dec_ref_p(&_mediaPlayer);
    }

注意:这样修改可能导致主线程被卡一下。
另外:如果是真机调试的话,看看xcode -> organizer -> devices -> Device Logs里面能不能找到崩溃日志

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants