国产精品久久久久久2021,日韩精品无码av中文无码版,亚洲精品久久久午夜麻豆,无码成人精品日本动漫纯h

010-68421378
當(dāng)前您所在的位置:首頁(yè)>新聞中心>新品發(fā)布

Wowza錄制:關(guān)于直播流錄制API幾個(gè)細(xì)節(jié)參數(shù)的解釋

發(fā)布時(shí)間:2021/03/24 瀏覽量:3725
Wowza Streaming Engine支持用API去控制對(duì)直播流的錄制

Wowza Streaming Engine支持用API去控制對(duì)直播流的錄制,例如啟動(dòng)錄制和停止錄制以及分段錄制等。 

 

圖片


這些API包括兩類: 

1. Java API  這類API允許你用Java 代碼去實(shí)現(xiàn)錄制的邏輯控制,并將編譯好的Jar文件放在Wowza安裝目錄的/lib下,然后添加ModuleServerListener或者Http ProviderWowza Streaming Engine重啟后就可以生效。

2. Http REST API : 這類API允許你用http請(qǐng)求去控制錄制的啟動(dòng)、停止、分段等。顯而易見,這種方式下你可以用任何開發(fā)語(yǔ)言(PHP、ASP、Java、C#NodeJs)開發(fā)您的Http 客戶端。 

需要說(shuō)明的是,這兩種API可以實(shí)現(xiàn)的功能是類似的,只是適用于不同的業(yè)務(wù)流程,Java API一般適合于直播流進(jìn)入Wowza后自動(dòng)進(jìn)行相關(guān)錄制動(dòng)作的業(yè)務(wù)流程;而Http REST API更適合隨時(shí)、隨地的遠(yuǎn)程控制。 

此外,最重要的是,這兩種API都提供統(tǒng)一的的錄制參數(shù),這個(gè)很容易理解,比如錄制為MP4還是FLV?錄制文件所在路徑和文件名是什么?是否分段錄制(5分鐘一個(gè),還是50Mbytes一個(gè)?)等等,諸如此類。 

這些錄制參數(shù)將會(huì)影響Wowza的錄制行為,有些參數(shù),你根據(jù)參數(shù)名就知道它的作用,但是有些參數(shù)不太好理解。這篇文章就重點(diǎn)介紹幾個(gè)細(xì)節(jié)的錄制參數(shù),有助于您排查錄制中遇到的問(wèn)題。 

一、startOnKeyFrame 

通常,錄制為MP4FLV文件時(shí),既包括音頻,也包括視頻。對(duì)于視頻的錄制,是否要從一個(gè)關(guān)鍵幀開始呢?通常是這樣的,但Wowza Streaming Engine依然提供了這個(gè)參數(shù),讓你可以控制這個(gè)邏輯。 startOnKeyFrame true時(shí),錄制的視頻從關(guān)鍵幀開始; startOnKeyFrame false時(shí),錄制的視頻不需要從關(guān)鍵幀開始。當(dāng)然了,它的默認(rèn)值是true。

所以,通常情況,您可以忽略這個(gè)參數(shù),也就是說(shuō)讓Wowza使用默認(rèn)值true,從關(guān)鍵幀開始錄制。


二、backBufferTime 

從字面意思也比較容易猜測(cè)它的含義,顯然任何一個(gè)類似于Wowza Streaming Engine的流媒體Server,針對(duì)每一路注入的直播流,在server內(nèi)部肯定是有一個(gè)"最新"音視頻數(shù)據(jù)的緩存隊(duì)列。有的Server說(shuō)為了低延時(shí),沒有一點(diǎn)緩存(余糧),那幾乎是不可能的,沒有緩存,肯定會(huì)出現(xiàn)播放卡頓的情況。那么Wowza Streaming Engine內(nèi)部的這個(gè)緩存隊(duì)列有多長(zhǎng)呢?大概8秒左右(它不可能是個(gè)絕對(duì)精確的值因?yàn)殛?duì)列都是由各個(gè)數(shù)據(jù)包組成的,怎么可能這些數(shù)據(jù)包剛好是8秒呢?)。 但是您要注意,緩存隊(duì)列有多長(zhǎng),并不意味著直播延時(shí)就有這么多。因?yàn)閷?shù)據(jù)緩存起來(lái)不僅僅是為了讓播放更流暢, 還有其它可能的作用,比如說(shuō)錄制,好,終于回到正題上了。 

