摘 要:開發視頻和音頻的實時傳輸和回放,同時對如何才能真正的實現數字視頻音頻的實時同步傳輸進行了深入的研究和探討。
關鍵詞:數字視頻音頻;實時同步傳輸;策略及算法
隨著我國科學技術水平的快速發展,我國的信息技術也取得了較大的進步,而人們對視頻音頻多媒體通信也提出了更高的需求,因此,實現視頻音頻的實時同步傳輸對于提高人們的工作效率以及保證人們的生活質量都有著重要的意義,而在此過程中我們重點解決的就是視頻音頻信號的同步采集、同步傳輸、壓縮、信息的接收以及同步播放等問題,這樣就能保證客戶端的聲音和圖像與采集現場的聲音和圖像是同步的,視頻和音頻的實時就是要降低聲音和信息播放端與采集端的延時,而視頻和音頻的同步則是要減小用戶所聽到的聲音和看到的圖像的時間差,從而保證人們的視聽感受。
1 音頻視頻信號的采集
通常情況下,在采集聲音信號時,我們選擇的設備為麥克風連聲卡,而在采集視頻信號時,我們采用的設備則為攝像頭連視頻采集卡,另外,如果對于視頻的采集工作沒有過高的要求,那么在計算機的USB接口上直接連上USB攝像頭也是可以的。
2 視頻音頻同步方案的選擇
在系統對音頻視頻系統采集完成后,系統會將它們的數據流放入到不同的緩沖區之中,而當其中任何一個緩沖區的數據流采滿后,那么系統就會調用回調函數,此時就會讀取音頻數據或是視頻數據,而如果視頻的數據太大導致無法有效的讀取時,就應先將其壓縮,在此過程中,要想保證客戶端的音頻和視頻實現同步,我們可以采取以下兩種方案:
2.1 我們可以將視頻數據和音頻數據打包成一個文件一起發送給客戶端,這種方案實現起來是相對容易的,但是在實際操作的過程中卻也存在著一定的問題:在采集音頻數據和視頻數據時,如果將視頻作為基點并且在采集到1幀視頻數據的過程中將音頻數據依次追加到已經準備好的緩沖區中,在采集1幀視頻數據完成后將視頻數據和音頻數據同時發送出去,這樣就能夠實現在客戶端的音頻和視頻的同步顯示,這種實現方案的數據實時性好,并且音頻采集的速度也得到了很大提升,然而卻也由于音頻采集的較快的速度,就降低了每1幀視頻數據之間的間隔,當進入到緩沖區中讀取音頻數據時,下1幀視頻數據就可能將上1幀視頻數據覆蓋,那么所得到的數據就是錯誤的,在實際調試的過程中如果出現了此類問題,那么在回放音頻數據時就會感受到明顯的刺耳的聲音;而如果將音頻作為基點并將視頻數據放入到已經準備好的緩沖區中,在存放完成1幀視頻數據后將視頻數據和音頻數據同時發送出去,達到客戶端后也能實現音頻和視頻的同步顯示,然而因為視頻的數據太大,通常如果352×288×24是我們采集視頻的格式,那么1幀的視頻數據就要接近300k,將其壓縮后也有8k左右,而音頻數據就要小很多,一般情況下8位單聲道是我們采集的音頻格式,1s的數據量就在11k左右,而每1s采集到的音頻為10幀,那么每1幀的數據就是1.1k,而每1s采集到的視頻為20幀,在一個發送包中就會有2幀視頻和1幀音頻,這樣每次傳輸的數據量就是很大的,就有可能導致無法傳輸的問題出現,并且當采集完成1幀音頻數據后,這2幀視頻數據可能還沒有采集完成,那么在發送包中的視頻數據就不夠準確,客戶端也很難編程,而如果將音頻的采集速度設定為每s10幀,速度過慢就降低采集到數據的實時性。
2.2 這種方案為分別傳送視頻數據和音頻數據,表面上看起來并沒有實現視頻和音頻的同步,但是如果可以進一步的提高音頻的采集速度,保證每1幀音頻的數據都是很小的,就是可以實現視頻數據和音頻數據的同步傳輸的。比如我們采集的音頻數據為每s25幀,音頻格式仍采用8位單聲道,這樣1幀的音頻數據為441個字節,數據不但具有較高的實時性,同時進行網絡傳輸也是十分方便的,將緩沖區中的音頻數據流直接轉變成為音頻數據發送給客戶端,而在采集填滿緩沖區中的視頻數據流后,系統就會立即調用視頻數據回調函數,在該函數中壓縮數據源的地址參數就是緩沖區中視頻數據流的首地址,并且應在填入了數據的長度等參數后調用數據壓縮線程,此時就將原本為BMP格式的視頻數據幀轉換成JPEG格式的視頻數據幀,之后便可以將視頻數據幀變成視頻數據包發送給客戶端了。
在數字視頻音頻實時同步傳輸的探索和實現過程中,為了更好的區別視頻數據包和音頻數據包,我們通常都會在包頭進行標識,而在實際研究的過程中我們發現視頻數據包和音頻數據包的長度是有著較大的區別的,根據包的大小也能輕松的區分視頻數據包和音頻數據包,在系統采滿1幀后,就會立即將音頻視頻發送出去,客戶端接收到的視頻數據包不需要與音頻數據包協調而立即進行解壓顯示,同時客戶端接收到的音頻數據包也不需要與視頻數據包協調而立即進行播放,對兩者的回放就能實現同步,在傳輸的過程中如果出現了錯誤而丟失了一些幀,數據的實時性也只會受到一點影響。
3 數據的實時性
在系統中我們發送視頻數據和音頻數據所采用的方式都是幀,但是因為視頻的數據量太大,為了減少系統的延遲性,那么就應先壓縮視頻數據,而在考慮到網絡廣播或是多播的情況下,我們選擇UDP協議作為網絡協議,在回放音頻數據流時我們選擇的音頻回放函數為WaveOut,在接收到每一幀音頻數據后,都應先用WaveOut打開設備后才能播放,播放完成后再釋放設備。與視頻數據量相比,音頻的數據量要小得多,并且打開設備以及釋放設備都要用掉一定的時間,那么就可能出現聲音失真的問題。而如果要加大每一幀的音頻數據,雖然可能避免出現聲音失真的問題,卻又降低了數據的實時性,由于WaveOut在播放一段緩沖區時,在最初階段如果向聲卡寫入了數據是可以立即返回的,那么我們就可以提前制定一塊緩沖區,其大小應與8為單聲道1s的數據大小相同,當接收到第一幀音頻數據后,應將其放到緩沖區的最前面,同時立即播放音頻數據,此后每一幀音頻數據會相繼的接收到,并且也分別的拷貝到播放緩沖區中,這樣在開始播放音頻數據后就不會有1s的延遲,播放的過程中不斷的向緩沖區中填入數據,由于網絡運行時是存在著不確定性的,所以,建議在第二幀或是第三幀啟動音頻設備并且開始播放,而這點誤差也是用戶感覺不到的。
4 多線程的應用
要想進一步的提高系統的同步性和實時性,那么還必須能夠較好的應用多線程,舉例來說,在視頻回調函數中如果啟動了壓縮線程就應立即返回,這樣在壓縮視頻數據的過程中,系統還可以同時調用音頻回調函數,此時就可以啟動發送線程將音頻數據發送給客戶端。如果能夠較好的應用多線程,不斷能夠簡化程序,同時還能提高網絡的傳輸速度和系統的運行效率,在客戶端進行音頻的回放以及視頻的壓縮等工作時也應盡可能的應用多線程,從而真正的實現視頻音頻的實時和同步。
5 結束語
對數字視頻音頻實現實時同步傳輸的策略和算法進行了深入的研究和探討,在我國科學技術水平快速發展的大背景下,我國的網絡技術也得到了迅速的發展,動態壓縮技術的水平不斷提高,因此,數字視頻音頻的實時同步傳輸技術也將應用到我國的各行各業中,其將擁有更加廣闊的發展空間和應用前景,在這方面所進行的研究工作具有重要的現實意義。
參考文獻
[1]李顯濟.視頻與音頻實時多點傳輸的研究與實現[J]計算機工程,2009.
[2]郭堯.基于AVS的嵌入式音視頻同步傳輸系統設計[D].長春:吉林大學,2009.
[3]徐剛.實時視頻傳輸的自適應調節方法及其應用[J].計算機工程與設計,2008.