1.
livevideocoresdkaudiounitrender ==>
micsource::inputcallback ==>
genericaudiomixer::pushbuffer
genericaudiomixer::mixthread() ==>
aacencode::pushbuffer ==>
split::pushbuffer ==>
aacpacketizer::pushbuffer
==> librtmpsessionmgr::pushbuffer
伺服器
brew install ffmpeg --with-ffplay
- (void)didprocessframe:(cmsamplebufferref)samplebuffer
else
[mvideofilterview renderframe:samplebuffer];
});cvpixelbufferref pixelbufferref =cmsamplebuffergetimagebuffer(samplebuffer);
m_camerasource->buffercaptured(pixelbufferref);
}if(self.rtmpsessionstate ==kvcsessionstatenone)
}
==> m_camerasource->setoutput(m_videosplit)
==> m_videosplit->setoutput(m_h264encoder);
==> m_h264encoder->setoutput(m_h264split);
==> m_h264split->setoutput(m_h264packetizer);
==> m_h264packetizer->setoutput(m_outputsession);
void iosrtmpsession::pushbuffer(const uint8_t* const data, size_t size, imetadata&metadata)dispatch_semaphore_signal(m_lock);
const iosrtmpmetadata_t inmetadata = static_cast(metadata);
unsigned
int uimsgtypeid = inmetadata.getdata();
if((rtmp_pt_audio != uimsgtypeid) && (rtmp_pt_video !=uimsgtypeid))
char* psendbuff = (char*)malloc(size);
if (psendbuff ==null)
memcpy(psendbuff, data, size);
int dts = inmetadata.getdata();
int pts =inmetadata.pts;
int iret = 0
;
if(rtmp_pt_audio ==uimsgtypeid)
else
if (rtmp_pt_video ==uimsgtypeid)
if (iret != 1
)
free(psendbuff);
}
2.使用rtmp協議(其他協議也類似)推流的大體流程如下:
建立rtmp連線到伺服器,成功後,建立另一個序列佇列(傳送佇列)。
rtmp協議,需要在首幀傳送 sps/pps和audiospecificconfig這2種特別的幀資料。
結束直播,關閉推流,釋放資源。
3.yuv
a.b.
@synchronized(self)self.previouspixelbuffer =cfretain(pixelbuffer);
}
- (void)didresignactive
- (void
) setupplayerbackgroundimage}}
}- (uiimage*)getuiimagefrompixelbuffer:(cvpixelbufferref)pixelbuffer
return
uiimage;
}
4.std:thread
voidglesvideomixer::start() );
}
3.ijkplayer
第28月第11天 vim b
1 首先以二進位制方式編輯這個檔案 vim b datafile 現在用 xxd 把這個檔案轉換成十六進位制 xxd 文字看起來像這樣 0000000 1f8b 0808 39d7 173b 0203 7474 002b 4e49 9 tt ni 0000010 4b2c 8660 eb9c ecac ...
第13月第10天 swift3 0
1 這一條簡直莫名其妙。大體意思就是,你這個型別 any 不是個陣列或者字典,不能按照下標取東西。 我之前通過一個方法預設建立了一個字典,編譯器也認為這是個字典,所以允許我取東西,但是現在編譯器翻臉了,說你必須告訴我這是個字典我才能讓你取東西。okok。 1 dic as nsdictionary ...
第26月第20天 springboot
1 pom xml中新增支援web的模組 org springframework boot spring boot starter web pom xml檔案中預設有兩個模組 spring boot starter 核心模組,包括自動配置支援 日誌和yaml spring boot starter ...