ijkplayer(二)- iOS播放流媒体rtsp

一、如果还未搭建好项目,可参考前面的文档

ijkplyer (一)- iOS集成基本使用

二、设置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集成基本使用

基本完成!!!

参考文件:

IOS IJKPlayer播放RTSP

IJKPlayer播放器支持https流程

ijkplayer在rtsp协议下使用经验

你可能感兴趣的:(ijkplayer(二)- iOS播放流媒体rtsp)