文章目錄
- rtmpdump使用說明
- 命令列語法
- 選項
- 網路引數
- 連接引數
- 會話引數
- 安全引數
- 雜項
- 退出狀態
- 環境變數
rtmpdump使用說明
? rtmpdump是一個命令列工具,它可以接收通過RTMP協議傳輸的流媒體內容,并轉存下來,
? rtmpdump的作業原理:首先rtmpdump會連接到指定的RTMP服務器,然后播放給定URL指定的媒體,Url的形式如下:
rtmp[t][e]://hostname[:port][/app[/playpath]]
? 支持rtmp以及其變種協議,也支持安全加密鏈路以及加密的會話,
命令列語法
- rtmpdump
?r
url
[ ?n hostname]
[ ?c port]
[ ?l protocol]
[ ?S host:port]
[ ?a app]
[ ?t tcUrl]
[ ?p pageUrl]
[ ?s swfUrl]
[ ?f flashVer]
[ ?u auth]
[ ?C conndata]
[ ?y playpath]
[ ?Y]
[ ?v]
[ ?d subscription]
[ ?e]
[ ?k skip]
[ ?A start]
[ ?B stop]
[ ?b buffer]
[ ?m timeout]
[ ?T key]
[ ?j JSON]
[ ?w swfHash]
[ ?x swfSize]
[ ?W swfUrl]
[ ?X swfAge]
[ ?o output]
[ ?#]
[ ?q]
[ ?V]
[ ?z]
rtmpdump ?h
選項
網路引數
? 這些選項用于定義如何連接媒體服務器,
? –rtmp -r url
? 指定服務器以及媒體內容的url,
? –host -n hostname
? 指定服務器的主機名,這個引數優先級更高,會覆寫RTMP URL中的主機名,
? –port -c port
? 指定服務器的埠號,這個引數優先級更高,會覆寫RTMP URL中的埠號,
? –protocol -l number
? 指定服務器的協議,這個引數優先級更高,會覆寫RTMP URL中的協議,
? 可使用的值以及其含義如下:
? 0 = rtmp
? 1 = rtmpt
? 2 = rtmpe
? 3 = rtmpte
? 4 = rtmps
? 5 = rtmpts
? –socks -s host:port
? 指定要使用的SOCKS4代理地址,
連接引數
? 這些選項用于指定RTMP連接中發送的請求資料包中的內容,如果請求資料包中沒有提供正確的值,媒體服務器可能會拒絕連接請求,
? –app -a app
? 指定要連接的媒體服務器上的應用程式,這個引數優先級更高,會覆寫RTMP URL中的app部分,有時候,rtmpdump不能從RTMP URL中自動決議出正確的應用程式名,這時就需要我們使用這個選項明確指定它,
? –tcUrl -t url
? 指定要連接的目標流的URL,默認值為:rtmp[e]😕/host[:port]/app/playpath ,由決議出的各個欄位值拼接而成,
? –pageUrl -p url
? 嵌入網頁的媒體的URL,默認情況下不發送任何值,
? –swfUrl -s url
? 媒體的SWF播放器的URL,默認情況下不發送任何值,
? –flashVer -f version
? 用于運行SWF播放器的Flash插件的版本,默認為“LUX 10,0,32,18",
? –auth -u string
? 驗證字串,它會追加到Connect Message的末尾,使用這個選項,實際上將會追加一個布林值TRUE然后才是這個驗證字串,這個選項只有某些特殊的服務器需要,而且已經被廢棄,現在我們使用**–conn -c**選項來替換它,
? –conn -c type:data
? 追加在Connect Message末尾的任意AMF資料,type的取值為:B表示boolean,N表示number,S表示string,O表示object,Z表示null,對于boolean值來說,data的取值必須為:0,1,FALSE,TRUE,同樣地,對于object,data必須使用0表示一個物件的結束,1表示一個物件的開始,我們可以命名子物件中的資料項,這是通過在type前加上一個’N’,然后在value之前指定名稱來完成的,例如:NB:myFlag:1,這個選項可以多次使用,這樣就可以構造出任意的AMF序列,例如:
?C B:1 ?C S:authMe ?C O:1 ?C NN:code:1.23 ?C NS:flag:ok ?C O:0
會話引數
? RTMP發送Connect Message來連接服務器,以下選項在連接成功后起作用,
? –playpath -y path
? 指定要請求的RTMP服務器上媒體流的路徑,這個引數優先級更高,會覆寫RTMP URL中的playpath部分,有時候,rtmpdump不能從RTMP URL中自動決議出正確的playpath,這時就需要我們使用這個選項明確指定它,
? –playlist -Y
? 在發送play命令之前發送set_playlist命令,播放串列將只包含當前播放路徑,
? –live -v
? 指出當前的媒體流是實時流,在實時流上不能進行resume和seek操作,
? –subscribe -d stream
? 要訂閱的實時流或直播流的名稱,默認為playpath,
? –resume -e
? 恢復一個未完成的RTMP下載,
? –skip -k num
? 當resume流程中查找最后一個關鍵幀時跳過的關鍵幀的數量,如果常規的resume失敗時,這個設定可能會有用,默認為0,
? –start -A num
? 從流的num秒處開始傳輸,本選項對實時流無效,
? –stop -B num
? 在流的num秒處停止傳輸,
? -buffer -b num
? 設定緩沖時間為num毫秒,默認為36000000,
? –timeout -m num
? 中斷時間,當我們在一段時間內沒有收到服務器的任何資料,我們就認為與服務器的連接斷開了,這個選項用于指定中斷的時間,默認為120,
安全引數
? 這些選型用于處理來自服務器的額外的驗證請求,
? –token -t key
? SecureToken Response中要使用的key,當服務器需要一個SecureToken驗證時使用,
? -jtv -j JSON
? 被 legacy Justin.tv 服務器使用的JSON token,呼叫NetStream.Authenticate.UsherToken,
? –swfhash -w hexstring
? 壓縮后的SWF檔案的SHA256 Hash值,如果服務器使用SWF驗證,那么可能需要使用這個選型,另外請查看下面的**–swfVfy選項,請注意,它的值為16進制字串值,–swfsize**選項總是和這個選項一起配合使用,
? –swfsize -x num
? 壓縮后的SWF檔案的大小,如果服務器使用SWF驗證,那么可能需要使用這個選型,另外請查看下面的**–swfVfy選項,–swfhash**選項總是和這個選項一起配合使用,
? –swfVfy -W url
? 當前媒體的SWF播放器的URL,這個選項替代了以下三個選項:–swfUrl,–swfhash和**–swfsize**,當使用這個選項時,會從指定的URL檢索SWF播放器,并自動計算其hash值和大小,此外,這些資訊會快取在用戶主目錄的.swfinfo檔案中,因此不需要在每次運行rtmpdump時都檢索和重新計算它,swfinfo檔案記錄URL、獲取它的時間、SWF檔案的修改時間戳、它的大小和它的Hash,默認情況下,快取的資訊的有效時間為30天,
? –swfAge -X days
? 指定快取的SWF資訊的有效天數,超過這個天數后,將重新檢查,當指定為0時表示每次都需要檢測SWF URL,注意,如果檢查顯示SWF檔案具有與以前相同的修改時間戳,則不會再次檢索該檔案,
雜項
? –flv -o output
? 指定輸出檔案名稱,如果名稱為 - 或者不指定,流會寫到 stdout,
? –hashes -#
? 不使用默認的位元組計數,而是使用#來顯示流的進度,每個#表示1%進度,
? –quiet -q
? 禁止所有的命令輸出,即將Log Level設定為RTMP_LOGCRIT,
? –verbose -V
? 詳細的命令輸出,即將Log Level設定為RTMP_LOGDEBUG,
? –debug -z
? 全部的命令輸出,即將Log Level設定為RTMP_LOGCRIT,此時輸出非常冗長,包括所有Message資料包的16進制表示,
? –help -
? 顯示rtmpdump的使用用例幫助檔案,
退出狀態
? 0:命令列執行成功
? 1:不可恢復的錯誤
? 2:未完成傳輸,可在后續恢復下載
環境變數
? HOME:其中必須要包含 .swfinfo 檔案的路徑,其中包含SWF驗證資訊的快取,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/198143.html
標籤:其他
上一篇:C++讀取gif圖 | opencv讀取gif圖(附完整代碼)
下一篇:OSS_SDK在海思平臺上的移植
