您的当前位置:首页正文

iOS用ijkplayer播RTSP流

来源:华拓网

1.在运行之前,需要部署环境

2.修改module-lite.sh文件

COMMON_FF_CFG_FLAGS =" $ COMMON_FF_CFG_FLAGS --disable - rtp protocol =“

  修改为--> 

COMMON_FF_CFG_FLAGS =" $ COMMON_FF_CFG_FLAGS --enable - rtp protocol =",

在这下面再加上这一行:

 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"

3.执行命令行

4.修改ff_ffplay.c文件

将这段代码

static int packet_queue_get_or_buffering(FFPlayerffp, PacketQueue *q, AVPacket *pkt, int *serial, int *finished)

{

assert(finished);

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_free_packet(pkt);

continue;

}

else

break;

}

return 1;

}

替换成

static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int finished)

{

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;

}

5.编译ffmpeg,

cd ijkplayer-ios

git checkout -B latest k0.5.1

./init-ios.sh

cd ios

./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all

编译时间比较久,请大家耐心等待,成功后就可以运行Demo了,编译成功后ios文件夹下面的目录是这样的

编译过程我的Xcode不知道怎么回事,老是报错,最后无奈之下就重装了Xcode,然后就没问题了,我这个菜鸟也不知道怎么回事,反正提示bin文件夹下面文件缺失,搞不懂

   另外需要大家注意一下,如果项目使用cocapod的话,我这边出现的问题如下图

找了半天也没找到原因,然后大神指点了我一下,在工程里添加libz.tdb,从而运行成功