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[1024x768], *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;
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);
}
ios-Adding a recording command method to the server for the LIBRTMP library