TAG:
如果你要自己开发流媒体服务器,那你必须需要自己去生成RTP DESCRIBE中的SDP config,以下是我的做法: 步骤: 详细代码如下:
if (!m_pContext->coded_frame->key_frame)
(韦国华)break; bool bFoundVOL = false; for (int i=0; i<out_size; i++) { if (m_pVideoEncBuffer[i] == 0x00 && m_pVideoEncBuffer[i+1] ==0x00 && m_pVideoEncBuffer[i+2] == 0x01 && m_pVideoEncBuffer[i+3] ==0xB0) { nStart = i; //FILE* fp = fopen("c:\\\\MPEG4-VOL.dat", "a+b"); //if (fp) //{ // fwrite(m_pVideoEncBuffer, sizeof(BYTE), out_size, fp); // fclose(fp); //} bFoundVOL = true; } if (!bFoundVOL) continue; if (m_pVideoEncBuffer[i] == 0x0 && m_pVideoEncBuffer[i+1] ==0x0 && m_pVideoEncBuffer[i+2] == 0x01 && m_pVideoEncBuffer[i+3] ==0xB6) { nEnd = i; // m_pContext->extradata = m_pVideoEncBuffer + nStart; m_pContext->extradata_size = nEnd - nStart; ////////////////////////////////////////////////////////////////////////// if (m_pContext->extradata_size > 65536) { av_log(m_pContext, AV_LOG_ERROR, "Too many extra data!\\n"); break; } char* config = new char[m_pContext->extradata_size*2+2]; memset(config, 0, m_pContext->extradata_size*2); for (int k = nStart; k < nEnd; k ++) { sprintf(config + (k-nStart)*2, "X", m_pVideoEncBuffer[k]); } szExtraData = config; delete[] config; config = NULL; break; } } |