TWI600319B - A method for capturing video and audio simultaneously for one-to-many video streaming - Google Patents
A method for capturing video and audio simultaneously for one-to-many video streaming Download PDFInfo
- Publication number
- TWI600319B TWI600319B TW105130963A TW105130963A TWI600319B TW I600319 B TWI600319 B TW I600319B TW 105130963 A TW105130963 A TW 105130963A TW 105130963 A TW105130963 A TW 105130963A TW I600319 B TWI600319 B TW I600319B
- Authority
- TW
- Taiwan
- Prior art keywords
- audio
- image
- data
- stream
- control module
- Prior art date
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
本發明屬於影音串流處理之技術領域,特別係一種對手機影像與聲音硬體資訊源進行同步化擷取,進而達成以一個影音資訊源同時對多個相異影音伺服器傳遞串流的方法。
隨著科技的日新月異以及網路時代的資訊需求,關於多媒體影音與通訊傳輸的技術蓬勃發展,幾年前僅有少數選擇的網路即時影音傳遞或直播服務,現已成為非常普遍的一種網際網路應用,當然,此種服務所需的技術相應地也成為提供網際網路業者的兵家必爭之地。
最傳統的影音擷取技術,是透過體積龐大攜帶不便的攝影機,在預先決定的拍攝地點進行特定目標的拍攝,接著在返回工作室,將拍攝下的檔案透過電腦整理壓縮,再上傳至對應的網路媒體平台令使用者可以在網路上閱覽攝影畫面,此種拍攝的過程十分繁複,且專業攝影設備價格高昂,一般的使用者難以負擔。
但隨著科技演進,現今的硬體技術與上述最傳統的影音擷取技術相比,兩者已不可同日而語,近年蔚為風潮的智慧型手機或平板電腦
等等一般使用者可以輕易攜帶使用的行動裝置,其影音攝錄功能大多已能夠擷取清晰度足夠且流暢的內容,輔以隨處可得的無線網路,令使用者透過這些行動裝置獲取的影音內容不須繁複手續即可以被上傳至媒體伺服器或平台,故平台的使用者可以更快的速度獲得即時的影音內容,與傳統的技術相較之下,顯然影音技術已產生重大突破。
然而,上述透過一般使用者的行動裝置進行影音串流的技術,仍然受限於諸多狀況,並不完善;首先,目前智慧型手機或平板電腦等行動裝置,係為透過網路與一組即時傳送訊息通訊協定(RTMP)伺服器傳遞即時影音串流,為了達到上述影音串流功能,大多數的行動裝置皆係透過安裝一組以ffmpeg開源碼核心所開發的影音串流應用程式,此種影音串流應用程式會先以取得裝置上影像和聲音的原始資料,再把這些影像和聲音轉換壓縮為數位型態,如此才可使獲取的影像與聲音資料符合RTMP伺服器所需的數位串流格式。
但上述此種影音串流技術,過程需經過數量龐大的影音資料壓縮以及轉換,故其對處理裝置的中央處理器和記憶體造成的負載極大,尤其因為行動裝置的中央處理器的和記憶體功能又更加受限,想當然對負載直播的影音資料處理考驗更大,另外,上述開發應用程式的ffmpeg開發套件,其除了有程式碼數量相對龐大的問題外,開發套件本身更存在多種複雜功能,故其在執行狀態當下,一般都會連帶在裝置上啟動若干需消耗大量效能的項目,造成行動裝置的中央處理器負載更加劇,進而會導致行動裝置耗電量飆升。
而由於瞭解採用ffmpeg套件會導致上述問題,長久以來,若
透過上述技術實施影音串流的話,同時間僅能採取以一個行動裝置對一個RTMP伺服器進行影音串流,若需要上傳影音串流至另一個RTMP伺服器,則必須反覆進行同一步驟,顯然在此種實施流程下,並無法使多RTMP伺服器之間的影音串流資料即時同步,由此可以了解,若要透過前述的技術手段,來實施以一個行動裝置同時對多個RTMP伺服器的多工串流,是無法實現的任務。
綜上可知,己知技術中,以行動裝置等進行即時同步影音串流播放的技術,仍存在著若干問題,將有待本領域中的研究者進一步的研發與創新。
為此,本案發明人構思改良之道,經過慎密的研究計算,以及長期的研發與實作後,終能完成本發明,其係一種以同步擷取影音以進行一對多影音串流之方法。
本發明之主要目的,在於提供一種同步擷取影音以進行一對多影音串流之方法,可以令使用者僅透過一個行動裝置,即可實現對多個RTMP伺服器進行影音資料的同時多工串流,使用者僅需上傳一次影音資料,其他使用者即可在不同的多媒體播放平台即時同步閱聽到相同的影音內容。
本發明的技術手段,主要係提供一種採影音資訊源分離式的執行緒處理架構,其實施方法是以一音頻控制模組和一影像控制模組,透過智慧型手機、平板電腦等等行動裝置的影音硬體的硬體抽象層(Hardware
Abstraction Layer),以分別獲取影像資料(H.26x)和未經編碼的音頻資料。
而由於不同廠商所出產的行動裝置,其所採用的影音晶片模組不盡相同,故本發明的音頻控制模組和影像控制模組需針對其各自擷取的影音資料,其中含有的不規則時間戳(Timestamp)進行校正,以對應不同的晶片,將不同時間戳的影音資料整合成時間軸完全同步的影音資料。
再來,為了達成同時分送影像和音頻資訊至不同串流伺服器的目的,本發明需要經過音頻控制模組來對音頻編碼器做特別的設定,然而,即便欲向多組相異的串流伺服器進行發送,本發明的方法仍僅需針對一組音頻編碼器做初始化設定,當可合理地減少整體流程的工作負擔。
然後,為了達成節省中央處理器效能,以及記憶體使用最大化此兩目的,本發明的影像控制模組和音頻控制模組,需要針對相異的串流伺服器但利用相同的硬體編碼器進行編碼,但其在針對不同的串流伺服器傳輸串流之前,可先指定複數彼此之間獨立的影音緩衝區來儲存資料,如此,一方面可以避免過多的編碼器同時運作而拖垮系統效能,另一方面可以達成在傳送不同串流資料封包時,亦不會因為其中一伺服器異常,而使封包的傳遞產生相互影響。
而為了達成本發明的目的,本發明的方法係根據使用者指定的相異的伺服器網址以及各自的金鑰,以將影像和音頻資料分別同時傳輸至不同的串流伺服器進行播放,而為了達到穿越防火牆來分送資料的目的,亦可以啟用不同連接埠以傳輸資料,本發明為了避免資料在傳輸時因壅塞所導致的丟失狀況,透過一串流控制模組在傳輸起始時,即針對不同的串流伺服器設置個別的Socket緩衝區,並且依據不同串流伺服器需求啟動
獨立的執行緒,以此進行封包之傳遞,當可以達成資料吞吐量的最大化。
最後,本發明的音頻控制模組以及影像控制模組在接收到經編碼後的影像或聲音資料時,會進行資料分析,再根據資料內容判斷格式後,將資訊加入檔頭以打包成統一的串流格式,再交由串流控制模組,啟動不同串流伺服器所專屬的傳遞封包執行緒,將封包放入預先建立的傳送緩衝佇列中,等待一裝置對多伺服器的同步傳送程序開始。
詳細來說,本發明之同步擷取影音以進行一對多影音串流之方法,主要包含下列步驟:一者為音頻擷取部分:首先,通過一音頻控制模組執行一音頻同步程序,以經過硬體抽象層自行動裝置的音效晶片獲取經編碼的一音頻編碼資料,並取得對應編碼程序的一音頻編碼參數,該音頻控制模組並將該音頻編碼資料針對相異的複數串流伺服器暫存;再通過該音頻控制模組執行一音頻校正程序,對暫存的該音頻編碼資料依據音頻編碼器的固定輸出幀率進行時間戳校正。
另一者為影像擷取部分:首先,通過一影像控制模組執行一影像同步程序,以經過硬體抽象層自行動裝置的影像晶片直接獲取經編碼之一影像編碼資料,並取得對應編碼程序的一影像編碼參數,該影像控制模組並將該影像編碼資料針對相異的複數串流伺服器暫存;再通過該影像控制模組執行一影像校正程序,對暫存的該音頻編碼資料依據各該串流伺服器之實際接收時間進行時間戳校正。
上述音頻擷取部分和影像擷取部分可同時進行。
接著,本發明通過一串流控制模組建立需先於影音串流被傳
送至各該串流伺服器的一影像及音頻描述參數,並通過該串流控制模組針對相異的各該串流伺服器認證連線。
該串流控制模組係選擇性地通過一訊息封裝格式將該音頻編碼參數加入經時間戳校正後之該音頻編碼資料中以封裝產生複數音頻串流封包;相對的,該串流控制模組亦選擇性地通過該訊息封裝格式將該影像編碼參數加入經時間戳校正後之該音頻編碼資料中以封裝產生複數音頻串流封包。
最後,該串流控制模組先將該影像及音頻描述參數傳輸至各該串流伺服器,再將針對各該串流伺服器封裝之各該音頻串流封包以及各該影像串流封包,依序同時傳輸至各該串流伺服器,以實施對各該串流伺服器進行一對多影音串流。
綜上可知,本發明即透過以上程序以及模組,實施以一行動裝置同步擷取影音,來進行一對多影音串流之方法。
A‧‧‧使用者
1‧‧‧音頻控制模組
2‧‧‧影像控制模組
3‧‧‧使用者手機
4‧‧‧串流控制模組
5‧‧‧串流伺服器
6‧‧‧串流伺服器組
7‧‧‧串流伺服器
11‧‧‧音頻緩衝區
12‧‧‧音頻編碼器
13‧‧‧音頻資料緩衝區
21‧‧‧影像緩衝區
22‧‧‧影像資料緩衝區
31‧‧‧音效晶片
32‧‧‧影像晶片
S01~S17‧‧‧步驟流程
圖1為本發明同步擷取影音以進行一對多影音串流之方法的模組示意圖。
圖2為本發明同步擷取影音以進行一對多影音串流之方法的模組示意圖。
圖3為本發明同步擷取影音以進行一對多影音串流之方法的模組示意圖。
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域一般技術人員所能思輕易思及的所有其他實施例,皆屬本發明保護的範圍。
請參閱圖1所示,本發明提供的一種同步擷取影音以進行一對多影音串流之方法,係透過圖1中模組實施的,茲說明概述如下:本發明在使用者A透過使用者手機3上傳影音資料時,透過一音頻控制模組1,以自使用者手機3當中的音效晶片31的硬體抽象層獲取未經編碼的原始音頻資料,以輸入音頻緩衝區11,接著,當獲取的原始音頻資料透過套用預先設定之音頻編碼器12被編碼輸出時,音頻控制模組1自輸出佇列獲取經編碼後的音頻編碼資料,音頻控制模組1整理音頻編碼資料並輸入複數個分別對應相異串流伺服器的音頻資料緩衝區13,音頻控制模組1亦一齊記錄音頻編碼器12編碼時所使用的對應音頻編碼參數。
另外,與音頻獲取程序同時進行地,本發明透過一影像控制模組2,以自使用者手機3當中的影像晶片32的硬體抽象層輸出佇列,獲取已經過編碼的影像編碼資料,以輸入影像緩衝區,影像控制模組2對影像編碼資料進行整理,記錄編碼時所使用的對應影像編碼參數,並將影像編碼資料輸入複數個分別對應相異串流伺服器的影像資料緩衝區22。
接著,在此實施例中,本發明係透過一串流控制模組4對三
組相異的串流伺服器5、串流伺服器6、串流伺服器7建立連結,以將音頻控制模組1和影像控制模組2對應串流伺服器5、串流伺服器6、串流伺服器7各自校正打包好的影音串流封包同步分送出去,以完成本發明之同步擷取影音以進行一對多影音串流之方法。
再請參照本發明的圖2,其係本發明同步擷取影音以進行一對多影音串流之方法的步驟流程圖,茲說明分述如下:
步驟S01、開始步驟:
本發明之方法,為了使行動裝置的中央處理器(CPU)與圖形處理器(GPU)兩者在串流程序中,能達成較佳的使用效率和平衡,故須對行動裝置硬體產生的影像及音頻,各自分別使用兩個專屬的執行緒來進行處理,其為:編碼接收執行緒,以及串流封裝執行緒。
其中,編碼接收執行緒其係自影音硬體的硬體抽象層獲取資料,再存放於特定的資料緩衝區內的執行緒;而串流封裝執行緒係將資料自資料緩衝區中取出,再封裝成串流格式後輸出,而分別使用此兩個專屬執行緒處理影像和音頻,將具有以下優點:(a)分屬兩個執行緒處理,可避免應用程式耗費過多時間等待獲取硬體抽象層的資料,而導致無法及時將特定緩衝區內的資料封裝送出的狀況;(b)另一方面,當網路連線狀況不佳時,應用程式會忙碌於傳送封裝後的串流資料,而此時向硬體抽象層獲取資料的動作常會因此被延遲。
而當上述兩種情況發生,很可能導致影像或音頻資料產生不連續現象,甚或是使應用程式崩潰,故本發明採用專屬的執行緒分別處理影像和音頻,當可以避免影像和音頻之間的相互影響所造成之不穩定與負
載過重,並節省裝置的硬體效能和維持作業系統穩定性。
進行本步驟的程式碼範例如下所示:
步驟S02、透過音頻控制模組取得未經編碼之原始音頻資料:
由於在聲音擷取方面來說,音頻控制模組並不需要額外因應相異的串流伺服器之間的需求來進行設定,故本發明的音頻控制模組在整
體程序啟動時,僅需設定一次串流伺服器的共用音頻來源相關屬性,其稱作一音頻關聯參數,參數內容可以包括:取樣率(Sample Rate)、取樣通道個數(Stereo/Mono)、擷取音頻之通道來源(例如:麥克風或其它裝置)、音頻資料的位元數(8 bit或16 bit)等等,而音頻資訊若在編碼程序中產生了丟失,會明顯地造成閱聽者在閱聽時產生音頻不連續的狀況,故本發明的音頻控制模組額外對音頻資訊設立資料緩衝區,用以先暫存所擷取的音頻資料;另外,為了確保擷取到的音頻資料能夠不間斷地提供給音頻編碼器進行處理,本發明進行擷取音頻資料的執行緒,其優先權將被設定高於其他的一般執行緒,旨在避免其它的執行緒搶斷音頻擷取的工作,使作業系統在進行執行緒排程時,可以保證中央處理器提供較多時間給擷取音頻資料的工作。
進行本步驟的程式碼範例如下所示:
步驟S03、對音頻編碼器進行音頻關聯參數設定:
本發明的音頻控制模組,將先設定音頻編碼器的音頻關聯參數,其包括:音頻編碼器所使用的編碼格式(Profile)、音頻編碼的採樣率
(Sample Rate)、音頻編碼時所取之聲道數目(單聲道或是立體聲)、音頻編碼位元率,音頻控制模組並將此設定值套用至音頻編碼器上,再啟動音頻編碼器進行編碼程序。
進行本步驟的程式碼範例如下所示:
步驟S04、獲取經編碼的音頻編碼資料:
本發明的音頻控制模組建立音頻編碼接收執行緒,其在獲取經編碼器編碼的音頻編碼資料前,將先透過同步鎖機制確認未經編碼的原始音頻資料己儲存在音頻緩衝區中,若確認完成,則透過音頻編碼器的硬體輸出層獲取輸出佇列的音頻編碼資料,再分送至對應不同串流伺服器所屬的個別執行緒的音頻資料緩衝區中,音頻控制模組並記錄下音頻資料的資料量大小,並移除不需的音頻資料檔頭,只取實際所需之音頻資料,等待輸出音頻串流封包的執行緒依序來取出使用。
進行本步驟的程式碼範例如下所示:
步驟S05、整理並紀錄音頻編碼資料及編碼時的音頻關聯參數:
在啟動音頻編碼器的音頻編碼程序後,音頻控制模組將可得到針對此次音頻編碼程序所產生的ASC(Audio Specific Config)資訊,其係可提供給後端解碼器參考使用,此ASC參數係用來描述此次音頻編碼程序所利用的音頻格式、音頻取樣頻率或音頻通道數量等,此參數需受保存,以在稍後開始傳遞音頻資料封包串流時,作為第一個傳遞的音頻封包,才能提供給解碼端解碼時參考使用。
進行本步驟的程式碼範例如下所示:
步驟S06、進行音頻編碼資料的時間戳校正補償:
本發明之音頻控制模組會將音頻編碼資料自專屬的音頻緩
衝區中取出以進行時間戳校正,由於音頻編碼器是採取每秒固定幀率的輸出,故若使用收到音頻資料時的系統時間作為時間戳(Timestamp)的話,解碼端伺服器則會依據該時間戳進行解碼,其結果將導致音頻聽起來不連續,所以在記錄音頻的時間戳記時,本發明利用了音頻編碼器的輸出幀率固定之特性,以計算幀與幀之間的時間間隔,再乘以目前的累計幀數,即為即時的音頻時間戳記值。
進行本步驟的程式碼範例如下所示:
步驟S07、對影像編碼器進行影像關聯參數設定:
本發明之影像控制模組,將預先被設定有影像編碼時所需的影像參數,其稱作一影像關聯參數,其內容可以包括:影像寬度、影像高度、影像編碼幀率(Frame per Second,FPS)、影像之圖像群組(Group of Pictures,GOP)、影像編碼位元率、影像編碼格式等等,影像控制模組係透過該影像關聯參數來建立影像擷取來源和影像編碼器之間的關連,以使影像編碼器可以開始進行影像編碼程序。
進行本步驟的程式碼範例如下所示:
步驟S08、透過影像控制模組取得經編碼之影像編碼資料:
通過步驟S07後,本發明之影像控制模組建立起擷取影像的一影像編碼接收執行緒,而本發明之影像控制模組將先檢查影像編碼器的編碼輸出佇列是否有經編碼後的影像資料,若結果為是,則影像控制模組將透過影像編碼器的硬體抽象層獲取即時的影像編碼資料,影像控制模組亦可額外記錄影像編碼資料的大小、影像是否為關鍵幀(I-frame)、影像資料的時間戳、或將不需要的影像資料檔頭移除只留下實際所需的編碼資料,影像控制模組再將影像編碼資料以及這些資訊儲存於其專屬的影像緩衝區之中。
進行本步驟的程式碼範例如下所示:
步驟S09、整理並紀錄影像編碼資料及編碼時的影像編碼參數:
在影像編碼器啟動影像編碼後,本發明的影像控制模組可獲取到此次影像編碼程序所產生的SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)參數,參數內容包含使用於編碼之影像格式·編碼之影像格式級別、編碼影像的長寬,去區塊(Deblock)濾波器的種類等等資訊;此兩
參數皆需受到保存,以在稍後傳遞影像資料封包的串流時,包裝為第一個傳遞出去的影像封包,才可將用以描述初始化影像解碼器所需要的信息參數提供給解碼端。
進行本步驟的程式碼範例如下所示:
步驟S10、進行影像編碼資料的時間戳校正補償:
本發明的影像控制模組,將根據本發明欲分送資訊的相異串流伺服器,以將影像編碼資料從專屬的影像緩衝區中取出,再分送至不同
的串流伺服器所屬的個別執行緒的影像資料緩衝區,但由於各行動裝置所使用的影像編碼器型態有可能不同,其中,有若干影像編碼器並非採用固定幀率(FPS)輸出,而是會隨著目前執行的程式來改變編碼輸出的幀率,所以若在記錄影像資料的時間戳(Timestamp)時,若以固定之時間間隔來進行計算,使影像觀看起來有不連續或忽快忽慢的狀況發生,因此本發明的影像控制模組會影像編碼資料所使用的時間戳記,根據狀況修改為實際收到影像編碼資料的時間,以達到校正時間使影像連續之目的。
進行本步驟的程式碼範例如下所示:
接著,請參照本發明的圖3,其係為接續圖2之本發明同步擷取影音以進行一對多影音串流之方法的步驟流程圖。
步驟S11、整合並建置影像與聲音的影像及音頻描述參數:
串流協定建立後,在進行影像參數封包和音頻參數封包的傳遞前,本發明的串流控制模組須先傳送關於此次串流將要傳遞的影像與聲音的影像及音頻描述參數(Metadata),其中,參數內容包含有影像寬度(Width)、影像高度(Height)、影像編碼資料量(Video Data Rate)、影像幀率(Frame Rate)、影像編碼格式(Video Codec Id)、音頻編碼資料量(Audio Data Rate)、音頻取樣率(Audio Sample Rate)、音頻取樣數(Audio Sample
Size)、音頻通道數目(Audio Channels)、音頻為單聲道(Mono)或是立體聲道(Stereo)、音頻編碼格式(Audio Codec Id),該資訊在影像編碼和音頻編碼建立時都己獲得,即為音頻編碼參數以及影像編碼參數,需在串流控制模組將影像或音頻封包送出前,先送出此影像及音頻描述參數,以供解碼端在串流建立時能參考使用。
進行本步驟的程式碼範例如下所示:
步驟S12、檢查與標記音頻編碼資料:
在串流控制模組對音頻資料緩衝區內經校正的音頻編碼資料封裝成串流資料前,需先確認音頻編碼資料的取樣率、立體聲或單聲道、音頻位元數或音頻編碼格式,在封裝時,串流控制模組需在串流資料之中標記這些資訊,以利解碼伺服器端作解碼參考。
進行本步驟的程式碼範例如下所示:
步驟S13、檢查與標記影像編碼資料:
在串流控制模組對影像資料緩衝區內經校正的影像編碼資料封裝成串流資料前,首先需檢查影像幀是否為關鍵幀(I-Frame)、是否為SPS或PPS封包、影像編碼器的編碼格式等等相關資訊,在封裝時,串流控制模組需在串流資料中標記這些資訊,解碼端才可根據這些資料配置所需的影像解碼資源進行解碼。
進行本步驟的程式碼範例如下所示:
步驟S14、設定伺服器串流連線:
本發明的串流控制模組將針對相異的串流伺服器進行連線的初始設定,首先,先初始化連線狀態的Socket並分配連線時所需資源,再設定串流伺服器網址、連接埠以及金鑰,接著啟動串流控制模組與串流伺服器之間連線,並設定連線狀態為認證階段,經由雙方的握手(Handshake)
認證機制確認後,並設定傳輸時的參數,例如:最大訊息封包大小(chunk size)或是帶寬(Bandwidth),至此,串流連線之初始設定完成,串流控制模組再隨後將連線狀態變更為可以傳遞資料的階段。
進行本步驟的程式碼範例如下所示:
步驟S15、進行資料封裝:
由於傳送串流封包時,需要透過特定格式的資料檔頭(Message Header)提供給解碼端解析,故串流控制模組必須根據目前處理的串流資料的內容,判斷需選擇哪種資料檔頭來進行資料封裝,而目前可能使用的檔頭包含下列四種格式(Format=0、1、2、3):
格式0(FMT0)的資料檔頭長度為11位元組,其可包含時間戳差值(3bytes)、訊息長度(3bytes)、訊息種類ID(1bytes)、訊息串流ID(4bytes)等部分,其係代表此封包為串流中一個獨立的訊息。
格式1(FMTI)的資料檔頭長度為7位元組,其可包含時間戳差值(3bytes)、訊息長度(3bytes)、訊息種類ID(1bytes),訊息串流ID將被去除,其係代表此封包為同一個串流中的訊息。
格式2(FMT2)的資料檔頭長度為3位元組,其可包含時間戳差值(3bytes),去除掉訊息長度、訊息種類ID、訊息串流ID等部分,其係表示此封包不但係同一串流中的資訊,而且資料種類及大小係與先前訊息
相同。
格式3(FMT3)的資料檔頭長度為0位元組,使用此種資料檔頭表示一個訊息被拆成多筆分送,後續的資料在解碼端皆可沿用第一筆訊息的時間戳差值、訊息長度、訊息種類ID以及訊息串流ID。
串流控制模組係自影像及音頻描述參數分析出校正過的時間戳及資料大小等,再根據這些資訊建構一般串流封包格式的資料檔頭,舉例來說,可為HEADER FORMAT(0)、CHUNK STREAM ID(3)、DATA MESSAGE TYPE ID(18),並將分析出的時間戳差值及資料大小填入封包的資料檔頭,再將所要傳送的資料接於資料檔頭之後,即完成資料串流封包的建構。
進行本步驟的程式碼範例如下所示:
步驟S16、進行音頻編碼資料的串流封裝:
經編碼過的音頻編碼資料,將被音頻控制模組送入執行緒所專屬的音頻資料緩衝區,待串流控制模組依執行緒解析資料內容,分析出時間戳及資料大小,並根據上次音頻資料封包的時間戳和本次音頻資料封包的時間戳相減得出差值,然後根據取得的該些資訊,串流控制模組選擇性地建構對應音頻串流封包格式的資料檔頭,例如:HEADER FORMAT(0~3)、CHUNK STREAM ID(4)、AUDIO MESSAGE TYPE ID(8),加上分析出來的時間戳差值和資料大小等填入封包的資料檔頭中,再將音頻
資料置於資料檔頭後,即完成音頻串流封包的建構,而聲音部份因為資料量相對小,每個Frame應不會超出一次所能傳輸的最大訊息封包大小(於步驟S14協議時所定義的chunk size),所以音頻串流封包可以直接交由Socket傳送至串流伺服器。
本步驟的程式碼截圖如下:
步驟S17、進行影像編碼資料的串流封裝:
經編碼過的影像編碼資料,將被影像控制模組送入執行緒所專屬的影像資料緩衝區,待串流控制模組依執行緒解析資料內容,分析出時間戳及資料大小,並根據上次影像資料封包的時間戳和本次影像資料封包的時間戳相減得出差值,然後根據取得的該些資訊,串流控制模組選擇性地建構對應影像串流封包格式的資料檔頭,舉例來說,可為HEADER FORMAT(0~3)、CHUNK STREAM ID(5)、VIDEO MESSAGE TYPE ID(9),並將分析出來的時間戳差值、資料大小等填入封包的資料檔頭中,再將影像資料置於資料檔頭之後,以完成影像串流封包的建構,但由於影像封包可能包含有關鍵幀的資料,其資料量有可能超過一次能傳輸的最大訊息封包大小(於步驟S14協議時所定義的chunk size),此時則需先切割影
像串流封包(視實際需求指定步驟S15所列的不同資料檔頭),再交由Socket發送影像串流封包至串流伺服器。
進行本步驟的程式碼範例如下所示:
接續步驟S16和步驟S17後,本發明之串流控制模組即可將封裝過的音頻和影像串流傳輸至不同的串流伺服器,進而完成本發明之同步擷取影音以進行一對多影音串流之方法。
上列詳細說明係針對本發明之一可行實施例之具體說明,惟該實施例並非用以限制本發明之專利範圍,凡未脫離本發明技藝精神所為之等效實施或變更,均應包含於本案之專利範圍中。
S01~S17‧‧‧步驟流程
Claims (10)
- 一種同步擷取影音以進行一對多影音串流之方法,其步驟包含:通過一音頻控制模組執行一音頻同步程序,以經過硬體抽象層自行動裝置的音效晶片獲取經編碼的一音頻編碼資料,並取得對應編碼程序的一音頻編碼參數,該音頻控制模組並將該音頻編碼資料針對相異的複數串流伺服器暫存;通過該音頻控制模組執行一音頻校正程序,對暫存的該音頻編碼資料依據音頻編碼器的固定輸出幀率進行時間戳校正;通過一影像控制模組執行一影像同步程序,以經過硬體抽象層自行動裝置的影像晶片直接獲取經編碼之一影像編碼資料,並取得對應編碼程序的一影像編碼參數,該影像控制模組並將該影像編碼資料針對相異的複數串流伺服器暫存;通過該影像控制模組執行一影像校正程序,對暫存的該音頻編碼資料依據各該串流伺服器之實際接收時間進行時間戳校正;通過一串流控制模組建立需先於影音串流被傳送至各該串流伺服器的一影像及音頻描述參數;通過該串流控制模組針對相異的各該串流伺服器認證連線;該串流控制模組選擇性地通過一訊息封裝格式將該音頻編碼參數加入經時間戳校正後之該音頻編碼資料中以封裝產生複數音頻串流封包;該串流控制模組並選擇性地通過該訊息封裝格式將該影 像編碼參數加入經時間戳校正後之該音頻編碼資料中以封裝產生複數音頻串流封包;以及該串流控制模組先將該影像及音頻描述參數傳輸至各該串流伺服器,再將針對各該串流伺服器封裝之各該音頻串流封包以及各該影像串流封包,依序同時傳輸至各該串流伺服器,以實施對各該串流伺服器進行一對多影音串流。
- 如申請專利範圍第1項所述之同步擷取影音以進行一對多影音串流之方法,其中,該音頻同步程序至少包含以下步驟:該音頻控制模組自行動裝置的音效晶片直接擷取原始音頻資料,並將擷取之原始音頻資料輸入音頻緩衝區;該音頻控制模組套用預設的一音頻關聯參數對音頻編碼器進行設定;該音頻控制模組依據一音頻編碼接收執行緒,通過設定後之音頻編碼器的硬體抽象層,以自輸出佇列中獲取存於音頻緩衝區中的原始音頻資料經音頻編碼器編碼後產生之該音頻編碼資料,並將該音頻編碼資料分別傳送到針對複數串流伺服器所設置之複數音頻資料緩衝區當中;以及該音頻控制模組紀錄該音頻編碼資料以及該音頻編碼資料經音頻編碼器編碼時套用的該音頻編碼參數。
- 如申請專利範圍第1項所述之同步擷取影音以進行一對多影音串流之方法,其中,該影像同步程序至少包含以下步驟:該影像控制模組套用預設的一影像關聯參數對影像編碼器進行設定; 該影像控制模組依據一影像編碼接收執行緒,通過行動裝置影像晶片的硬體抽象層,以自輸出佇列中直接獲取經編碼之該影像編碼資料;該影像控制模組將該影像編碼資料輸入影像緩衝區;該影像控制模組紀錄該影像編碼資料經影像編碼器編碼時套用的該影像編碼參數;以及該影像控制模組將影像緩衝區中的該影像編碼資料分別傳送到針對複數串流伺服器所設置之複數影像資料緩衝區中。
- 如申請專利範圍第1項所述之同步擷取影音以進行一對多影音串流之方法,其中,該訊息封裝格式至少包含以下種類:格式0的資料檔頭(FMT0),其包含有封包的時間戳、訊息長度、訊息種類ID、訊息串流ID等部分,表示封包為串流中的一個獨立訊息;格式1的資料檔頭(FMT1),其係用以表示封包為同一串流中的訊息;格式2的資料檔頭(FMT2),其係用以表示封包為同一串流中的訊息,且資料內容類別及大小與先前訊息相同;以及格式3的資料檔頭(FMT3),其係用以表示封包係傳送被拆成多筆分送的同一個訊息,後續的封包可沿用第一筆訊息的格式解碼。
- 如申請專利範圍第2項所述之同步擷取影音以進行一對多影音串流之方法,其中,該音頻編碼接收執行緒之優先度高於一般執行緒,以使該音頻控制模組透過該音頻編碼接收執行緒連續地將原始音頻資料輸入音頻緩衝區。
- 如申請專利範圍第1至3項中任一項所述之同步擷取影音以進行一對多影音串流之方法,其中,該音頻關聯參數係包含使用於編碼之音頻格式、音頻取樣頻率、音頻通道數量或音頻編碼位元率的其中之一或兩者以上之組合。
- 如申請專利範圍第1至3項中任一項所述之同步擷取影音以進行一對多影音串流之方法,其中,該音頻編碼參數係為一種ASC(Audio Specific Config)參數,其包含使用於編碼之音頻格式、音頻取樣頻率或音頻通道數量的其中之一或兩者以上之組合。
- 如申請專利範圍第1至3項中任一項所述之同步擷取影音以進行一對多影音串流之方法,其中,該影像關聯參數係為進行影像編碼所需的VCEG(Video Coding Experts Group)影像編碼標準參數,其包含:影像寬度、影像高度、影像編碼幀率(Frame per Second,FPS)、影像之圖像群組(Group of Pictures,GOP)、影像編碼位元率或影像編碼格式的其中之一或兩者以上之組合。
- 如申請專利範圍第1至3項中任一項所述之同步擷取影音以進行一對多影音串流之方法,其中,該影像編碼參數係為SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)參數,包含使用於編碼之影像格式、編碼之影像格式級別、編碼影像的長寬,去區塊(Deblock)濾波器種類的其中之一或兩者以上之組合。
- 如申請專利範圍第1至3項中任一項所述之同步擷取影音以進行一對多影音串流之方法,其中,該影像及音頻描述參數係包含該影像關聯參數、該影像編碼參數、該音頻關聯參數以及該音頻編碼參數。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105130963A TWI600319B (zh) | 2016-09-26 | 2016-09-26 | A method for capturing video and audio simultaneously for one-to-many video streaming |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105130963A TWI600319B (zh) | 2016-09-26 | 2016-09-26 | A method for capturing video and audio simultaneously for one-to-many video streaming |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI600319B true TWI600319B (zh) | 2017-09-21 |
TW201813407A TW201813407A (zh) | 2018-04-01 |
Family
ID=60719458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105130963A TWI600319B (zh) | 2016-09-26 | 2016-09-26 | A method for capturing video and audio simultaneously for one-to-many video streaming |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI600319B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI673613B (zh) * | 2018-10-17 | 2019-10-01 | 財團法人工業技術研究院 | 伺服器及其資源調控方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200922328A (en) * | 2007-11-13 | 2009-05-16 | Univ Nat Cheng Kung | Hierarchical multimedia streaming system of utilizing video synchronization and bandwidth adaption techniques |
EP0847191B1 (en) * | 1996-12-09 | 2009-07-29 | STMicroelectronics, Inc. | Synchronizing an audio-visual stream which is synchronized to a clock with the timebase of a video display device which is synchronized to a different clock |
WO2010078657A1 (en) * | 2009-01-08 | 2010-07-15 | D-Box Technologies Inc. | Cpu platform interface method and device for synchronizing a stream of motion codes with a video stream |
US20140053214A1 (en) * | 2006-12-13 | 2014-02-20 | Quickplay Media Inc. | Time synchronizing of distinct video and data feeds that are delivered in a single mobile ip data network compatible stream |
TW201442496A (zh) * | 2013-04-23 | 2014-11-01 | Hon Hai Prec Ind Co Ltd | 影音同步系統及方法 |
EP2866447B1 (en) * | 2010-07-30 | 2016-05-25 | Deutsche Telekom AG | Method and apparatus for evaluating the quality of a video sequence by temporally synchronizing the encrypted input bit stream of a video decoder with the processed video sequence obtained by an external video decoder |
-
2016
- 2016-09-26 TW TW105130963A patent/TWI600319B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0847191B1 (en) * | 1996-12-09 | 2009-07-29 | STMicroelectronics, Inc. | Synchronizing an audio-visual stream which is synchronized to a clock with the timebase of a video display device which is synchronized to a different clock |
US20140053214A1 (en) * | 2006-12-13 | 2014-02-20 | Quickplay Media Inc. | Time synchronizing of distinct video and data feeds that are delivered in a single mobile ip data network compatible stream |
TW200922328A (en) * | 2007-11-13 | 2009-05-16 | Univ Nat Cheng Kung | Hierarchical multimedia streaming system of utilizing video synchronization and bandwidth adaption techniques |
WO2010078657A1 (en) * | 2009-01-08 | 2010-07-15 | D-Box Technologies Inc. | Cpu platform interface method and device for synchronizing a stream of motion codes with a video stream |
EP2866447B1 (en) * | 2010-07-30 | 2016-05-25 | Deutsche Telekom AG | Method and apparatus for evaluating the quality of a video sequence by temporally synchronizing the encrypted input bit stream of a video decoder with the processed video sequence obtained by an external video decoder |
TW201442496A (zh) * | 2013-04-23 | 2014-11-01 | Hon Hai Prec Ind Co Ltd | 影音同步系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201813407A (zh) | 2018-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6377784B2 (ja) | オーディオビデオ同期取込によって一対多オーディオビデオストリーミングを行う方法 | |
US10177958B2 (en) | Method for synchronously taking audio and video in order to proceed one-to-multi multimedia stream | |
TWI668982B (zh) | 用於多媒體和檔案傳輸的傳輸介面的方法及伺服器設備、及用於記錄相關指令於其上的電腦可讀取儲存媒體 | |
KR102049907B1 (ko) | Mmt 시스템을 위한 미디어 데이터 전송 장치 및 방법, 그리고 미디어 데이터 수신 장치 및 방법 | |
JP6302274B2 (ja) | 送信装置及び受信装置 | |
CN105610824B (zh) | 一种基于屏幕镜像及rtsp流媒体框架的屏幕共享方法 | |
CN112752115B (zh) | 直播数据传输方法、装置、设备及介质 | |
WO2008061416A1 (fr) | Procédé et système permettant d'accepter des données media de divers formats de codage | |
WO2011004886A1 (ja) | 配信システムと方法とゲートウェイ装置とプログラム | |
US8214708B2 (en) | Video transmitting apparatus, video receiving apparatus, and video transmission system | |
US11895352B2 (en) | System and method for operating a transmission network | |
US10924524B2 (en) | Communication devices, communication data generation method, and communication data processing method | |
US20160352798A1 (en) | Systems and methods for capture and streaming of video | |
CN1534503A (zh) | 实现网络游戏中实时影音会谈的方法、系统及储存媒体 | |
CN112954433A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
CN109040818B (zh) | 直播时的音视频同步方法、存储介质、电子设备及系统 | |
US11778250B2 (en) | Techniques for reducing streaming start latency | |
CN108124183B (zh) | 以同步获取影音以进行一对多影音串流的方法 | |
TWI600319B (zh) | A method for capturing video and audio simultaneously for one-to-many video streaming | |
EP3352077A1 (en) | Method for synchronously taking audio and video in order to proceed one-to-multi multimedia stream | |
CN107248991B (zh) | 基于视频关键帧的ip流调度系统及方法 | |
CN115842919B (zh) | 一种基于硬件加速的视频低延迟传输方法 | |
WO2024060134A1 (zh) | 信息处理方法、装置、电子设备和计算机可读存储介质 | |
Yu et al. | Mobile Monitoring System Development: Application of H. 264 Real-Time Streaming Media | |
CN115695858A (zh) | 基于sei加密的虚拟制片视频母片编解码系统、方法及平台 |