今天记录一下 ijk ,ijk 默认不支持播放 RTSP 的,下面就说一下如何配置 ijk 让其支持播放 RTSP
1. 在桌面创建一个文件夹,打开终端 cd (文件夹路径)
2.输入命令: git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
3.输入命令:cd ijkplayer-ios
4.输入命令:git checkout-Blatest k0.8.0
5. 修改module-lite.sh文件:打开该文件,找到
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-protocol=rtp" 修改成后面的就支持rtsp协议了 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp" 修改之后在下面添加一行 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp" (打开rtsp音视频分离器),然后保存。
6.输入命令: cd /Users/xue/Downloads/RTSP/ijkplayer-ios/config
7.输入命令:rmmodule.sh//删除原来的
8.输入命令:ln -smodule-lite.shmodule.sh //用修改过的替换
9.修改源文件 ijkplayer-ios/ijkmedia/ijkplayer/ff_ffplay.c 中搜索 packet_queue_get_or_buffering 找到一下代码:
找到上面的代码之后修改成一下的代码:
static int packet_queue_get_or_buffering(FFPlayer*ffp, PacketQueue*q, AVPacket*pkt,int*serial,intfinished){
while(1) {
intnew_packet = packet_queue_get(q, pkt,1, serial);
if(new_packet <0){
new_packet = packet_queue_get(q, pkt,0, serial);if(new_packet <0)return-1;
}elseif(new_packet ==0) {
if(!finished)
ffp_toggle_buffering(ffp,1);
new_packet = packet_queue_get(q, pkt,1, serial);if(new_packet <0)return-1;
}if(finished ==*serial) {
av_free_packet(pkt);continue;
}else
break;
}return 1;
}
10. 编译 输入命令:./init-ios.sh
11.输入命令:cd ios
12.输入命令:./compile-ffmpeg.sh clean
13.输入命令:./compile-ffmpeg.shall
14.打开 ijkplayer-ios -> ios -> IJKMediaPlayer 工程编译模拟器和真机,分别编译一遍。 然后 show in finder IJKMediaFramework.framework 找到两个库的位置,在进行下面的合并
15.将编译出来的库进行合并 bogon:Products zxwzsw$ lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework 执行之后得到想要的framework
16.把生成的ijk库放到你要使用的工程中,并添加一下的库:
17.接下来就是使用了
以上参考:http://blog.csdn.net/ethan_xue/article/details/74001475?utm_source=itdadao&utm_medium=referral