一、如果还未搭建好项目,可参考前面的文档
二、设置config
IJKPlayer默认不支持RTSP,需要改配置。
- 第一步:找到 module-lite.sh 文件夹
- 第二步:修改配置,如果存在,则进行修改;如果不存在,则添加。
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
- 第三步:保存后,用新的module.sh进行替换
cd /Users/xue/Downloads/RTSP/ijkplayer-ios/config
rm module.sh //删除原来的
ln -s module-lite.sh module.sh //用修改过的替换
- 第四步:修改源文件
函数如下
static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int *finished)
{
//-------------------- remove old ------------------------
/*
assert(finished);
if (!ffp->packet_buffering)
return packet_queue_get(q, pkt, 1, serial);
while (1) {
int new_packet = packet_queue_get(q, pkt, 0, serial);
if (new_packet < 0)
return -1;
else if (new_packet == 0) {
if (q->is_buffer_indicator && !*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_packet_unref(pkt);
continue;
}
else
break;
}
return 1;
*/
//-------------------- add new ------------------------
while (1) {
int new_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;
}else if (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;
}
- 第五步:重复ijkplay(一)的操作,再重新编译一遍
- 第六步:合并生成新的Framework
参考:
ijkplyer (一)- iOS集成基本使用
基本完成!!!