RTSP再学习 -- Hi3516A RTSP实例 分析
上一篇文章,講到了Hi3516A通過(guò)RTSP播放H.265視頻流的源碼。接下來(lái)對(duì)源碼分析一下。
這里推薦一個(gè)工具,參看:日常生活小技巧 -- 文件對(duì)比工具 Beyond Compare
(1)首先從 main 函數(shù)開始看起。
第一個(gè)為初始化 RTSP 服務(wù)器
(2)跳轉(zhuǎn)查看定義
上圖通過(guò) memset 置空一些結(jié)構(gòu)體,可以順便查看一下這些結(jié)構(gòu)體的定義。這不是重點(diǎn)
重點(diǎn)是創(chuàng)建了一個(gè)線程?pthread_create(&threadId, NULL, RtspServerListen, NULL);
(3)跳轉(zhuǎn)查看定義
看上圖可知為創(chuàng)建了一個(gè) TCP 服務(wù)器,這部分在講UNIX時(shí)講過(guò),參看:UNIX再學(xué)習(xí) -- TCP/UDP 客戶機(jī)/服務(wù)器
其中IP地址為本機(jī)IP,端口號(hào)為 554
綁定、監(jiān)聽,接受請(qǐng)求
最后創(chuàng)建了RTSP客戶端消息的線程 pthread_create(&threadIdlsn, NULL, RtspClientMsg, &g_rtspClients[i]);
(4)跳轉(zhuǎn)查看定義
上圖,包含好多函數(shù),什么暫停、銷毀、播放等等。不一一看了。
主要為接受的RTSP客戶端信息,我們可以在開發(fā)板上執(zhí)行?./sample_venc 后看到相關(guān)信息的打印。
(5)跳轉(zhuǎn)到 (2)繼續(xù)看,除了創(chuàng)建了線程?RtspServerListen,后面還有
?s32Ret = SAMPLE_VENC_1080P_CLASSIC();
這一步其實(shí)相當(dāng)于執(zhí)行的是??./sample_venc 0 ,和源碼對(duì)比一下。
(6)跳轉(zhuǎn)查看定義
上圖有點(diǎn)長(zhǎng),著重看顏色不同的地方。
首先 SAMPLE_VENC_1080P_CLASSIC 的功能是:
function : ?H.264@1080p@30fps+H.265@1080p@30fps+H.264@D1@30fps
我們想的是播放 H.265 視頻實(shí)時(shí)流,使用的開發(fā)板為 hi3516a-ov4689,即 sensor類型 是 OV4689。
知道這些,再看上面的代碼,就明白了了。
然后是 step 6,功能為?stream venc process -- get stream, then save it to file.?
翻譯一下就是,得到流,然后保存文件。
創(chuàng)建一個(gè)新線程:
pthread_create(&gs_VencPid, 0, SAMPLE_COMM_VENC_GetVencStreamProcsent, (HI_VOID*)&gs_stPara);
(7)跳轉(zhuǎn)查看定義
這個(gè)線程即發(fā)送線程。它是參看的?sample/common/sample_comm_venc.c 里的
SAMPLE_COMM_VENC_GetVencStreamProc 改寫的。
主要差別在于最后的?SAMPLE_COMM_VENC_Sentjin 發(fā)送 h265 流
源碼部分如下,是將其保存成文件
而 SAMPLE_COMM_VENC_Sentjin 函數(shù)中?
使用函數(shù) HI_MPI_VENC_GetStreamBufInfo 得到?StreamBufInfo。
最后是?VENC_Sent?
(8)跳轉(zhuǎn)查看定義
到此,源碼分析完成!!
分析了一遍源碼, 它這些改動(dòng)有點(diǎn)懵逼,尤其對(duì)于 RTSP 部分,不知道它的源碼是什么,反正不是參看的 live555 。
不求上進(jìn)的想法,就是直接使用這個(gè)就能實(shí)現(xiàn)播放H.265視頻流,管它怎么實(shí)現(xiàn)的。哈哈!!當(dāng)然,不能這么想了。
網(wǎng)上,看到了第二種方法。
參看:Hi3516A如何實(shí)現(xiàn)PC實(shí)時(shí)視頻監(jiān)控
代碼下載:Hi3516A如何實(shí)現(xiàn)PC實(shí)時(shí)視頻監(jiān)控 代碼
編譯時(shí)放在sample下面。上面用的OV4689,用其他攝像頭的在Makefile里面改宏定義。
這個(gè)就更看不懂了!! 藍(lán)瘦香菇
總結(jié)
以上是生活随笔為你收集整理的RTSP再学习 -- Hi3516A RTSP实例 分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CDH 和ambari之间的比较
- 下一篇: 日常生活小技巧 -- 文件对比工具 Be