backBufferTime的意思就是說(shuō)當(dāng)Wowza Streaming Engine收到錄制請(qǐng)求后,是從已有的緩存隊(duì)列里面某一個(gè)位置開始尋找音視頻數(shù)據(jù)去開始錄制,還是說(shuō)壓根就不管現(xiàn)有的緩存隊(duì)列,而是去等待新的音視頻數(shù)據(jù)到達(dá)后再開始錄制。 

backBufferTime的單位是毫秒,默認(rèn)是0。比如4000就是從隊(duì)列最新的位置向后回退4秒,從這個(gè)位置開始向前(有最新數(shù)據(jù)的方向)尋找音視頻數(shù)據(jù),找到后再開始錄制。如果backBufferTime0,就是上面說(shuō)的,壓根就不管現(xiàn)有的緩存隊(duì)列,要等待新的音視頻數(shù)據(jù)到達(dá)后開始錄制,注意:這是默認(rèn)策略。 

針對(duì)這個(gè)參數(shù),我的建議是你要根據(jù)您的具體應(yīng)用場(chǎng)景設(shè)置適當(dāng)?shù)闹?,比如你的?chǎng)景是作為監(jiān)控方/管理方看著直播,覺得需要錄制時(shí)通過(guò)控制臺(tái)發(fā)起一個(gè)http REST請(qǐng)求去錄制。那么一般就要給這個(gè)backBufferTime設(shè)置幾秒鐘時(shí)間。因?yàn)槟憧吹倪@一幀畫面肯定是落后于最新的直播點(diǎn)的,如果你要從這個(gè)點(diǎn)開始錄制,就應(yīng)該讓錄制起始點(diǎn)往后挪一挪了。 

總之,這個(gè)參數(shù)是挺有用的,你要根據(jù)具體場(chǎng)景設(shè)置一個(gè)合適的值。 


三、defaultAudioSearchPostion 

注意:這個(gè)參數(shù)只針對(duì)錄制MP4文件時(shí)有效!并不適用于FLV文件的錄制。

 

這個(gè)參數(shù)的含義不太好理解,但也是挺重要的。它是一個(gè)Boolean類型的值,truefalse。 默認(rèn)是true。 

true的意思是說(shuō),在Wowza Streaming Engine 要尋找“可以錄制(寫入文件)的音視頻數(shù)據(jù)”時(shí),如果遇到第一個(gè)視頻關(guān)鍵幀,就開始錄制。此時(shí),不用考慮有沒有遇到音頻數(shù)據(jù)。 

false的意思是說(shuō),在Wowza Streaming Engine 要尋找“可以錄制(寫入文件)的音視頻數(shù)據(jù)”時(shí),如果遇到第一個(gè)視頻關(guān)鍵幀,還不能馬上開始錄制,還要看看有沒有音頻數(shù)據(jù),如果還沒有音頻數(shù)據(jù),就把這個(gè)視頻關(guān)鍵幀跳過(guò)去(丟棄掉),繼續(xù)尋找下一個(gè)視頻關(guān)鍵幀(這個(gè)地方,我理解有一個(gè)前提就是startOnKeyFrametrue),如果找到了下一個(gè)視頻關(guān)鍵幀了,但是還是沒有音頻數(shù)據(jù),就繼續(xù)跳過(guò)這個(gè)視頻關(guān)鍵幀。直到有了音頻數(shù)據(jù)。但是,這里就有個(gè)疑問(wèn),如果一直沒遇到音頻數(shù)據(jù)呢?難道一直等下去?請(qǐng)繼續(xù)看下面的參數(shù)。


