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驗證資訊的快取。
相關文章
- gcc命令列詳解GC命令列
- 詳解Bash命令列處理命令列
- 詳解Linux命令列下常用svn命令Linux命令列
- 詳解Bash命令列處理(轉)命令列
- Windows下SVN命令列工具使用詳解(附加TortoiseSVN)Windows命令列
- jmeter學習指南之非GUI命令列執行詳解JMeterGUI命令列
- 命令列引數解析函式getopt_long() 使用詳解命令列函式
- Dockerfile 命令詳解Docker
- tcpdump命令詳解TCP
- getsebool命令詳解
- w命令詳解
- GCC命令詳解GC
- echo命令詳解
- brctl 命令詳解
- rsync命令詳解
- echo 命令詳解
- date 命令詳解
- free 命令詳解
- NPM命令詳解NPM
- docker命令詳解Docker
- ps命令詳解
- lsof命令詳解
- SVN命令詳解
- 命令模式 詳解模式
- Ethtool命令詳解
- find命令詳解
- test命令詳解
- awk命令詳解
- vmstat命令詳解
- find 命令詳解
- RMAN 命令詳解
- curl命令詳解
- crontab命令詳解
- docker 命令詳解Docker
- unix at命令詳解
- nohup命令詳解
- grep 命令詳解
- vi命令詳解