• iOS-为librtmp库添加向服务器发送录制命令方法


    为librtmp库添加向服务器发送录制命令方法是基于librtmp库而写,recordData为录制命令,recordName、confID、timestamp为录制命令参数。

    SAVC(recordName);

    SAVC(confID);

    SAVC(timestamp);

    #define AVS(str) {str,strlen(str)}

    int

    startRecord(RTMP *r, RTMPPacket *cp, char *recordData,  char *recordName,  char *confID, char *timestamp)

    {

        RTMPPacket packet;

        char pbuf[1024], *pend = pbuf + sizeof(pbuf);

        char *enc;

        

        if (cp)

            return RTMP_SendPacket(r, cp, TRUE);

        

        const AVal avaldata = AVS(recordData);

    const AVal avalName = AVS(recordName);

    const AVal avalConfID = AVS(confID);

    const AVal avalTimeStamp = AVS(timestamp);

        

        packet.m_nChannel = 0x04; /* source channel (invoke) */

        packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM;

        packet.m_packetType = RTMP_PACKET_TYPE_INFO; /* DATA */

        packet.m_nTimeStamp = 0;

        packet.m_nInfoField2 = r->m_stream_id;

        packet.m_hasAbsTimestamp = 0;

        packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE;

        

        enc = packet.m_body;

     

        enc = AMF_EncodeString(enc, pend, &avaldata);

    if (!enc)

    return FALSE;

     

        *enc++ = AMF_OBJECT;  //AMF_OBJECT代表命令带有参数

     

        enc = AMF_EncodeNamedString(enc, pend, &av_recordName, &avalName);

         if (!enc)

            return FALSE;

     

        enc = AMF_EncodeNamedString(enc, pend, &av_confID, &avalConfID);

        if (!enc)

            return FALSE;

     

        enc = AMF_EncodeNamedString(enc, pend, &av_timestamp, &avalTimeStamp);

        if (!enc)

            return FALSE;

     

    if (enc + 3 >= pend)

            return FALSE;

        *enc++ = 0;

        *enc++ = 0; /* end of object - 0x00 0x00 0x09 */

        *enc++ = AMF_OBJECT_END;

     

     

        packet.m_nBodySize = enc - packet.m_body;

        

        return RTMP_SendPacket(r, &packet, TRUE);

    }

     

  • 相关阅读:
    web.config常用配置
    Asp.net高级程序设计之WEB窗体(3)
    Asp.net高级程序设计之.NET开发模型(2)
    Asp.net高级程序设计之ASP.NET简介(1)
    vs2005新建类,自定义模板信息(转载)
    Petshop详解之数据库设计
    Probabilistic Graphical Models: Principles and Techniques下载 Lei
    一些推荐系统包 Lei
    [转]Learning to Rank for IR的评价指标—MAP,NDCG,MRR Lei
    office2010每次启动都要配置的解决办法 Lei
  • 原文地址:https://www.cnblogs.com/liyanyan/p/5639429.html
Copyright © 2020-2023  润新知