天天看點

libRTMP使用說明

名稱

librtmp − RTMPDump Real-Time Messaging Protocol API

RTMPDump RTMP(librtmp, -lrtmp)

簡介

#include<librtmp/rtmp.h>

描述

實時流協定(Real-TimeMessaging Protocol,RTMP)是用于網際網路上傳輸視音頻資料的網絡協定。本API提供了支援RTMP, RTMPT,RTMPE, RTMP RTMPS以及以上幾種協定的變種(RTMPTE, RTMPTS)協定所需的大部分用戶端功能以及少量的伺服器功能。盡管Adobe公司已經公布了RTMP協定規範(RTMP specification),但是本工程并不是通過Adobe的協定規範而是通過逆向工程的方式完成的。是以,它的運作方式可能和公布的協定規範有所偏離,但是一般情況下它和Adobe的用戶端的運作方式是一模一樣的。 基本的操作如下文所述。 RTMP_Alloc() :用于建立一個RTMP會話的句柄。 RTMP_Init():初始化句柄。 RTMP_SetupURL():設定會話的參數。 RTMP_Connect():建立RTMP連結中的網絡連接配接(NetConnection)。 RTMP_ConnectStream():建立RTMP連結中的網絡流(NetStream)。 RTMP_Read():讀取RTMP流的内容。 用戶端可以在調用RTMP_Connect()之前調用RTMP_EnableWrite(),然後在會話開始之後調用 RTMP_Write()。 RTMP_Pause():流播放的時候可以用于暫停和繼續 RTMP_Seek():改變流播放的位置 當RTMP_Read()傳回0 位元組的時候,代表流已經讀取完畢,而後可以調用RTMP_Close() RTMP_Free():用于清理會話。 所有的資料都使用 FLV 格式進行傳輸。一個基本的會話需要一個RTMP URL。RTMP URL 格式如下所示:  rtmp[t][e|s]://hostname[:port][/app[/playpath]] 支援普通的,隧道的,以及加密的會話。 其他附加的選項可以在URL的後面添加以空格為間隔符的“key=value”形式的字元串。

選項

網絡(Network)參數 這些選項定義了如何連接配接一個流媒體伺服器。 socks=host:port 使用指定 SOCKS4代理。 連接配接(Connection)參數 這些選項定義了RTMP連接配接(Connect)請求消息的内容。如果沒有提供正确的值,流媒體伺服器會拒絕連接配接請求。 app=name 連接配接到RTMP的應用名,覆寫RTMP URL中的app。有時rtmpdumpURL 無法正确自動解析app名稱。這時必須使用該選項。 tcUrl=url 目标流的URL。預設是 rtmp[t][e|s]://host[:port]/app. pageUrl=url 流媒體所在的網頁的URL。預設情況下沒有被發送的價值。 swfUrl=url 流媒體使用的SWF播放器的的URL。預設情況下沒有被發送的價值。 flashVer=version swf播放器使用的Flash版本. 預設是"LNX 10,0,32,18"。 conn=type:data 任意AMF資料追加到connect,類型說明, B 布爾型 N 數字 S 字元串 O 對象 Z 空 對于布爾型必須是0或1作為FALSE或TRUE, 對于對象資料必須以0或1分别作為結束和開始的标制,子對象中資料項前加字首類型N,并指定值名稱,例如:   -C B:1 -C S:authMe -C O:1 -C NN:code:1.23-C NS:flag:ok -C O:0 會話(Session)參數 這些選項在連接配接成功後生效。 playpath=path 覆寫RTMP URL解析的playpath,rtmpdump有時不能正确解析,通過該選項明确。 playlist=0|1 在play指令之前發生set_playlist指令。否則播放清單将會值包含playpath。 live=0|1 指定媒體是實時流。在實時流中沒有恢複和搜尋。 subscribe=path 訂閱的實時流名稱。預設playpath。 start=num 開始到流的秒數(num),實時流無效。 stop=num 停止到流的秒數(num)。 buffer=num 設定緩沖時間,機關毫秒。 預設值36000000。 timeout=num num秒後沒有收到任何資料會話逾時,預設值120。 安全(Security)參數 這些選項處理額外的身份驗證,來自伺服器的請求。 token=key 輸入安全令牌響應,如果伺服器需要使用安全令牌驗證。 jtv=JSON JSON令牌用于傳統Justin.tv伺服器 ,調用NetStream.Authenticate.UsherToken。 swfVfy=0|1 swf播放器的URL,此選項将替換是以三個--swfUrl,--swfhash, and --swfsize選項。使用此選項時,swf播放器将從指定URL檢索,并自動計算哈希和大小。此外資訊緩存在一個swfinfo檔案在使用者主目錄,是以它在每次rtmpdump運作時,并不需要檢索和重新計算。swfinfo記錄URL,生成時間,修改SWF檔案時間,它的大小,它的哈希,預設情況下,緩沖資訊用于30天,然後重新檢測。 swfAge=days 指定使用緩存的swf資訊天數,然後重新檢查,使用0為經常檢查,如果檢查顯示swf具有相同的修改時間戳,它不會被再次檢索。

例子

RTMP_SetupURL()使用的一個例子字元串:

參見

作者

Andrej Stepanchuk, Howard Chu,The Flvstreamer Team  <a href="http://rtmpdump.mplayerhq.hu/" target="_blank">http://rtmpdump.mplayerhq.hu</a>

翻譯的有的地方還不是很通順,以後再改進

繼續閱讀