zoukankan      html  css  js  c++  java
  • 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);

    }

     

  • 相关阅读:
    vue iview 导入excel文件(upload)
    iview table 中用根据不同状态改变颜色(用render)
    vue项目中导出excel表格数据
    iview table 中 render 时间格式化
    微信浏览器的部分特效更接近浏览器IE 9
    ABP 拦截器不工作
    vue + webpack 添加的引用不编译成ES6的问题
    把vue组件添加到body下
    vue+vuex+router实现阻止浏览器回退
    webpack使用vue-moment-libs 在PC微信浏览器下显示空白
  • 原文地址:https://www.cnblogs.com/liyanyan/p/5639429.html
Copyright © 2011-2022 走看看