Ejemplo n.º 1
0
 void
 RTMPSession::sendConnectPacket()
 {
     RTMPChunk_0 metadata = {{0}};
     metadata.msg_stream_id = kControlChannelStreamId;
     metadata.msg_type_id = RTMP_PT_INVOKE;
     std::vector<uint8_t> buff;
     std::stringstream url ;
     if(m_uri.port > 0) {
         url << m_uri.protocol << "://" << m_uri.host << ":" << m_uri.port << "/" << m_app;
     } else {
         url << m_uri.protocol << "://" << m_uri.host << "/" << m_app;
     }
     put_string(buff, "connect");
     put_double(buff, ++m_numberOfInvokes);
     m_trackedCommands[m_numberOfInvokes] = "connect";
     put_byte(buff, kAMFObject);
     put_named_string(buff, "app", m_app.c_str());
     put_named_string(buff,"type", "nonprivate");
     put_named_string(buff, "tcUrl", url.str().c_str());
     put_named_bool(buff, "fpad", false);
     put_named_double(buff, "capabilities", 15.);
     put_named_double(buff, "audioCodecs", 10. );
     put_named_double(buff, "videoCodecs", 7.);
     put_named_double(buff, "videoFunction", 1.);
     put_be16(buff, 0);
     put_byte(buff, kAMFObjectEnd);
     
     metadata.msg_length.data = static_cast<int>( buff.size() );
     sendPacket(&buff[0], buff.size(), metadata);
 }
Ejemplo n.º 2
0
 void
 RTMPSession::sendHeaderPacket()
 {
     std::vector<uint8_t> outBuffer;
     
     std::vector<uint8_t> enc;
     RTMPChunk_0 metadata = {{0}};
     
     put_string(enc, "@setDataFrame");
     put_string(enc, "onMetaData");
     put_byte(enc, kAMFEMCAArray);
     put_be32(enc, 5+5+2); // videoEnabled + audioEnabled + 2
     
     put_named_double(enc, "duration", 0.0);
     put_named_double(enc, "width", m_frameWidth);
     put_named_double(enc, "height", m_frameHeight);
     put_named_double(enc, "videodatarate", static_cast<double>(m_bitrate) / 1024.);
     put_named_double(enc, "framerate", m_frameDuration);
     put_named_double(enc, "videocodecid", 7.);
     
     
     put_named_double(enc, "audiodatarate", 131152. / 1024.);
     put_named_double(enc, "audiosamplerate", m_audioSampleRate);
     put_named_double(enc, "audiosamplesize", 16);
     put_named_bool(enc, "stereo", m_audioStereo);
     put_named_double(enc, "audiocodecid", 10.);
     
     
     put_named_double(enc, "filesize", 0.);
     put_be16(enc, 0);
     put_byte(enc, kAMFObjectEnd);
     size_t len = enc.size();
     
     
     put_buff(outBuffer, (uint8_t*)&enc[0], static_cast<size_t>(len));
     
     
     metadata.msg_type_id = FLV_TAG_TYPE_META;
     metadata.msg_stream_id = kAudioChannelStreamId;
     metadata.msg_length.data = static_cast<int>( outBuffer.size() );
     metadata.timestamp.data = 0;
     
     sendPacket(&outBuffer[0], outBuffer.size(), metadata);
     
 }