日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

海思芯片硬件java加速_海思芯片直播延迟测试结果(小于100毫秒)

發(fā)布時(shí)間:2023/12/2 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 海思芯片硬件java加速_海思芯片直播延迟测试结果(小于100毫秒) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

最近接觸了許多客戶(hù),許多是做安全方面產(chǎn)品的客戶(hù),有些還涉及到j(luò)un隊(duì)后勤的等等,他們普遍對(duì)采集延遲,編碼延遲,傳輸延遲等都有很大關(guān)注。例如有個(gè)客戶(hù)是做反狙擊探測(cè)的,那可是與生命相關(guān)的,容不得試錯(cuò)的(PS:我無(wú)法判斷海思Hi3531D/Hi3521D系列產(chǎn)品是否適合做這種高實(shí)時(shí)性的產(chǎn)品,當(dāng)然做個(gè)評(píng)估或者算法驗(yàn)證完全是可以的)。

測(cè)量方法

精準(zhǔn)測(cè)試延遲的方法要用專(zhuān)業(yè)儀器來(lái)測(cè)量,或者在程序中記錄精準(zhǔn)時(shí)間來(lái)判斷,這些方法過(guò)于專(zhuān)業(yè),也不方便展示,本文采用的測(cè)量方法是目測(cè)法,這個(gè)方法不大精準(zhǔn),但最容易展示。

????如上圖所,通常直播是經(jīng)過(guò)采集,編碼,網(wǎng)絡(luò)輸出,網(wǎng)絡(luò)接收,解碼,顯示輸出,經(jīng)過(guò)這幾大環(huán)節(jié)后,用戶(hù)才能看到直播的畫(huà)面,其總延遲是T1-T3;采集延遲為T(mén)1-T2。直播延遲還跟網(wǎng)絡(luò)協(xié)議有關(guān),其中UDP,RTMP和RTSP延遲相對(duì)較小,HTTP延遲偏大,延遲最大的是HLS,這種技術(shù)是切片技術(shù),很適合做對(duì)延遲要求不高的網(wǎng)絡(luò)直播(例如非互動(dòng)的單向直播,IPTV就是這類(lèi)),該技術(shù)最大的好處就是能在網(wǎng)絡(luò)帶寬波動(dòng)很大的環(huán)境下也能保持流暢(其實(shí)就是因?yàn)榫彌_夠大嘛)。

測(cè)試結(jié)果

為了抓拍到T1,T2,T3,我們使用單反相機(jī)快速連拍功能,分別對(duì)UDP,RTSP和RTMP協(xié)議的測(cè)試進(jìn)行抓拍,然后對(duì)抓拍到圖片序列進(jìn)行統(tǒng)計(jì)分析。抓拍到的圖片序列已經(jīng)上傳到百度網(wǎng)盤(pán),需要的可以從我們百度網(wǎng)盤(pán)上下載: 鏈接:https://pan.baidu.com/s/1ySnVeRHsuvzvtywh8xDz1g 提取碼:qx9x

????如上圖所示,做為信號(hào)源的筆記本顯示的時(shí)間碼是19:35:55.217,而編碼板采集預(yù)覽顯示的時(shí)間碼也是19:35:55.217,說(shuō)明采集延遲為T(mén)1-T2=217-217=0,忽略不計(jì);解碼板通過(guò)網(wǎng)絡(luò)接收來(lái)自編碼板的網(wǎng)絡(luò)流,解碼后通過(guò)HDMI輸出,其顯示的時(shí)間碼是19:35:55.174,那說(shuō)明延遲為T(mén)1-T3=217-174=43,也就是延遲為43毫秒。為了方便用戶(hù)查看和對(duì)比,我們把拍下來(lái)的照片的時(shí)間碼做了記錄,并用EXCEL表做了計(jì)算,參見(jiàn)下表。

