女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

智能貓眼的實現是采用流媒體協議RTSP

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-05-16 09:20 ? 次閱讀

前言

智能貓眼是一種家居安防產品。是安裝在防盜門上的一種嵌入式設備,可以通過攝像頭獲取圖像顯示至手機應用中,這樣老人或者小孩就可以看清門外的情況。

智能貓眼的實現是采用流媒體協議 RTSP。該協議定義了程序如何通過 IP 網絡傳送多媒體數據。RTSP 多用于安防攝像頭、車載監控、網絡直播等場景應用。本文檔旨在講解在 OpenAtom OpenHarmony(以下簡稱“OpenHarmony") 1.0.1 release 下將 Hi3518EV300 編碼后的 H.265 視頻格式(H.265 是一種視頻編碼格式,可以由 OpenHarmony 媒體子系統產生),通過 RTSP 傳輸顯示到手機的應用中。

cc8c790e-d2bd-11ec-bce3-dac502259ad0.jpg

注:Hi3518EV300是 潤和Hi3518 HiSpark IPC AI攝像頭開發板套件

如上圖片:Hi3518EV300 設備將捕獲到的圖像通過 RTSP 發送到手機應用中并顯示出來。

開發流程

RTSP 采用 Server/Client 模式,在本樣例場景中 Hi3518EV300為RTSP Server,手機應用為 RTSP Client。在 RTSP 體系結構包含 RTSP和RTP(實時傳輸協議)兩種協議,其中 RTSP 協議用于建立連接與傳輸多媒體控制命令(開始、暫停、結束等),RTP 協議用來傳輸多媒體數據(音頻、視頻)。

RTSP Server 的實現分為如下幾步:

●設置 Wi-Fi:將手機與 Hi3518EV300 在同一網絡中;

環形緩存區:將媒體子系統中編碼出的 H.265 數據存入環形緩存中;

●RTSP:RTSP Server 通過 RTSP 與 RTSP Client 交互控制信息;

●RTP :RTSP Server 收到PLAY命令后從環形緩存中獲取 H.265 數據并使用 RTP 協議發送。

如下圖所示:

ccbad592-d2bd-11ec-bce3-dac502259ad0.jpg

如何運行 RTSP Server 可以參考文章智能貓眼 3518 開發樣例,下面根據該文章講解 RTSP Server 的實現流程。

代碼結構:


├── smart_door_viewer_3518│   ├── BUILD.gn                                      // 編譯構建│   ├── include│   │   ├── camera_sample.h                   // 攝像頭操作頭文件│   │   ├── rtp.h                                         // rtp協議傳輸頭文件│   │   ├── rtsp_log.h                                // 打印調試頭文件│   │   └── rtsp_server.h                           // rtsp頭文件│   └── src│       ├── camera_sample.cpp                 // 攝像頭實現│       ├── main.cpp                                   // 主函數│       ├── rtp.cpp                                       // rtp協議實現│       └── rtsp_server.cpp                         // rtsp協議實現├── foundation              │   └── multimedia│       └── media_lite│           ├── frameworks│           │   └── recorder_lite │           │       ├── recorder.cpp                //增加獲取攝像頭H.265數據實現類接口│           │       ├── recorder_impl.cpp       //增加獲取攝像頭H.265數據實現│           │       └── recorder_impl.h           //增加獲取攝像頭H.265數據實現定義│           └── interfaces│               └── kits│                   └── recorder_lite│└──recorder.h//增加應用層獲取攝像頭H.265數據實現類接口定義

設置Wi-Fi

設置 Wi-Fi 連接熱點 ssid 為“Smedia”psk為“12345678”。

在文件 wpa_supplicant.conf 中修改如下:


country=GBctrl_interface=udpnetwork={    ssid="SMedia"    psk="12345678"}

設備啟動后輸入:


./bin/wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf

輸入 ifconfig 可查看到連接成功后的 IP 地址:

ccd7c4ae-d2bd-11ec-bce3-dac502259ad0.jpg

環形緩存區

在媒體子系統中,為了同步 RTSP Server 應用獲取 H.265 數據須設計一個環形緩沖區。緩沖區總大小為 16*256K 長度的數組。put 為媒體子系統存放緩沖區的偏移值,get 為 RTSP Server(Hi3518EV300)線程獲取緩沖區的偏移值,緩存區定義在文件 recorder_impl.h 下。


constexpr uint32_t RING_BUFF_MAX_CNT = 16;constexpruint32_tRING_BUFF_SIZE=256*1024;

具體實現如下:

初始情況下偏移值 put 與 get 的位置均在開頭。

cd0b6048-d2bd-11ec-bce3-dac502259ad0.jpg

當 RTSP Server 啟動后媒體子系統填充 buff,偏移值 put 向前移。

cd415892-d2bd-11ec-bce3-dac502259ad0.jpg

RTSP Server 通過偏移值 get 獲取到視頻編碼數據后釋放 buff,偏移值 get 向前移。

cd606f8e-d2bd-11ec-bce3-dac502259ad0.jpg

當 put 與 get 偏移超過 16 時重新置 1 因此形象地稱為環形緩沖區,其中 get 永遠在 put 后且間距不會超過 3 個 buff,實現是在 rtsp Server 中設置同步時間。

cd7e62f0-d2bd-11ec-bce3-dac502259ad0.jpg

代碼實現邏輯:當 RTSP Server 運行到 RTP 時才會往緩沖區存放數據(ringStatus 標志位設置為 true)。存入緩沖區的首幀是從關鍵幀(幀頭為 0x40 與 0x01 與 startFramFlag 標志位為 true)開始,后續所有幀都會保存到緩沖區中(saveFlag 標志位設置為 true,startFramFlag 標志位為 false),在函數 VideoSourceProcess 下實現。


if ((iNumber < RING_BUFF_MAX_CNT) && (ringStatus == true)) {    if((startFramFlag == true) &&(buffer.dataAddr[4]==0x40)        && (buffer.dataAddr[5]==0x01)) {        if (memcpy_s(ringFifo[iPut].buffer, RING_BUFF_SIZE, buffer.dataAddr, buffer.dataLen) != EOK) {            MEDIA_INFO_LOG("[Error] memcpy_s");         } else {            ringFifo[iPut].size = buffer.dataLen;            iPut = addring(iPut);            iNumber++;            startFramFlag = false;            saveFlag = true;        }     } else {         if(saveFlag == true) {             if (memcpy_s(ringFifo[iPut].buffer, RING_BUFF_SIZE, buffer.dataAddr, buffer.dataLen) != EOK) {                MEDIA_INFO_LOG("[Error] memcpy_s");              } else {                 ringFifo[iPut].size = buffer.dataLen;                 iPut = addring(iPut);                 iNumber++;                       }          }      }}

RTSP

RTSP Server 與 RTSP Client 通過 RTSP 協議收發控制命令,其基本流程如下:

●OPTION:首先 Client 連接到 Server 并發送 OPTION 命令,Server 立刻返回所支持的命令(OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN);

●DESCRIBE:Client 發送描述命令(DESCRIBE),Server 通過一個 SDP 描述來進行反饋,反饋信息包括流數量、媒體類型等信息;

●SETUP:Client 分析 SDP 描述,并為會話中發送建立命令(SETUP),告訴 Server 用于接收媒體數據的端口;

●PLAY:連接建立完成后,Client 發送一個播放命令(PLAY),Server 就開始在 UDP 上傳送媒體流(RTP包)到 Client;

●TERADOWN:最后 Client 可發送一個終止命令(TERADOWN)來結束流媒體會話。

其交互流程如下所示:

cd98e788-d2bd-11ec-bce3-dac502259ad0.jpg

在文件 rtsp_server.cpp 中,RTSP Server 收到 OPTION 后回復服務器提供的可用命令(OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN)。

函數實現如下:


static void RtspOptions(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff, "RTSP/1.0 200 OK
"                    "CSeq: %d
"                    "Public: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN
"                    "
",                    rtspCliInfo.rtspCseq);}

RTSP Server 收到 DESCRIBE 后回復 SDP (SDP 信息為會話名稱和目的、會話持續時間、媒體類(音頻、視頻等)、傳輸協議(RTP/UDP/IP等)、媒體編碼格式(H.264、H.265 等)、接收媒體的相關信息端口和格式等。)信息。

函數實現如下:


static void RtspDescribe(char* sendBuff, RtspClientInfo &rtspCliInfo){    char sdp[512];
    memset(sdp, 0, sizeof(sdp));    sprintf(sdp, "v=0
"                 "o=- 973 1 IN IP4 192.168.1.103
"                 "t=0 0
"                 "a=control:*
"                 "m=video 0 RTP/AVP 96
"                 "a=rtpmap:96 H265/90000
"                 "a=control:track0

");    sprintf(sendBuff, "RTSP/1.0 200 OK
CSeq: %d
"                    "Content-Base: %s
"                    "Content-type: application/sdp
"                    "Content-length: %d

"                    "%s",                    rtspCliInfo.rtspCseq,                    "rtsp://192.168.1.127:8554/test.264",                    strlen(sdp),                    sdp);}

RTSP Server 收到 SETUP 后回復傳輸模式(采用 RTP 傳輸)、端口號信息準備 play。

函數實現如下:


static void RtspStep(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff,             "RTSP/1.0 200 OK
"            "CSeq: %d
"            "Transport: RTP/AVP;unicast;client_port=55532-55532;"            "server_port=%d-%d
"            "Session: 66334873
"            "
",            rtspCliInfo.rtspCseq, rtspCliInfo.clientPort, rtspCliInfo.clientPort + 1);}

RTSP Server 收到 PLAY 后回復 Range 的值為"npt=0.0000-",表示從開始播放,默認一直播放!隨后發送視頻流數據。


static void RtspPlay(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff, "RTSP/1.0 200 OK
"                "CSeq: %d
"                "Range: npt=0.000-
"                "Session: 66334873; timeout=60

",                rtspCliInfo.rtspCseq);}

程序運行后使用 wireshark 抓取報文如下:

cdb83886-d2bd-11ec-bce3-dac502259ad0.jpg

RTP

RTSP 會話進行到 PLAY 后就可啟動 RTP 發送視頻流數據,RTP 包分為 RtpHeader(Rtp 頭)加 payload(負載數據),在文件 rtp.cpp 下的 UdpSendFrame 函數中。

RtpHeader

csrcLen csrc 計數,在沒有 RTP 混頻器的情況下通常為 0

●extension 擴展名,必須為 0

●padding 填充位,不得使用填充,默認為 0

●version 版本號為 2

●payloadType 數據幀類型 96(H.265)

●marker 將一幀分片時區分頭片

●seq 序列號為了以每片為單位

●timestamp 時間戳以每幀為單位

●ssrc 數據信源號


rtpPacket.rtpHeader.csrcLen = 0;rtpPacket.rtpHeader.extension = 0;rtpPacket.rtpHeader.padding = 0;rtpPacket.rtpHeader.version = 2;
rtpPacket.rtpHeader.payloadType = 96;
rtpPacket.rtpHeader.ssrc = 10;
rtpPacket.rtpHeader.timestamp = timestamp;timestamp+=90000/25;

payload

RTP 包最大為 1400 個字節,因此打包分為兩種:

1.若 H.265 幀小于 1400 個字節時可放至一個 rtp 包中;

2.若 H.265 幀大于 1400 個字節時,則需要分片打包在多個 rtp 中;

當文件小于 1400 時直接放到 pyahload 中發送。


if (s32NalBufSize <= RTP_MAX_PKT_SIZE) {      if (memcpy_s(rtpPacket.payload, s32NalBufSize, pNalBuf, s32NalBufSize) != EOK){        SAMPLE_INFO("memcpy_s");    return -1;    }    rtpPacket.rtpHeader.marker   = 1;    rtpPacket.rtpHeader.seq = seq++;    ret = UdpSendPacket(&rtpPacket, s32NalBufSize);    sendBytes += ret;    SAMPLE_INFO("sendBytes->%d", sendBytes);}

若 H.265 幀大于 1400 個字節時就必須進行分片封包處理。則要設置 PayloadHdr、FU(Fragmentation Units)、DONL 暫不涉及可以省略,其中 PayloadHdr 固定為 49。


   0                   1                   2                   3    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |    PayloadHdr (Type=49)       |   FU header   | DONL (cond)   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|   | DONL (cond)   |                                               |   |-+-+-+-+-+-+-+-+                                               ||FUpayload|

FUheader 格式為:S 置 1 表示起始片,E 置 1 表示最后片,FuType 就是實際的 Nal type 類型。


  +---------------+  |0|1|2|3|4|5|6|7|  +-+-+-+-+-+-+-+-+  |S|E|  FuType   |+---------------+

函數中實現如下:


int pktNum = s32NalBufSize / RTP_MAX_PKT_SIZE;         int remainPktSize = s32NalBufSize % RTP_MAX_PKT_SIZE;    int i, pos, head_len;    head_len = 2;    pos = head_len;     for(i = 0; i < pktNum; i++)    {      rtpPacket.rtpHeader.seq = seq++;            rtpPacket.payload[0] = 49 << 1;      rtpPacket.payload[1] = 1;      rtpPacket.payload[2] = (naluType & 0x7E)>>1;      if (i == 0) {         rtpPacket.rtpHeader.marker = 1;        rtpPacket.payload[2] |= 0x80; // start      }      else if (remainPktSize == 0 && i == (pktNum - 1)){        rtpPacket.rtpHeader.marker = 0;        rtpPacket.payload[2] |= 0x40; // end      }      if (memcpy_s(rtpPacket.payload + head_len + 1, RTP_MAX_PKT_SIZE, pNalBuf+pos, RTP_MAX_PKT_SIZE) != EOK) {        SAMPLE_INFO("memcpy_s");          return -1;      }            ret = UdpSendPacket(&rtpPacket, RTP_MAX_PKT_SIZE + head_len + 1);      if (ret < 0) {        SAMPLE_ERROR("rtpSendPacket is error");        goto cleanup;      }      sendBytes += ret;      pos += RTP_MAX_PKT_SIZE;    }    if (remainPktSize > 0)    {      {        rtpPacket.payload[0] = 49 << 1;        rtpPacket.payload[1] = 1;        rtpPacket.payload[2] = (naluType & 0x7E)>>1;        rtpPacket.payload[2] |= 0x40; // end      }      if (memcpy_s(rtpPacket.payload + head_len + 1, remainPktSize, pNalBuf+pos, remainPktSize) != EOK) {        SAMPLE_INFO("memcpy_s");          return -1;      }      rtpPacket.rtpHeader.seq = seq++;      ret = UdpSendPacket(&rtpPacket, remainPktSize+head_len+1);      if(ret < 0)      {        SAMPLE_ERROR("rtpSendPacket is error");        goto cleanup;      }      sendBytes += ret;    }

程序運行后使用 wireshark 抓取報文如下:

cdeaf3d4-d2bd-11ec-bce3-dac502259ad0.jpg

RTSP Client

RTSP Client 實現使用手機 APP”完美播放器“。

準備一臺手機,在手機應用市場中搜索”完美播放器“并下載安裝。

ce17673e-d2bd-11ec-bce3-dac502259ad0.jpg

打開菜單選擇網址播放。

ce3e9674-d2bd-11ec-bce3-dac502259ad0.jpg

輸入 rtsp 播放地址,其中 ip 地址 10.42.0.54為Hi3518EV300中Wi-Fi 的地址。

ce604102-d2bd-11ec-bce3-dac502259ad0.jpg

總結

豐富多樣的 OpenHarmony 開發樣例離不開廣大合作伙伴和開發者的貢獻,如果你也想把自己開發的樣例分享出來,歡迎把樣例提交到 OpenHarmony 知識體系 SIG 倉來,共建開發樣例請參考如何共建開發樣例。

審核編輯 :李倩



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7242

    瀏覽量

    91038
  • 視頻編碼
    +關注

    關注

    2

    文章

    114

    瀏覽量

    21285
  • OpenHarmony
    +關注

    關注

    27

    文章

    3835

    瀏覽量

    18171

原文標題:基于OpenHarmony實現智能貓眼

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    延遲低至30ms+ LLSM流媒體傳輸模塊低延遲方案推薦

    LLSM流媒體傳輸模塊,憑借低帶寬、低延遲的傳輸特點,一經推出就受到了廣泛關注。由于低延遲傳輸跟相機性能以及屏幕刷新率等參數有著密切關系,可供選擇的配套產品眾多,許多客戶就跟我們提出了提供整套方案
    的頭像 發表于 06-04 17:57 ?373次閱讀
    延遲低至30ms+  LLSM<b class='flag-5'>流媒體</b>傳輸模塊低延遲方案推薦

    微軟Build 2025大會:Copilot Studio升級,引領多智能體協作時代

    今年,Microsoft Copilot Studio 帶來了一系列強大的智能體新功能:從多智能體協同編排 (Multi-Agent Orchestration) 到更豐富的創作者控制 (Maker Controls),從
    的頭像 發表于 06-04 09:23 ?309次閱讀
    微軟Build 2025大會:Copilot Studio升級,引領多<b class='flag-5'>智能</b><b class='flag-5'>體協</b>作時代

    用 樹莓派4 打造專屬流媒體控制臺!

    用樹莓派體驗DIY智能科技!如今市面上有各種各樣的流媒體控制臺,但購買現成的哪有自己從零開始制作的有趣呢?至少,這似乎是樹莓派創客社區的精神所在,就像創客兼開發者Last-Shake-9874所展示
    的頭像 發表于 05-11 08:33 ?109次閱讀
    用 樹莓派4 打造專屬<b class='flag-5'>流媒體</b>控制臺!

    LLSM——基于RK3588的低延遲低帶寬流媒體傳輸模塊

    隨著物聯網和人工智能的快速發展,實時視頻傳輸在嵌入式系統中變得越來越重要。無論是智能攝像頭、無人機還是工業監控設備,都需要高效、低延遲的流媒體傳輸解決方案?;垡曂瞥龅腖LSM低延遲低帶寬流媒體
    的頭像 發表于 04-30 18:36 ?221次閱讀
    LLSM——基于RK3588的低延遲低帶寬<b class='flag-5'>流媒體</b>傳輸模塊

    Ampere節能型處理器助力流媒體領域的無限可能

    數字世界正以迅猛的速度發展變遷,持續順應著用戶全新的行為習慣。流媒體服務長久以來便已穩固確立了自身作為內容消費重要渠道的地位。無論是在諸如 Netflix 之類的平臺上盡情的連續觀看多部劇集,還是觀看各類視頻直播,大眾對于按需獲取的高清內容的需求空前高漲。
    的頭像 發表于 04-11 09:57 ?233次閱讀

    富創全新二代AI流媒體電子后視鏡在問界M7上的應用

    本次富創全新二代AI流媒體電子后視鏡在除了從芯片和軟件上進行升級,在結構上做突破,讓前視鏡頭模塊與流媒體總成分開,讓流媒體前視角不會被車內物件造成視角障礙。
    的頭像 發表于 02-20 10:00 ?714次閱讀

    中偉視界:流媒體技術與礦山安全需求的深度融合,推動礦山預警平臺的智能化升級

    流媒體轉發技術在礦山智能化進程中扮演著重要角色,能夠解決帶寬不足、數據轉碼和權限管理等多項難題。通過實時數據傳輸與處理,該技術顯著提升了礦山安全監測的實時性和準確性,為實現智能礦山提供
    的頭像 發表于 01-22 17:20 ?335次閱讀
    中偉視界:<b class='flag-5'>流媒體</b>技術與礦山安全需求的深度融合,推動礦山預警平臺的<b class='flag-5'>智能</b>化升級

    采用 Flexus 云服務器 X 實例搭建 RTSP 直播服務器

    一、前言 這篇文章講解:? 采用華為云最新推出的 Flexus 云服務器 X 實例搭建 RTSP 服務器,完成視頻直播需求。 隨著實時視頻流傳輸需求的增長,RTSP(實時流協議)服務器
    的頭像 發表于 12-24 17:36 ?561次閱讀
    <b class='flag-5'>采用</b> Flexus 云服務器 X 實例搭建 <b class='flag-5'>RTSP</b> 直播服務器

    畢業設計競賽選題推薦 | 嵌入式Linux應用之智能貓眼項目實戰(含文檔及源碼)

    算法,實現了遠程監控、自動告警、人臉識別等高級功能。智能貓眼能夠為用戶提供更安全、便捷的生活體驗,無論是住宅安全防護還是商鋪的訪客管理,智能貓眼
    的頭像 發表于 12-23 14:12 ?708次閱讀
    畢業設計競賽選題推薦 | 嵌入式Linux應用之<b class='flag-5'>智能</b><b class='flag-5'>貓眼</b>項目實戰(含文檔及源碼)

    流媒體后視鏡市場份額連續6年稱霸全國,新產品即將上市

    日前,來自佐思汽研的《2024年全球及中國電子后視鏡行業研究報告》新鮮出爐。 數據顯示,2024年1-4月,流媒體后視鏡裝配量完成15.9萬輛,同比增長33.8%。從供應商層面來看,遠峰科技仍處于
    的頭像 發表于 09-29 09:50 ?929次閱讀
    <b class='flag-5'>流媒體</b>后視鏡市場份額連續6年稱霸全國,新產品即將上市

    遠峰科技:流媒體后視鏡市場份額連續6年稱霸全國,新產品即將上市

    日前,來自佐思汽研的《2024年全球及中國電子后視鏡行業研究報告》新鮮出爐。 數據顯示,2024年1-4月,流媒體后視鏡裝配量完成15.9萬輛,同比增長33.8%。從供應商層面來看,遠峰科技仍處于
    的頭像 發表于 09-11 08:40 ?2465次閱讀
    遠峰科技:<b class='flag-5'>流媒體</b>后視鏡市場份額連續6年稱霸全國,新產品即將上市

    ElfBoard技術貼|如何在ELF 1開發板上搭建流媒體服務器

    流媒體服務器是一種專門用于傳輸實時數據流的服務器軟件,廣泛用于視頻直播、視頻會議、音頻播放等應用場景。在嵌入式開發領域,將流媒體服務器部署到開發板上可以實現諸如視頻監控、實時數據傳輸等功能。本文將介紹如何利用nginx和其rtm
    的頭像 發表于 08-20 14:48 ?862次閱讀
    ElfBoard技術貼|如何在ELF 1開發板上搭建<b class='flag-5'>流媒體</b>服務器

    昆侖萬維發布全球首個AI流媒體音樂平臺Melodio

    昆侖萬維在科技創新領域再次邁出重要一步,正式推出了全球首個AI流媒體音樂平臺——Melodio,以及配套的AI音樂商用創作平臺Mureka。這兩款創新產品的問世,標志著音樂產業正式邁入AI驅動的新時代。
    的頭像 發表于 08-14 17:44 ?1085次閱讀

    谷歌宣布對Android設備流媒體服務進行重大擴展

    8月8日,谷歌宣布對其Android設備流媒體服務進行重大擴展,此舉旨在進一步賦能開發者,讓他們能夠遠程接入并測試更多品牌及型號的真實Android物理設備。自2014年該服務問世以來,它便成為了連接開發者與多樣化硬件測試環境的橋梁,而現在,這一橋梁的覆蓋范圍正急劇拓寬。
    的頭像 發表于 08-08 16:30 ?882次閱讀

    貿澤開售AMD / Xilinx Alveo MA35D媒體加速器 為流媒體、游戲、遠程醫療和在線學習應用提供支持

    。 ? AMD / Xilinx Alveo MA35D 媒體加速器采用基于特定應用集成電路的視頻處理單元,專為高密度、超低延遲流媒體而設計。每款器件(每張卡 2個)
    發表于 07-12 10:44 ?685次閱讀