天天看點

live555-發送直播流-步驟

說明

1. FramedSource 抽象類把音視訊的幀資料作為資料源。

2. H264 使用 H264VideoRTPSink 類來消費,也就是把H264資料打包成RTP包。

3. AAC 使用 MPEG4GenericRTPSink 類,來消費。也就是把AAC打包成RTP包。

4. RTP包中可以可以含有一個音視訊幀,也可以含有多個音視訊幀。

5. 繼承 OnDemandServerMediaSubsession 來管理RTSP會話,

6. 會話主要有兩個功能。一個是主要是建立會話的子會話,子會話用來傳輸音頻或視訊流。

7. 會話還有一個功能是 建立對應的資料消費者,也就是把音視訊打包成RTP包。

步驟:

1. 繼承 OnDemandServerMediaSubsession 類

1.1 實作 createNewStreamSource (建立資料源,也就是一個或者多個音視訊流),這裡傳回的是 FramedSource 的執行個體,也就是實作的子類。

如果是H264需要使用H264VideoStreamFramer來把自己實作的FramedSource 子類做一個封裝。類似

H264VideoStreamFramer::createNew(envir(), liveSource);      

H264VideoStreamFramer用來傳回一幀資料,也就是你可以不用一幀一幀的H264資料給live555,H264VideoStreamFramer負責解析出一幀。

如果是AAC,則直接傳回自己實作的 FramedSource 子類即可。

2. 繼承 FramedSource 類,作為AAC和H264的資料的消費者。可以建立多個執行個體。

envir().taskScheduler().scheduleDelayedTask(1000, (TaskFunc *) deliverFrame0, this);