????從上表可以看出,UDP(TS封裝)的平均延遲為71.1毫秒,由于我們的TS封裝是使用了FFMPEG來(lái)進(jìn)行封裝的,所以封裝延遲較大,如果采用RAW H264/H265 UDP,估計(jì)延遲會(huì)大大降低;RTSP OVER UDP平均延遲為83豪秒,還真搞不懂這個(gè)延遲什么會(huì)這么大;RTMP的延遲僅為52.6毫秒,真是有點(diǎn)意外,而且每個(gè)采樣的延遲幾乎都是在43毫秒左右,很均勻,不像TS-UDP和RTSP OVER UDP每個(gè)采樣測(cè)出的延遲數(shù)據(jù)波動(dòng)有點(diǎn)大。

源程序

編碼端源程序

//main.cpp

#include

#include "Link.h"

#define RTSP

//#define UDP

//#define RTMP

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

Link::init();

LinkObject *vi=Link::create("InputVi");

QVariantMap dataVi;

dataVi["interface"]="HDMI-A";

vi->start(dataVi);

LinkObject *vo=Link::create("OutputVo");

QVariantMap dataVo;

dataVo["type"]="hdmi";

dataVo["lowLatency"]=true;

vo->start(dataVo);

vi->linkV(vo);

LinkObject *encV=Link::create("EncodeV");

QVariantMap dataEncV;

dataEncV["codec"]="h264";

dataEncV["framerate"]=60;

dataEncV["width"]=1920;

dataEncV["height"]=1080;

dataEncV["bitrate"]=8000;

dataEncV["lowLatency"]=true;

encV->start(dataEncV);

LinkObject *mux=Link::create("Mux");

QVariantMap dataRtsp;

#ifdef RTSP

dataRtsp["path"]="mem://test";

dataRtsp["format"]="rtsp";

#elif UDP

dataRtsp["path"]="mem://test";

dataRtsp["format"]="mpegts";

#elif RTMP

dataRtsp["path"]="rtmp://127.0.0.1/live/test";

dataRtsp["format"]="flv";

#endif

dataRtsp["mute"]=true;

mux->start(dataRtsp);

#ifdef RTSP

LinkObject *rtspServer=Link::create("Rtsp");

rtspServer->start();

vi->linkV(encV)->linkV(mux)->linkV(rtspServer);

#elif UDP

LinkObject *udp=Link::create("TSUdp");

QVariantMap dataUDP;

dataUDP["ip"]="192.168.1.77";

dataUDP["port"]=1234;

udp->start(dataUDP);

vi->linkV(encV)->linkV(mux)->linkV(udp);

#elif RTMP

vi->linkV(encV)->linkV(mux);

#endif

return a.exec();

}

解碼端源程序

//main.cpp

#include

#include "Link.h"

#define RTSP

//#define UDP

//#define RTMP

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

Link::init();

LinkObject *vo=Link::create("OutputVo");

QVariantMap dataVo;

dataVo["type"]="hdmi";

vo->start(dataVo);

LinkObject *net=Link::create("InputNet");

QVariantMap dataNet;

#ifdef RTSP

dataNet["path"]="rtsp://192.168.1.76/test";

#elif UDP

dataNet["path"]="udp://@:1234";

#elif RTMP

dataNet["path"]="rtmp://192.168.1.76/live/test";

#endif

dataNet["protocol"]="udp";

dataNet["buffer"]=false;

dataNet["sync"]=false;

net->start(dataNet);

LinkObject *dec=Link::create("DecodeV");

QVariantMap dataDec;

dataDec["lowLatency"]=true;

dec->start(dataDec);

net->linkV(dec)->linkV(vo);

return a.exec();

}

抓拍的圖片序列

為了方便閱讀,我們這里對(duì)每一種網(wǎng)絡(luò)協(xié)議抓拍到的圖片展示三幅圖,若需要查看全部的圖,請(qǐng)到網(wǎng)盤(pán)下載。

1.TS over UDP

2.RTSP over UDP

3.RTMP

總結(jié)

以上是生活随笔為你收集整理的海思芯片硬件java加速_海思芯片直播延迟测试结果(小于100毫秒)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。