引言(yan):
當(dang)今社會,音視(shi)頻流(liu)(liu)已經成(cheng)為我(wo)們(men)日(ri)常生活和(he)工作中不可(ke)或缺的(de)一部分。無論是(shi)進行視(shi)頻會議、在線教育、遠程(cheng)工作,還是(shi)觀看流(liu)(liu)媒體內容,音視(shi)頻流(liu)(liu)都發(fa)揮著重要的(de)作用。然而(er),有(you)時(shi)我(wo)們(men)可(ke)能會遇(yu)到音視(shi)頻流(liu)(liu)異常的(de)情況,如畫面卡頓、聲(sheng)音延(yan)遲或失真等問題,這(zhe)給我(wo)們(men)的(de)使用體驗(yan)和(he)工作效率帶來了困擾(rao)。
本(ben)文將深入探討一些音(yin)視(shi)(shi)頻異常流(liu)的問(wen)題,分析其可能的原因和解決(jue)方法。將幫助讀者(zhe)更好地理解和解決(jue)音(yin)視(shi)(shi)頻異常流(liu)的困擾,提高其在音(yin)視(shi)(shi)頻通信和媒體消費中的體驗。
1. 音(yin)視頻異常(chang)流(liu)現(xian)象(xiang)描述
異常(chang)流 yichang.flv播放表(biao)現為卡頓。
2. 音視頻(pin)異常流分析(xi)
卡頓常(chang)見原因有網絡問題導致數據不(bu)足(zu),音(yin)視頻幀同步機(ji)制(zhi)(音(yin)視頻不(bu)同步),時間戳異常(chang),硬件性能不(bu)足(zu),代碼邏輯等,遇到異常(chang)流卡頓時主要從以上幾個(ge)方面進(jin)行(xing)原因分析(xi)并制(zhi)定相應的(de)兼容(rong)優化方案,下面對異常(chang)流 yichang.flv播放(fang)卡頓進(jin)行(xing)原因分析(xi)與兼容(rong)優化。
2.1 計算幀率并(bing)分析卡頓(dun)的原因
方法(fa)一,使用工具vega或者其他視(shi)頻分析工具來解析出該異常流視(shi)頻的(de)設置幀率。
方法(fa)二, 解析出視頻sps中的time_scale和num_units_in_tick, fixed_frame_rate_flag,根據這三個參(can)數計算出該異常流的設置幀率。具體計算公式如下:
framerate = time_scale/num_units_in_tick
如果fixed_frame_rate_flag為true則 time_scale = (time_scale/num_units_in_tick)/2。
方(fang)法三(san) ,根(gen)據視頻幀(zhen)時間戳的差(cha)值(zhi)stamp_delt 評估計算出該(gai)異常流的實際幀(zhen)率(lv),具體(ti)為(wei)framerate = 1000/stamp_delt,單位為(wei)ms。
以(yi)上(shang)三種方(fang)法是獲取(qu)和計算(suan)幀(zhen)率(lv)的(de)常用方(fang)法,可以(yi)通過以(yi)上(shang)方(fang)法獲取(qu)計算(suan)與互(hu)相驗證幀(zhen)率(lv)。
通過(guo)方(fang)法(fa)(fa)一(yi)和方(fang)法(fa)(fa)二獲(huo)取(qu)計算(suan)yichang.flv的(de)(de)設(she)置幀(zhen)(zhen)率(lv)(lv)為(wei)(wei)50fps,而通過(guo)方(fang)法(fa)(fa)三計算(suan),stamp_delt為(wei)(wei)100ms,framerate = 1000/100 fps,計算(suan)的(de)(de)實(shi)際(ji)幀(zhen)(zhen)率(lv)(lv)結果為(wei)(wei)10fps。可以看出方(fang)法(fa)(fa)三計算(suan)出的(de)(de)視頻(pin)(pin)實(shi)際(ji)幀(zhen)(zhen)率(lv)(lv)遠低于方(fang)法(fa)(fa)一(yi)和方(fang)法(fa)(fa)二獲(huo)取(qu)計算(suan)的(de)(de)幀(zhen)(zhen)率(lv)(lv)。播放(fang)器播放(fang)是按照視頻(pin)(pin)戳(chuo)順序和間隔進(jin)行視頻(pin)(pin)渲染和音視頻(pin)(pin)同步。設(she)想(xiang)如果該異(yi)常流的(de)(de)視頻(pin)(pin)數據(ju)是正常的(de)(de),設(she)置幀(zhen)(zhen)率(lv)(lv)為(wei)(wei)50fps而實(shi)際(ji)時間戳(chuo)間隔計算(suan)幀(zhen)(zhen)率(lv)(lv)為(wei)(wei)10fps的(de)(de)流,播放(fang)的(de)(de)現象(xiang)應該就是卡頓(dun)或者慢(man)放(fang)。
2.2 兼容優化方案
為(wei)驗(yan)證(zheng)上述設想(xiang),先解(jie)析出yichang.flv異(yi)常流(liu)視(shi)頻(pin)(pin)幀時間戳(chuo)具體為(wei)0ms,100ms,200ms,300ms,400ms,500ms,600ms,700ms,800ms,900ms,1000ms ...........。yichang.flv異(yi)常流(liu)的視(shi)頻(pin)(pin)幀時間戳(chuo)以方法一和方法二計算(suan)出的設置幀率50fps為(wei)基準,按照視(shi)頻(pin)(pin)幀的先后順(shun)序(xu)修(xiu)改其(qi)時間戳(chuo)。修(xiu)改后的視(shi)頻(pin)(pin)幀時間戳(chuo)為(wei)0ms,20ms,40ms,60ms,80ms,100ms,120ms,140ms,160ms,180ms,200ms .........。
將(jiang)修(xiu)復時間戳(chuo)的(de)(de)yichang.flv異常(chang)(chang)流再(zai)次進行播(bo)(bo)放,不(bu)再(zai)有(you)(you)卡頓現象并且播(bo)(bo)放正(zheng)常(chang)(chang)。證實和我(wo)們的(de)(de)設想一致(zhi)的(de)(de),說明該異常(chang)(chang)流在設備采集(ji)推(tui)流或者保存的(de)(de)時間戳(chuo)是有(you)(you)問題的(de)(de),而本身的(de)(de)視頻(pin)數據是正(zheng)常(chang)(chang)的(de)(de),因此該兼容優化方(fang)案是可行的(de)(de)。另外這種異常(chang)(chang)流是非標準的(de)(de),也要向推(tui)流端反(fan)饋(kui),積極協助設備端排(pai)查和解決視頻(pin)時間戳(chuo)異常(chang)(chang)問題,進一步來(lai)提高視頻(pin)播(bo)(bo)放體驗。
3. 音(yin)視(shi)頻異常(chang)流(liu)處(chu)理建(jian)議(yi)
實(shi)際上視(shi)頻(pin)流的異常(chang)原因多樣,音視(shi)頻(pin)異常(chang)流的分(fen)析是(shi)一個綜合性的課(ke)題,需(xu)要從硬(ying)件、軟件、網絡和(he)(he)系(xi)統等多個層面(mian)進行綜合考慮。我們需(xu)要熟悉和(he)(he)使用一些常(chang)見的技術工具和(he)(he)技巧,才能夠更好地診(zhen)斷(duan)和(he)(he)解決音視(shi)頻(pin)異常(chang)流的問題。