默认不支持https的问题
使用默认的配置生成的.framework是不支持https播放链接的,如果要支持,需要重新编译ijk。(重新编译后为动态库,支持iOS8+)
// cd 到ijkplayer的文件夹
./init-ios-openssl.sh
./init-ios.sh
cd ./ios
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
编译完成后,打开IJKMediaPlayer
选中其中的IJKMediaFrameworkWithSSL
target,修改工程配置中的bitCode配置为NO。注意Release模式。
编译成功后即可得到支持https的framework。
播放音视频后,再次回到前台会中断其他APP的后台音乐播放
这个问题的原因是ijkplayer代码中有个IJKAudioKit
是单例,会监听AVAudioSessionInterruptionNotification
通知,并修改AVAudioSession的Active. 我们要做的就是在shutDown播放器后,移除这个监听。
在IJKAudioKit.h
中添加方法
// fix: 进入前台后 打断其它APP播放的音乐
- (void)removeAudioSessionObserver;
IJKAudioKit.m
中添加
- (void)removeAudioSessionObserver {
if (!_audioSessionInitialized) {
return;
}
_audioSessionInitialized = NO;
[self setActive:NO];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:AVAudioSessionInterruptionNotification
object:[AVAudioSession sharedInstance]];
}
由于IJKAudioKit.h
这个头文件并未暴露在framework中,还需要修改IJKFFMoviePlayerController / IJKMPMoviePlayerController / IJKAVMoviePlayerController
的-(void)shutdown;方法中调用一次. 如:
- (void)shutdown
{
if (!_mediaPlayer)
return;
// 这里调用
[[IJKAudioKit sharedInstance] removeAudioSessionObserver];
[self stopHudTimer];
[self unregisterApplicationObservers];
[self setScreenOn:NO];
[self performSelectorInBackground:@selector(shutdownWaitStop:) withObject:self];
}
网友评论