亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

視頻RTMP推流實踐 rtmp播放器解析接口


視頻RTMP推流實踐 rtmp播放器解析接口

文章插圖
對應RTMP推流,業(yè)界有很多開源方案 。如使用FFMPEG推流,librtmp(rtmp-dump),gstream推流 。由于ffmpeg和gstreamer比較龐大,僅僅用來推流,有大炮打蚊子之嫌 。針對客戶端特別是瘦客戶端,使用librtmp(rtmp-dump)方案更加精簡,更加高效 。
本方案基本思路:
RTMP視頻推流流程
1. 下載并編譯librtmp 。
下載地址:http://rtmpdump.mplayerhq.hu/download/
編譯后產(chǎn)生一個librtmp.so 庫
2. 調(diào)用librtmp,封裝一個視頻層Wrapper_RtmpLib.cpp,該類定義如下:
1classWrapper_RtmpLib 2 3{ 4 5public: 6 7Wrapper_RtmpLib(char*url); 8 9~Wrapper_RtmpLib();1011intOpen();1213intSendData(char*data,intdataLength,unsignedinttimeStamp,intdebug=-1);1415intIsConnect();1617intClose();1819private:2021intInitSockets();2223voidCleanupSockets();2425intpushSPSPPS(char*sps,intspsLen,char*pps,intppsLen,intm_stream_id,unsignedinttimeStamp);2627intpushVideoData(char*data,intdataLen,boolkeyFrame,intm_stream_id,unsignedinttimeStamp);2829intGetStartPrixLen(char*Pack,intoffest);3031char*rtmpUrl=NULL;3233RTMP*m_pRtmp=NULL;3435NALU*CopyNALU(NALU*src);3637voidFreeNALU(NALU*nalu);3839};3. Wrapper_RtmpLib對外提供RTMP推流接口 。
基本使用步驟:
1. 定義一個Wrapper_RtmpLib對象test
2. Test.open(),與服務器建立rtmp信令相關連接
3. int SendData(char * data,int dataLength, unsigned int timeStamp,int debug = -1);發(fā)送RTMP數(shù)據(jù)
注意data,必須是一個完整的NAL單元 。所以應用程序調(diào)該接口前必須解析出NAL單元 。
下面是一個h264裸文件推送RTMP過程 。
基本思路如下:
讀文件—-解析NAL單元—利用 SendData發(fā)送一個完成的NAL單元完成推流
編譯main.cpp Wrapper_RtmpLib.cpp 并鏈接librtmp.so生成可執(zhí)行文件h2642rtmp.
編譯生成可執(zhí)行文件
運行可執(zhí)行程序推流
./h264tortmp avc.h264 rtmp://192.168.1.226:8085/live/1830562240700540100 25
使用該方案注意:
1. SendData 必須是一個完整的NAL單元 。如果是文件需要解析或網(wǎng)絡流必須解析出NAL單元
2. 時間戳采用間隔時間 。即時間戳按每幀時間間隔遞增,可能因為網(wǎng)絡抖動或者1000/幀率不是幀率會存在累計誤差 。該demo因為不存在音視頻同步,時間戳影響不大 。
3.如果是云主機,在云主機內(nèi)不能推公網(wǎng)IP,而要推內(nèi)網(wǎng)IP 192.168.1.226,客戶端訪問需要外網(wǎng)IP 。
客戶端播放效果如下:
RTMP流web端播放效果


    以上關于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: