Time of Update: 2018-12-04
看見Firefox瀏覽器可以接收gstreamer的mjpeg碼流,我用vc去解析mjpeg碼流,便於擷取每幀資料,做視頻處理用,完成任務! 通過研究gstreamer的源碼和抓包發現,http協議時承載在tcp上面的,在伺服器端(httpd.c),其實就是一個socket,一直監聽用戶端有沒有串連,可以使用多個用戶端同時訪問伺服器,擷取視頻資料,對於用戶端來說,就是建立一個socket,和伺服器串連就可以了。
Time of Update: 2018-12-04
TCP串連一旦建立,伺服器端和用戶端就成為了對等關係,任何一方都可以發出關閉握手請求,甚至可以同時發出關閉握手請求。TCP的串連建立需要3次握手,而正常關閉則需要4次握手。1、主動關閉的一方A調用close(),SendQ不再接收send()寫入資訊,在SendQ隊列的最後,向被動關閉的一方發送TCP的IP資料報作為關閉握手的請求。這個資料報中包含著標誌FIN,也包含著此刻的位元組序號m。2、B接收到第一次關閉握手請求後馬上返回一個資料報作為回應。因為B接收到了FIN作為關閉串連的一個位元組的資
Time of Update: 2018-12-04
在做H264 流媒體解碼時候,發現sws_getContext /sws_scale記憶體泄露問題,注意sws_getContext只能調用一次,在初始化時候調用即可,另外調用完後,在解構函式中使用sws_free_Context,將它的記憶體釋放。我在函數中 pSwsCtx = sws_getContext(w, h, src_pix_fmt, w, h, dst_pix_fmt,
Time of Update: 2018-12-04
UNIX中的一切事物都是檔案(everything in Unix is a file!) 當我在這篇教程中提到UNIX的時候,其意思專指符合UNIX標準的所謂“正統”UNIX的衍生系統(其實我就用來帶指那些買了最初UNIX原始碼的商業系統)作業系統和類似Linux,BSD這些類UNIX系統。如果某些要點是Linux特有的,或者因為本人孤陋寡聞暫時搞不清楚是Linux特有的還是UNIX通用的,我就會指明是Linux,甚至其發行版(我本人在寫這篇教程的時候是以Debian
Time of Update: 2018-12-04
著作權資訊:本文來自internet,轉載這裡供流媒體愛好者學習和研究使用,請尊重作者的勞動成果。未經授權而在商業上使用原作者的文章屬侵權行為,後果由使用者自負,本人不承擔任何法律責任。網路資料流接收處理分析:在 input.c(src/input) 檔案中的主線程迴圈 Thread in charge of processing the network packets and demultiplexing 網路資料流接收處理分析1、在input.c(src/input)檔案中的主線程迴圈
Time of Update: 2018-12-04
我們在第1節中講過,socket是一個int的檔案描述符(WinSock中直接是一種抽象的描述符),我們通過對這個描述符發出指令操作socket。這是C語言的思想,在物件導向的思想中,最好socket本身是一種對象,各種方法由對象本身發出。用物件導向的思想封裝socket並不困難,而且,對於描述socket的概念可能更加直觀,這一節,我們邊介紹socket和TCP的概念邊對socket進行OO封裝。首先,每一個socket對象都具有唯一的socket檔案描述符,這樣可以很好的對應socket的概
Time of Update: 2018-12-04
一、ARM 有兩種工作狀態(1)ARM 狀態,此時處理器執行32位的字對齊的ARM指令。(2)Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令二、ARM處理器又要分為大端和小端格式(ARM9、ARM11 都是小端格式)所謂的大小端格式主要講的是: 資料的邏輯高地位 和 地址的高地位的關係, 記憶方法:邏輯低對邏輯低、邏輯高對邏輯高是小端; 邏輯低對邏輯高,邏輯高對邏輯低是大端;三、ARM 指令長度1、ARM 的指令長度可以是32位的也可以是16位的2、ARM 支援 :位元組(
Time of Update: 2018-12-04
著作權資訊:本文來自internet,轉載這裡供流媒體愛好者學習和研究使用,請尊重作者的勞動成果。未經授權而在商業上使用原作者的文章屬侵權行為,後果由使用者自負,本人不承擔任何法律責任。 從接收到資料流到播放視頻的過程分析:從網路接收到流 -對資料流進行視頻和音頻分離-對視頻用解碼器解碼-顯示解碼後的視頻流 視頻顯示部分走勢線:分離 - 解碼 - 新的 VOUT 緩衝區 -VOUT
Time of Update: 2018-12-04
在另外一邊的用戶端,我們分析一下TCPClientSock的建立過程。class TCPClientSock: public BaseSock{private: sockaddr_in serverSockAddr;protected: char* preBuffer; int preBufferSize; mutable int preReceivedLength;public: TCPClientSock( const char* server_I
Time of Update: 2018-12-04
前面一小節,我們已經寫出了TcpServer的建構函式。這個函數的實際作用,就是建立了listen socket(監聽嵌套字)。這一節,我們來具體分析這個建立的過程。socket和sockaddr的建立是可以相互獨立的
Time of Update: 2018-12-04
有沒有人嘗試過將負數賦給一個無符號整型變數?知不知道這樣做會發生什嗎?還沒有嘗試的就讓我們來探索下無符號整型隱藏的秘密。先來看看下面代碼:int main(){ unsigned int val = -1; cout<<val<<endl; return 0;}執行的結果:4294967295請按任意鍵繼續. .
Time of Update: 2018-12-04
這裡的“通訊”加上了引號,是因為實際上所有的socket都有通訊的功能,只是在我們的例子中,之前那個socket只負責listen,而這個socket負責接受資訊並echo回去。 我們現看看這個函數:bool TcpServer::isAccept(){ unsigned int clntAddrLen = sizeof(clntAddr); if ( (communicationSock = accept(listenSock, (sockaddr*)&clntAddr,
Time of Update: 2018-12-04
簡單的RTSP互動過程:C表示RTSP用戶端,S表示RTSP服務端1.C->S:OPTIONS request //詢問S有哪些方法可用1.S->C:OPTIONS response //S回應資訊中包括提供的所有可用方法2.C->S:DESCRIBE request //要求得到S提供的媒體初始化描述資訊2.S->C:DESCRIBE response //S回應媒體初始化描述資訊,主要是sdp 3.C->S:SETUP request
Time of Update: 2018-12-04
1. 網路抽象層單元類型 (NALU)NALU 頭由一個位元組組成,它的文法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1 個位元.forbidden_zero_bit. 在 H.264 規範中規定了這一位必須為 0.NRI: 2 個位元.nal_ref_idc. 取 00 ~ 11, 似乎指示這個
Time of Update: 2018-12-04
//Filename: TcpServerClass.hpp#ifndef TCPSERVERCLASS_HPP_INCLUDED#define TCPSERVERCLASS_HPP_INCLUDED#include <unistd.h>#include <iostream>#include <sys/socket.h>#include <arpa/inet.h>class TcpServer{private: int listenSock;
Time of Update: 2018-12-04
前面3個小節介紹了socket機制對TCP協議三向交握的實現,需要強調的是,與協議獨立於實作類別似,TCP的三向交握是獨立於socket體系的理論。在TCP協議中,三向交握是通過3個TCP格式的IP資料報來實現的。TCP格式的IP資料報中包含著TCP首部,TCP首部資訊中包含著對每一個資料報具體內容的描述。我們這裡需要介紹的首部位(bit)標誌只有3個:SYN:同步序號用來發起一個串連。因為TCP協議要求資料傳送是可靠的,他的實現方式就是對傳輸的資料的每一個位元組(byte)按順序編號。但是初始
Time of Update: 2018-12-04
現在,我們通過accept()建立了新的socket,也就是我們類中的資料成員communicationSock,現在,我們就可以通過這個socket進行通訊了。TCP通訊模型 在介紹函數之前,我們應該瞭解一些事實。TCP的Server/Client模型類似這樣:ServApp——ServSock——Internet——ClntSock——ClntApp當然,我們這裡的socket指的就是用於“通訊”的socket。TCP的server端至少有兩個socket,一個用於監聽,一個用於
Time of Update: 2018-12-04
著作權資訊: 本文來自internet,轉載這裡供流媒體愛好者學習和研究使用,請尊重作者的勞動成果。未經授權而在商業上使用原作者的文章屬侵權行為,後果由使用者自負,本人不承擔任何法律責任。 1.在RH9上的安裝需要 1).RH9的升級包. 2).FC2的RPM包 詳細說明清參見:http://www.videolan.org/vlc/download-redhat.html 以上VLC 版本為:0.7.22.下載RH9的升級包
Time of Update: 2018-12-04
著作權資訊:本文來自internet,轉載這裡供流媒體愛好者學習和研究使用,請尊重作者的勞動成果。未經授權而在商業上使用原作者的文章屬侵權行為,後果由使用者自負,本人不承擔任何法律責任。 EMACS 中調試 1、using the clipboard M-x menu-bar-enable-clipboard (make cut,copy,pasty menu items,use the clipboard) 2、using wheelmice M-x mouse-wheel-mode
Time of Update: 2018-12-04
著作權資訊:本文來自internet,轉載這裡供流媒體愛好者學習和研究使用,請尊重作者的勞動成果。未經授權而在商業上使用原作者的文章屬侵權行為,後果由使用者自負,本人不承擔任何法律責任。VLC程式宏、線程、回調等相關架構的分析第一部分 變數及宏定義1.訊息映射宏vlc_module_begin();…………………..vlc_module_end();2.結構中包含函數struct input_thread_t{ VLC_COMMON_MEMBERS /* Thread