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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

背景

最近接觸了許多客戶,許多是做安全方面產(chǎn)品的客戶,有些還涉及到j(luò)un隊(duì)后勤的等等,他們普遍對(duì)采集延遲,編碼延遲,傳輸延遲等都有很大關(guān)注。例如有個(gè)客戶是做反狙擊探測(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è)試延遲的方法要用專業(yè)儀器來(lái)測(cè)量,或者在程序中記錄精準(zhǔn)時(shí)間來(lái)判斷,這些方法過于專業(yè),也不方便展示,本文采用的測(cè)量方法是目測(cè)法,這個(gè)方法不大精準(zhǔn),但最容易展示。

????如上圖所,通常直播是經(jīng)過采集,編碼,網(wǎng)絡(luò)輸出,網(wǎng)絡(luò)接收,解碼,顯示輸出,經(jīng)過這幾大環(huán)節(jié)后,用戶才能看到直播的畫面,其總延遲是T1-T3;采集延遲為T1-T2。直播延遲還跟網(wǎng)絡(luò)協(xié)議有關(guān),其中UDP,RTMP和RTSP延遲相對(duì)較小,HTTP延遲偏大,延遲最大的是HLS,這種技術(shù)是切片技術(shù),很適合做對(duì)延遲要求不高的網(wǎng)絡(luò)直播(例如非互動(dòng)的單向直播,IPTV就是這類),該技術(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)盤,需要的可以從我們百度網(wǎng)盤上下載: 鏈接:https://pan.baidu.com/s/1ySnVeRHsuvzvtywh8xDz1g 提取碼:qx9x

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

????從上表可以看出,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)盤下載。

1.TS over UDP

2.RTSP over UDP

3.RTMP

總結(jié)

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

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