libRTMP文档
https://rtmpdump.mplayerhq.hu/
?
原文地址:http://rtmpdump.mplayerhq.hu/librtmp.3.html
git clone git://git.ffmpeg.org/rtmpdump
?
名稱
?
librtmp ? RTMPDump Real-Time Messaging Protocol API
?
庫
?
RTMPDump RTMP(librtmp, -lrtmp)
?
?
?
#include <librtmp/rtmp.h>
?
描述
?
Real-Time Messaging Protocol,RTMP是用于互聯網上傳輸視音頻數據的網絡協議。本API提供了支持RTMP, RTMPT,RTMPE, RTMP RTMPS以及以上幾種協議的變種(RTMPTE, RTMPTS)協議所需的大部分客戶端功能以及少量的服務器功能。盡管Adobe公司已經公布了RTMP協議規范(RTMP specification),但是本工程并不是通過Adobe的協議規范而是通過逆向工程的方式完成的。因此,它的運行方式可能和公布的協議規范有所偏離,但是一般情況下它和Adobe的客戶端的運行方式是一模一樣的。
?
RTMPDump 軟件包含一個基本的客戶端:rtmpdump,一些示例服務器和一個用來提供對RTMP協議進行支持的庫(libRTMP)。本頁面對libRTMP的函數進行一個概述。 這些函數可以在 -lrtmp 庫中找到。其他還有很多函數,但是還沒有為這些函數寫文檔。
?
基本的操作如下文所述。
?
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,type類型說明:
?
B 布爾型
?
N 數字
?
S 字符串
?
O 對象
?
Z 空null
?
對于布爾型必須是0或1作為FALSE或TRUE,
?
對于對象數據必須以0或1分別作為結束和開始的標制,子對象中數據項前加前綴類型N,并指定值名稱,例如: NB:myFlag:1
?
conn=B:1 conn=S:authMe conn=O:1 conn=NN:code:1.23 conn=NS:flag:ok conn=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()使用的一個例子字符串:
?
?"rtmp://flashserver:1935/ondemand/thefile swfUrl=http://flashserver/player.swfswfVfy=1"
?
?
?
?
?
http://rtmpdump.mplayerhq.hu
總結
- 上一篇: 软件项目管理和软件工程的区别
- 下一篇: HBase常用Shell命令详解