14 海思Hi3518E用RTSP傳輸實時視訊
有兩種實現方式
第一種:直接傳送
RtspServer_init
RtspServerListen
RtspClientMsg //執行緒1 : 不斷監控是否又客服端來連線自己,並且建立雙方的連線
if(strstr(cmdName, "OPTIONS")) OptionAnswer;
if(strstr(cmdName, "DESCRIBE")) DescribeAnswer;
if(strstr(cmdName, "SETUP")) SetupAnswer;
if(strstr(cmdName, "PLAY")) PlayAnswer;
if(strstr(cmdName, "PAUSE")) PauseAnswer;
if(strstr(cmdName, "TEARDOWN")) TeardownAnswer;
SAMPLE_VENC_720P_CLASSIC
SAMPLE_COMM_VENC_StartGetStream
SAMPLE_COMM_VENC_GetVencStreamProc //執行緒2 : 不斷從海思的解碼器中獲取H.264碼流
save_stream_rtsp
VENC_Sent //正真的傳送資料
sendto(udpfd, sendbuf, bytes, 0, (struct sockaddr *)&server,sizeof(server));
//向UDP中傳送資料
第二種:利用buffer和執行緒環回傳送
RtspServer_init
RtspServerListen
RtspClientMsg //執行緒1 : 不斷監控是否又客服端來連線自己,並且建立雙方的連線
if(strstr(cmdName, "OPTIONS")) OptionAnswer;
if(strstr(cmdName, "DESCRIBE")) DescribeAnswer;
if(strstr(cmdName, "SETUP")) SetupAnswer;
if(strstr(cmdName, "PLAY")) PlayAnswer;
if(strstr(cmdName, "PAUSE")) PauseAnswer;
if(strstr(cmdName, "TEARDOWN")) TeardownAnswer;
vdRTPSendThread //執行緒2 : 不斷監控全域性變數的RTP_BUF是否為空,不為空就傳送資料
VENC_Sent //正真的傳送資料
sendto(udpfd, sendbuf, bytes, 0, (struct sockaddr *)&server,sizeof(server));
//向UDP中傳送資料
SAMPLE_VENC_720P_CLASSIC
SAMPLE_COMM_VENC_StartGetStream
SAMPLE_COMM_VENC_GetVencStreamProc //執行緒3 : 不斷從海思的解碼器中獲取H.264碼流
saveStream
list_add_tail(&(p->list),&RTP_BUF);//新增資料
第一種:這種方式是,獲取到一幀h.264碼流,就馬上通過rtsp傳送。
優點:編寫程式碼簡單。
缺點:不能應對真實網路,有時候網路會阻塞,這樣會導致上一幀還沒有傳送結束,下一幀就來了,這樣會讓視訊的失真率變高。
第二種:這種利用全域性變數buffer,把從海思中傳來的視訊流,先儲存到buffer中,而單開的執行緒,只管傳送資料,有就發,沒有就等待。
優點:適合網路傳輸的需求。
缺點:編寫程式碼複雜。
真正的傳送函式:
HI_S32 VENC_Sent(char *buffer,int buflen);
這個函式包含了所有視訊要傳送的所操作,包括封包,拆包。
對於每一個NALU,根據其包含的資料量的不同,其大小也有差異。在IP網路中,當要傳輸的IP 報文大小超過最大傳輸單元MTU(Maximum Transmission Unit )時就會產生IP分片情況。在乙太網環境中可傳輸的最大 IP 報文(MTU)的大小為 1500 位元組。如果傳送的IP資料包大於MTU,資料包就會被拆開來傳送,這樣就會產生很多資料包碎片,增加丟包率,降低網路速度。對於視訊傳輸而言,若RTP 包大於MTU 而由底層協議任意拆包,可能會導致接收端播放器的延時播放甚至無法正常播放。因此對於大於MTU 的NALU 單元,必須進行拆包處理。
參考:
相關文章
- RTN實時音視訊傳輸網路
- Stereolabs推出ZEDMini,為VR頭顯提供實時拍攝視訊傳輸ZedVR
- 智慧融合通訊裝置醫院疫情防控視訊實時傳輸解決方案
- 11┃音視訊直播系統之 WebRTC 進行文字聊天並實時傳輸檔案Web
- web技術支援| 從視訊元素流式傳輸到視訊元素Web
- 思必馳周強:AI 和傳統訊號技術在實時音訊通話中的應用AI音訊
- [譯] 用 Flask 輸出視訊流Flask
- UDP實現音訊影片流傳輸UDP音訊
- 低延遲音視訊傳輸技術在直播領域的應用
- 教機實相時正維海或天思體支CBZS
- 傳蘋果iPhone 14將取消劉海 採用“打孔+藥丸”的設計蘋果iPhone
- 戶外應急救援無線通訊圖傳視訊傳輸解決方案
- 海思Hi3516CV500 LCD輸出說明
- 多卡聚合技術在消防應急視覺化指揮視訊傳輸的應用視覺化
- 掌握短視訊流量傳輸密碼,把握商機!密碼
- 多卡聚合智慧融合通訊裝置在無人機無線視訊傳輸應用無人機
- SpringBoot 整合 RabbitMQ 實現訊息可靠傳輸Spring BootMQ
- Android AudioRecord錄音 並websocket實時傳輸,AudioTrack 播放wav 音訊,Speex加密AndroidWeb音訊加密
- 5G多卡聚合路由器在醫院疫情防控視訊實時傳輸的解決方案路由器
- 5G版聚合路由器加速釋放超高清視訊傳輸應用路由器
- 用python實現TCP協議傳輸功能PythonTCP協議
- 如何用 React Native 開發實時音視訊應用React Native
- 網路通訊3:HTTP實現文字傳輸HTTP
- 通訊原理中碼元,碼元傳輸速率,資訊傳輸速率
- 應用於實時視訊通訊的深度學習演算法深度學習演算法
- 超分演算法在 WebRTC 高清視訊傳輸弱網優化中的應用演算法Web優化
- RTC 系統音視訊傳輸弱網對抗技術
- 視訊直播和實時音視訊區別調研
- 中國移動攜手華為百度展示5G應用,實現8K視訊傳輸
- 海思hi3536 PCIE級聯應用指南
- OBS 基礎 14 視訊資訊設定
- Nginx+FFmpeg實現rtsp流轉hls流,在WEB通過H5 video實現視訊播放NginxWebH5IDE
- 【流式傳輸】使用Spring Boot實現ChatGpt流式傳輸Spring BootChatGPT
- 多卡聚合智慧融合通訊裝置疫情檢查站視訊傳輸方案
- 淺析雲控平臺畫面傳輸的視訊流方案
- Golang 開源流媒體音視訊網路傳輸服務-LALGolang
- gRPC的大訊息傳輸RPC
- TCP/IP 通訊傳輸流TCP