EasyRTMP CPU占用问题调优(一)
EasyRTMP
前面介紹過EasyRTMP是高效的跨平臺的RTMP推送庫。
libEasyRTMP的基本操作
RTMP_Alloc() :用于創建一個RTMP會話的句柄。?
RTMP_Init():初始化句柄。?
RTMP_SetupURL():設置會話的參數。?
RTMP_Connect():建立RTMP鏈接中的網絡連接(NetConnection)。?
RTMP_ConnectStream():建立RTMP鏈接中的網絡流(NetStream)。?
RTMP_Read():讀取RTMP流的內容。?
客戶端可以在調用RTMP_Connect()之前調用RTMP_EnableWrite(),然后在會話開始之后調用 RTMP_Write()。?
RTMP_Pause():流播放的時候可以用于暫停和繼續?
RTMP_Seek():改變流播放的位置?
當RTMP_Read()返回0 字節的時候,代表流已經讀取完畢,而后可以調用RTMP_Close()?
RTMP_Free():用于清理會話。?
所有的數據都使用 FLV 格式進行傳輸。一個基本的會話需要一個RTMP URL。RTMP URL 格式如下所示:?
rtmp[t][e|s]://hostname[:port][/app[/playpath]]?
支持普通的,隧道的,以及加密的會話。?
其他附加的選項可以在URL的后面添加以空格為間隔符的“key=value”形式的字符串。
推送視頻流是CPU較高
-
LibRTMP的結構體RTMP的成員是有m_outChunkSize,并且在RTMP_Init函數中被初始化了默認值128,然后整個LibRTMP代碼沒有改變m_outChunkSize的接口函數,內部也沒有改變m_outChunkSize的實現邏輯,也沒有發送改變塊大小的消息給流媒體服務器的代碼邏輯,關閉Nagle加如此小的塊大小會導致很多小包,而以太網的MTU是1500,這樣如果用在播放客戶端由于主要是接收媒體流到也沒有什么,但是如果用在發布媒體流的推流客戶端網絡效率就太低了,并且IP小包太多還會引起流媒體的服務器軟中斷升高,導致內核占用的CPU過高。
-
調整輸出塊大小的函數
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 調用調整輸出塊大小的函數的時機
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
本文感謝:http://www.cnblogs.com/oldmanlv/p/5487146.html
獲取更多信息
郵件:support@easydarwin.org
WEB:www.EasyDarwin.org
Copyright ? EasyDarwin.org 2012-2016
總結
以上是生活随笔為你收集整理的EasyRTMP CPU占用问题调优(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用ffmpeg合并视频文件的三种方法
- 下一篇: 软件授权协议