| | |
| | | } |
| | | |
| | | void LivePusher::sendAudioHeader() { |
| | | uint8_t *packet = new uint8_t[2]; |
| | | packet[0] = 0x12; |
| | | packet[1] = 0x8; |
| | | pushAAC(packet,2,RTMP_GetTime() - start_time); |
| | | free(packet); |
| | | |
| | | uint8_t *data;int size; |
| | | mediaEncoderCall->getAudioSeqData(&data,&size); |
| | | if(size == 0){ |
| | | data = new uint8_t[2]; |
| | | data[0] = 0x12; |
| | | data[1] = 0x08; |
| | | } |
| | | pushAAC(data,2,RTMP_GetTime() - start_time); |
| | | free(data); |
| | | } |
| | | |
| | | void LivePusher::pushAAC(uint8_t *data, int size, uint32_t time) { |
| | | //LOGE("sendFrame pushAAC 0x%02X 0x%02X 0x%02X 0x%02X %d",data[0],aacData[1],aacData[2],aacData[3],size); |
| | | //LOGE("sendFrame pushAAC 0x%02X 0x%02X 0x%02X 0x%02X %d",data[0],data[1],data[2],data[3],size); |
| | | |
| | | if(isLive != 1){ |
| | | return; |
| | |
| | | output[offset++] = 0xAF; // SoundFormat: AAC, SoundRate: 44.1kHz, SoundSize: 16-bit, SoundType: Stereo |
| | | output[offset++] = data[0] == 0x12 ? 0x00:0x01; //aac raw data |
| | | |
| | | //flv VideoTagBody --raw aac data |
| | | memcpy(output + offset, data, size); // data + AAC_ADTS_HEADER_SIZE -> data, |
| | | // (adts_len - AAC_ADTS_HEADER_SIZE) -> size |
| | | |
| | | memcpy(output + offset, data, size); // data + AAC_ADTS_HEADER_SIZE -> data, |
| | | // (adts_len - AAC_ADTS_HEADER_SIZE) -> size |
| | | |
| | | //previous tag size |
| | | addFooter(output,offset += size,body_len + FLV_TAG_HEAD_LEN); |