四、skipKeyFrameUntilAudioTimeout 

注意:這個(gè)參數(shù)只針對(duì)錄制MP4文件時(shí)有效!并不適用于FLV文件的錄制。

 

如果理解了前面的defaultAudioSearchPostion,那么skipKeyFrameUntilAudioTimeout就很容易理解了。 

skipKeyFrameUntilAudioTimeout是一個(gè)毫秒數(shù),默認(rèn)值是10000,也就是10秒鐘。只有當(dāng)defaultAudioSearchPostionfalse時(shí),它才有意義。也就是說(shuō),它是等待音頻數(shù)據(jù)的最大時(shí)間,只要到了這個(gè)時(shí)間就不再往下繼續(xù)等了。即使沒有音頻,只要有了視頻關(guān)鍵幀就開始錄制。你也可以說(shuō)不想等待音頻數(shù)據(jù),就把這個(gè)參數(shù)設(shè)置為0。但這沒有意義,你直接把defaultAudioSearchPostion設(shè)置為true就行了。

 

以上幾個(gè)參數(shù)都可以在Wowza Streaming EngineAPI文檔中找到說(shuō)明,除此之外,還有另外幾個(gè)參數(shù)并沒有出現(xiàn)在API文檔中,下面也說(shuō)一下:


1. 自定義參數(shù)liveStreamRecordMinimumKeyFramesInPacketList 

這個(gè)參數(shù)是數(shù)值類型(Integer),默認(rèn)值是2。 它同時(shí)適用于錄制MP4FLV文件。 

它的作用很類似參數(shù)defaultAudioSearchPostion,也就是在Wowza Streaming Engine 要尋找“可以錄制(寫入文件)的音視頻數(shù)據(jù)”時(shí),遇到幾個(gè)視頻關(guān)鍵幀后才開始錄制。據(jù)Wowza技術(shù)支持工程師介紹好像是有些編碼器在發(fā)送音頻包前集中發(fā)了一些過(guò)多的視頻包,Wowza就嘗試在內(nèi)部多檢測(cè)幾個(gè)視頻關(guān)鍵幀后再開始錄制。 

你可以試試將這個(gè)參數(shù)設(shè)置為01,看看有什么變化: 

編輯您的Application.xml文件,在文件的最后部分的中添加下面的配置:

 

 liveStreamRecordMinimumKeyFramesInPacketList

 0

 Integer

 


2. 自定義參數(shù)liveStreamRecorderWaitForVideoFrameCount 

這個(gè)參數(shù)是數(shù)值類型(Integer),默認(rèn)值是20。 它同時(shí)適用于錄制MP4FLV文件。 

它的作用很類似參數(shù)skipKeyFrameUntilAudioTimeout,在Wowza Streaming Engine 要尋找“可以錄制(寫入文件)的音視頻數(shù)據(jù)”時(shí),如果遇到20個(gè)音頻包,但還沒有遇到一個(gè)視頻幀,就不再等視頻幀了,直接開始錄制。 

你可以試試調(diào)整參數(shù),看看有什么變化: 

編輯您的Application.xml文件,在文件的最后部分的中添加下面的配置:

 

 liveStreamRecorderWaitForVideoFrameCount

 20

 Integer

 

好,至此,關(guān)于Wowza Streaming Engine中錄制的幾個(gè)細(xì)節(jié)參數(shù)就說(shuō)清楚了。

下一篇:Strand7 線性穩(wěn)定性求解器: 最適用于初步設(shè)計(jì)和研究不同參數(shù)的影響
上一篇:Splashtop 可以用來(lái)監(jiān)視遠(yuǎn)程工作者嗎?

                               

 京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155

                                   © Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室

                         北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫

                            華滋生物