日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LiveRTMP内置IPCamera实现RTMP直播摄像机功能

發布時間:2024/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LiveRTMP内置IPCamera实现RTMP直播摄像机功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LiveRTMP

LiveRTMP是LiveQing團隊開發的一套支持Windows、Linux、arm、Android、iOS等各種平臺的高效RTMP推送庫。
LiveRTMP接收的是標準的H264流和AAC音頻流。可以單獨推送H264,也可以音視頻混合推送。
##內置進IPCamera
先初始化LiveRTMP和IPCamera的SDK,再調用IPCamera的SDK獲取IPCamera的實時視頻流。在實時流的回調中,調用LiveRTMP_SendPacket接口將音視頻流實時傳給LiveRTMP進行RTMP推送直播。值得注意的是如果需要推送音頻的話,音頻需要是AAC格式,如果沒有AAC流,可以通過第三方工具轉成AAC格式,如fdk-aac等。交叉編譯后內置進IPCamera內部,就可以將普通的IPCamera升級成RTMP直播攝像機。

Demo代碼

可參考代碼中LiveRTMP_SDK項目的代碼,這個Demo就是調用了攝像機的SDK獲取實時視頻流傳給LiveRTMP庫進行直播推送。如下代碼是SDK視頻流回調的處理,其他具體去下載代碼查看。

HI_S32 NETSDK_APICALL OnStreamCallback(HI_U32 u32Handle,HI_U32 u32DataType, HI_U8* pu8Buffer,HI_U32 u32Length,HI_VOID* pUserData) {HI_S_AVFrame* pstruAV = HI_NULL;HI_S_SysHeader* pstruSys = HI_NULL;if (u32DataType == HI_NET_DEV_AV_DATA){pstruAV = (HI_S_AVFrame*)pu8Buffer;if (pstruAV->u32AVFrameFlag == HI_NET_DEV_VIDEO_FRAME_FLAG){if(g_RtmpHandle == 0 ) return 0;if(pstruAV->u32AVFrameLen > 0){unsigned char* pbuf = (unsigned char*)(pu8Buffer+sizeof(HI_S_AVFrame));EASY_AV_Frame avFrame;memset(&avFrame, 0x00, sizeof(EASY_AV_Frame));avFrame.u32AVFrameLen = pstruAV->u32AVFrameLen;avFrame.pBuffer = (unsigned char*)pbuf;avFrame.u32VFrameType = (pstruAV->u32VFrameType==HI_NET_DEV_VIDEO_FRAME_I)?EASY_SDK_VIDEO_FRAME_I:EASY_SDK_VIDEO_FRAME_P;avFrame.u32AVFrameFlag = EASY_SDK_VIDEO_FRAME_FLAG;avFrame.u32TimestampSec = pstruAV->u32AVFramePTS/1000;avFrame.u32TimestampUsec = (pstruAV->u32AVFramePTS%1000)*1000;EasyRTMP_SendPacket(g_RtmpHandle, &avFrame);} }elseif (pstruAV->u32AVFrameFlag == HI_NET_DEV_AUDIO_FRAME_FLAG){if(g_RtmpHandle == 0 ) return 0;EASY_AV_Frame avFrame;memset(&avFrame, 0x00, sizeof(EASY_AV_Frame));avFrame.u32AVFrameFlag = EASY_SDK_AUDIO_FRAME_FLAG;if(pstruAV->u32AVFrameLen <= 4) return 0;if(EasyInitAACEncoder(EASY_SDK_AUDIO_CODEC_G711A) == 0){memset(m_pAACEncBufer, 0, 64*1024);unsigned int iAACBufferLen = 0;unsigned char* pbuf = (unsigned char*)(pu8Buffer+sizeof(HI_S_AVFrame)) + 4;if(Easy_AACEncoder_Encode(g_pAACEncoderHandle, (unsigned char*)pbuf, pstruAV->u32AVFrameLen-4, m_pAACEncBufer, &iAACBufferLen) > 0){avFrame.pBuffer = (Easy_U8*)(m_pAACEncBufer);avFrame.u32AVFrameLen = iAACBufferLen; avFrame.u32TimestampSec = pstruAV->u32AVFramePTS/1000;avFrame.u32TimestampUsec = (pstruAV->u32AVFramePTS%1000)*1000;EasyRTMP_SendPacket(g_RtmpHandle, &avFrame);}} }}elseif (u32DataType == HI_NET_DEV_SYS_DATA){pstruSys = (HI_S_SysHeader*)pu8Buffer;printf("Video W:%u H:%u Audio: %u \n", pstruSys->struVHeader.u32Width, pstruSys->struVHeader.u32Height, pstruSys->struAHeader.u32Format);}return HI_SUCCESS; }

獲取更多信息

郵件:support@liveqing.com

技術交流QQ群:615081503

咨詢電話:15156896292

LiveQing視頻流媒體無插件直播方案:www.liveqing.com

Copyright ? LiveQing Team 2016-2019

總結

以上是生活随笔為你收集整理的LiveRTMP内置IPCamera实现RTMP直播摄像机功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。