欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

初始化RTMP推流

程序员文章站 2022-07-14 18:17:58
...

一、RTMP直播推流流程图
初始化RTMP推流二、初始化RTMP流程

void *callBackPush(void *data)
{
    RtmpPush *rtmpPush = static_cast<RtmpPush *>(data);
    //分配空间
    rtmpPush->rtmp = RTMP_Alloc();
    //初始化
    RTMP_Init(rtmpPush->rtmp);
    //设置推流URL
    rtmpPush->rtmp->Link.timeout = 10;
    //设置可写状态
    rtmpPush->rtmp->Link.lFlags |= RTMP_LF_LIVE;
    //链接服务器
    RTMP_SetupURL(rtmpPush->rtmp, rtmpPush->url);
    //链接流
    RTMP_EnableWrite(rtmpPush->rtmp);
    //如果服务器没有启动,那么会连接不上rtmp 的url
    if(!RTMP_Connect(rtmpPush->rtmp, NULL))
    {
        LOGE("can not connect the url");
        goto end;
    }
    //如果有其他地方给服务器推流,那么再次推流会连接不上服务器的
    if(!RTMP_ConnectStream(rtmpPush->rtmp, 0))
    {
        LOGE("can not connect the stream of service");
        goto end;
    }

    LOGD("链接成功, 开始推流");
    //开始推流

//    while(true)
//    {}




    end:
    //关闭链接
    RTMP_Close(rtmpPush->rtmp);
    //释放资源
    RTMP_Free(rtmpPush->rtmp);
    rtmpPush->rtmp = NULL;
    pthread_exit(&rtmpPush->push_thread);
}

总结:
1、需要添加网络权限,如果没有添加网络权限,那么调用RTMP_Connect(rtmpPush->rtmp, NULL)该方法就会返回失败

  <uses-permissionandroid:name="android.permission.INTERNET"/>

2、当我们推流过程中有,我们再次推流那就会连接不上服务器的

2020-06-06 13:13:30.538 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:13:30.658 25770-25933/com.wq.livepusher E/wq892373445: can not connect the url
2020-06-06 13:13:47.910 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:13:49.846 25770-25957/com.wq.livepusher D/wq892373445: 链接成功, 开始推流
2020-06-06 13:14:00.396 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:14:10.911 25770-25969/com.wq.livepusher E/wq892373445: can not connect the stream of service
相关标签: 音视频