FFplay文檔解讀-12-協(xié)議二

前言

Github地址:Github
簡書地址:簡書
專輯地址:FFplay專輯

16.18 rtmp

實時消息傳遞協(xié)議舰讹。

實時消息傳遞協(xié)議(RTMP)用于跨TCP/IP網(wǎng)絡流式傳輸多媒體內(nèi)容茅姜。

語法如下:

rtmp://[username:password@]server[:port][/app][/instance][/playpath]

參數(shù)如下:

username

可選類型的用戶名(主要用于發(fā)布的時候使用)。

password

可選類型的密碼(主要用于發(fā)布的時候使用)月匣。

server

RTMP服務器的地址钻洒。

port

要使用的TCP端口號(默認為1935)。

app

它是要訪問的應用程序的名稱锄开。它通常對應于RTMP服務器上安裝應用程序的路徑(例如/ ondemand /素标,/ flash / live /等)。您也可以通過rtmp_app選項覆蓋從URI解析的值院刁。

playpath

它是參考app中指定的應用程序播放的資源的路徑或名稱糯钙,可以以mp4:作為前綴。您也可以通過rtmp_playpath選項覆蓋從URI解析的值退腥。

listen

充當服務器任岸,偵聽傳入連接。

timeout

等待傳入連接的最長時間狡刘。意思是傾聽享潜。

此外,可以通過命令行選項(或通過AVOptions在代碼中)設置以下參數(shù):

`rtmp_app`

要在RTMP服務器上連接的應用程序的名稱嗅蔬。此選項會覆蓋URI中指定的參數(shù)剑按。

rtmp_buffer

設置客戶端緩沖時間(以毫秒為單位)疾就。默認值為3000

rtmp_conn

從字符串解析的額外的任意AMF連接參數(shù)艺蝴,例如猬腰,像B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0。每個值都以一個表示類型的字符作為前綴猜敢,B表示布爾值姑荷,N表示數(shù)字,S表示字符串缩擂,O表示對象鼠冕,Z表示null,后跟冒號胯盯。對于布爾值懈费,數(shù)據(jù)必須分別為01表示FALSETRUE。同樣博脑,對于對象憎乙,數(shù)據(jù)必須分別為01才能結束或開始對象∏骼鳎可以通過在類型前加上N并在值之前指定名稱(即NB:myFlag:1)來命名子對象中的數(shù)據(jù)項寨闹。可以多次使用該選項來構造任意AMF序列君账。

rtmp_flashver

用于運行SWF播放器的Flash插件的版本。默認值為LNX 9,0,124,2沈善。 (發(fā)布時乡数,默認為FMLE/3.0(兼容; <libavformat版本>)。)

rtmp_flush_interval

在同一請求中刷新的數(shù)據(jù)包數(shù)(僅限RTMPT)闻牡。默認值為10净赴。

rtmp_live

指定媒體是實時流。不能在直播中恢復或?qū)ふ艺秩蟆DJ值為any玖翅,這意味著訂戶首先嘗試播放在播放規(guī)范中指定的直播流。如果找不到該名稱的直播流割以,則播放錄制的流金度。其他可能的值是實時和記錄。

rtmp_pageurl

嵌入媒體的網(wǎng)頁的URL严沥。默認情況下猜极,不會發(fā)送任何值。

rtmp_playpath

要播放或發(fā)布的流標識符消玄。此選項會覆蓋URI中指定的參數(shù)跟伏。

rtmp_subscribe

要訂閱的直播流的名稱丢胚。默認情況下,不會發(fā)送任何值受扳。僅在指定選項或rtmp_live設置為live時才會發(fā)送携龟。

rtmp_swfhash

解壓縮的SWF文件的SHA256哈希值(32字節(jié))。

rtmp_swfsize

SWFVerification所需的解壓縮SWF文件的大小勘高。

rtmp_swfurl

媒體的SWF播放器的URL骨宠。默認情況下,不會發(fā)送任何值相满。

rtmp_swfverify

播放器swf文件的URL层亿,自動計算散列/大小。

 rtmp_tcurl

目標流的URL立美。默認為proto://host[:port]/app匿又。

例如,使用來自RTMP服務器myserver的應用程序vod中的ffplay讀取名為sample的多媒體資源:

ffplay rtmp://myserver/vod/sample

要發(fā)布到受密碼保護的服務器建蹄,請分別傳遞playpathapp名稱:

ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/

16.19 rtmpe

加密的實時消息傳遞協(xié)議碌更。

加密實時消息傳遞協(xié)議(RTMPE)用于在標準加密原語內(nèi)流式傳輸多媒體內(nèi)容,包括Diffie-Hellman密鑰交換和HMACSHA256洞慎,生成一對RC4密鑰痛单。

16.20 rtmps

通過安全SSL連接的實時消息傳遞協(xié)議。

實時消息傳遞協(xié)議(RTMPS)用于跨加密連接流式傳輸多媒體內(nèi)容劲腿。

16.21 rtmpt

通過HTTP進行管道傳輸?shù)膶崟r消息傳遞協(xié)議旭绒。

通過HTTP(RTMPT)管道傳輸?shù)膶崟r消息傳遞協(xié)議用于在HTTP請求中流式傳輸多媒體內(nèi)容以遍歷防火墻。

16.22 rtmpte

通過HTTP管道傳輸?shù)募用軐崟r消息傳遞協(xié)議焦人。

通過HTTP管道傳輸?shù)募用軐崟r消息傳遞協(xié)議(RTMPTE)用于在HTTP請求中流式傳輸多媒體內(nèi)容以遍歷防火墻挥吵。

16.23 rtmpts

通過HTTPS進行管道傳輸?shù)膶崟r消息傳遞協(xié)議。

通過HTTPS(RTMPTS)管道傳輸?shù)膶崟r消息傳遞協(xié)議用于在HTTPS請求中流式傳輸多媒體內(nèi)容以遍歷防火墻花椭。

16.24 libsmbclient

libsmbclient允許用戶操作CIFS/SMB網(wǎng)絡資源忽匈。

語法如下:

smb://[[domain:]user[:password@]]server[/share[/path[/file]]]

該協(xié)議接受以下選項。

timeout

設置基礎低級操作使用的套接字I/O操作的超時(以毫秒為單位)矿辽。 默認情況下丹允,它設置為-1,這意味著未指定超時袋倔。

truncate

如果設置為1雕蔽,則在寫入時截斷現(xiàn)有文件。值為0可防止截斷奕污。 默認值為1萎羔。

workgrou

設置用于建立連接的工作組。 默認情況下碳默,未指定工作組贾陷。

有關更多信息缘眶,請參閱:http://www.samba.org/

16.25 libssh

通過libssh安全文件傳輸協(xié)議

使用SFTP協(xié)議讀取或?qū)懭脒h程資源髓废。

語法如下:

sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

該協(xié)議接受以下選項巷懈。

timeout

設置基礎低級操作使用的套接字I/O操作的超時。 默認情況下慌洪,它設置為-1顶燕,這意味著未指定超時。

truncate

如果設置為1冈爹,則在寫入時截斷現(xiàn)有文件涌攻。值為0可防止截斷。 默認值為1频伤。

PRIVATE_KEY

指定包含在授權期間使用的私鑰的文件的路徑恳谎。 默認情況下,libssh搜索~/.ssh/目錄中的鍵憋肖。

示例:播放存儲在遠程服務器上的文件因痛。

ffplay sftp://user:password@server_address:22/home/user/resource.mpeg

16.26 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte

通過librtmp支持實時消息傳遞協(xié)議及其變體。

在配置期間需要存在librtmp標頭和庫岸更。 需要使用-enable-librtmp顯式配置構建鸵膏。 如果啟用,這將替換本機RTMP協(xié)議怎炊。

該協(xié)議提供了大多數(shù)客戶端功能和支持RTMP所需的一些服務器功能谭企,通過HTTP(RTMPT)管道傳輸?shù)?code>RTMP,加密的RTMP(RTMPE)结胀,基于SSL/TLSRTMP(RTMPS)以及這些加密類型的管道變體(RTMPTE赞咙,RTMPTS)。

所需的語法是:

rtmp_proto://server[:port][/app][/playpath] options

其中rtmp_proto是對應于每個RTMP變體的字符串rtmp糟港,rtmptrtmpe院仿,rtmps秸抚,rtmptertmpts之一歹垫,并且服務器剥汤,端口,appplaypath具有與指定相同的含義 用于RTMP本機協(xié)議排惨。 options包含key = val形式的空格分隔選項列表吭敢。

有關更多信息,請參見librtmp手冊頁(man 3 librtmp)暮芭。

例如鹿驼,使用ffmpeg將文件實時流式傳輸?shù)?code>RTMP服務器:

ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream

要使用ffplay播放相同的流:

ffplay "rtmp://myserver/live/mystream live=1"

16.27 rtp

實時傳輸協(xié)議欲低。

RTP URL所需的語法是:rtp://hostname[:port][?option=val...]

port指定要使用的RTP端口。

支持以下URL選項:

TTL = N

設置TTL (Time-To-Live)值(僅適用于多播)畜晰。

rtcpport = N

將遠程RTCP端口設置為n砾莱。

localrtpport = N

將本地RTP端口設置為n

localrtcpport = N

將本地RTCP端口設置為n凄鼻。

pkt_size = N

將最大數(shù)據(jù)包大欣吧(以字節(jié)為單位)設置為n

connect=0|1

UDP套接字上設置connect()(如果設置為1)或不設置(如果設置為0)块蚌。

sources=ip[,ip]

列出允許的源IP地址闰非。

block=ip[,ip]

列出不允許(阻止)的源IP地址。

write_to_source=0|1

將數(shù)據(jù)包發(fā)送到最新接收數(shù)據(jù)包的源地址(如果設置為1)或默認遠程地址(如果設置為0)峭范。

localport=n

將本地RTP端口設置為n财松。

這是一個棄用的選項。相反虎敦,應該使用localrtpport游岳。

重要筆記:

1.如果未設置rtcpport,則RTCP端口將設置為RTP端口值加1其徙。

2.如果未設置localrtpport(本地RTP端口)胚迫,則任何可用端口都將用于本地RTPRTCP端口。

3.如果未設置localrtcpport(本地RTCP端口)唾那,則將其設置為本地RTP端口值加1访锻。

16.28 rtsp

實時流媒體協(xié)議。

RTSP在技術上不是libavformat中的協(xié)議處理程序闹获,它是一個分離器和多路復用器期犬。 分路器支持普通RTSP(通過RTP傳輸數(shù)據(jù);例如AppleMicrosoft使用)和Real-RTSP(通過RDT傳輸數(shù)據(jù))。

可以使用muxer將流使用RTSP ANNOUNCE發(fā)送到支持它的服務器(目前是Darwin Streaming ServerMischa SpiegelmockRTSP服務器)避诽。

RTSP網(wǎng)址所需的語法是:

rtsp://hostname[:port]/path

可以在ffmpeg/ffplay命令行上設置選項龟虎,也可以通過AVOptionsavformat_open_input在代碼中設置選項。

支持如下選項:

initial_pause

如果設置為1沙庐,請勿立即開始播放流鲤妥。默認值為0

rtsp_transport

設置RTSP傳輸協(xié)議拱雏。

它接受以下值:

解釋
UDP 使用UDP作為較低的傳輸協(xié)議棉安。
TCP 使用TCPRTSP控制信道內(nèi)的交織)作為較低的傳輸協(xié)議。
udp_multicast 使用UDP多播作為較低的傳輸協(xié)議铸抑。
HTTP 使用HTTP管道作為較低的傳輸協(xié)議贡耽,這對于傳遞代理很有用

可以指定多個較低的傳輸協(xié)議,在這種情況下,它們一次嘗試一個(如果一個設置失敗蒲赂,則嘗試下一個)阱冶。 對于復用器,僅支持tcpudp選項凳宙。

rtsp_flags

設置RTSP標志熙揍。

能接受的值如下表所述:

解釋
filter_src 僅接受來自協(xié)商的對等地址和端口的數(shù)據(jù)包
listen 充當服務器,偵聽傳入連接
prefer_tcp 如果TCP可用作RTSP RTP傳輸氏涩,請首先嘗試使用TCP進行RTP傳輸

默認值為none届囚。

allowed_media_types

設置要從服務器接受的媒體類型。

接受以下標志:

video
audio
data

默認情況下是尖,它接受所有媒體類型意系。

min_port

設置最小本地UDP端口。 默認值為5000饺汹。

max_port

設置最大本地UDP端口蛔添。 默認值為65000

timeout

設置等待傳入連接的最大超時(以秒為單位)兜辞。

-1表示無限(默認)迎瞧。 此選項意味著rtsp_flags設置為listen

reorder_queue_size

設置要緩沖的數(shù)據(jù)包數(shù)以處理重新排序的數(shù)據(jù)包逸吵。

stimeout

設置套接字TCP I/O超時(以微秒為單位)凶硅。

user-agent

覆蓋User-Agent標頭。 如果未指定扫皱,則默認為libavformat標識符字符串足绅。

當通過UDP接收數(shù)據(jù)時,解復用器嘗試重新排序接收到的數(shù)據(jù)包(因為它們可能無序到達韩脑,或者數(shù)據(jù)包可能完全丟失)氢妈。 可以通過將最大解復用延遲設置為零(通過AVFormatContextmax_delay字段)來禁用此功能。

當使用ffplay觀看多比特率Real-RTSP流時段多,可以分別為視頻和音頻選擇-vst n-ast n來顯示要顯示的流首量,并且可以通過按va來即時切換。

16.28.1 Examples

以下示例均使用ffplayffmpeg工具进苍。

通過UDP觀察流蕾总,最大重新排序延遲為0.5秒:

ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4

觀看通過HTTP管道傳輸?shù)牧鳎?/p>

ffplay -rtsp_transport http rtsp://server/video.mp4

實時將流發(fā)送到RTSP服務器,供其他人觀看:

ffmpeg -re -i input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp

實時接收流:

ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp輸出

16.29 sap

會話公告協(xié)議(RFC 2974)琅捏。 這在技術上不是libavformat中的協(xié)議處理程序,它是一個muxerdemuxer递雀。 它通過在單獨的端口上定期通知流的SDP柄延,用于RTP流的信令。

16.29.1 Muxer

提供給多路復用器的SAP url的語法是:

sap://destination[:port][?options]

RTP數(shù)據(jù)包在端口端口上發(fā)送到目標,如果沒有指定端口搜吧,則發(fā)送到端口5004市俊。選項是一個分離列表涵叮。支持以下選項:

announce_addr=address

指定發(fā)送通知的目標IP地址街氢。如果省略,則通知將發(fā)送到常用的SAP公告多播地址224.2.127.254(sap.mcast.net)ff0e :: 2:7ffe(如果destinationIPv6地址)峭咒。

announce_port=port

指定發(fā)送通知的端口蜒程,如果未指定绅你,則默認為9875

ttl=ttl

指定通知和RTP數(shù)據(jù)包的生存時間值昭躺,默認為255忌锯。

same_port=0|1

如果設置為1,則在同一端口對上發(fā)送所有RTP流领炫。如果為零(默認值)偶垮,則所有流都在唯一端口上發(fā)送,端口2上的每個流都比前一個更高帝洪。VLC / Live555要求將其設置為1似舵,以便能夠接收流。libavformat中用于接收的RTP堆棧要求在唯一端口上發(fā)送所有流葱峡。

示例命令行如下砚哗。

要在本地子網(wǎng)上廣播流,以便在VLC中觀看:

ffmpeg -re -i input -f sap sap://224.0.0.255?same_port=1

同樣族沃,在ffplay中觀看:

ffmpeg -re -i input -f sap sap://224.0.0.255

通過IPv6觀看ffplay

ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]

16.29.2 Demuxer

提供給解復用程序的SAP url的語法是:

sap://[address][:port]

address是偵聽通知的多播地址频祝,如果省略,則使用默認的224.2.127.254(sap.mcast.net)脆淹。 port是要監(jiān)聽的端口常空,如果省略則為9875

解復用器偵聽給定地址和端口的通知盖溺。 收到通知后漓糙,它會嘗試接收該特定流。

示例命令行如下:

要播放在正常SAP多播地址上公布的第一個流:

ffplay sap://

要播放默認IPv6 SAP多播地址上公布的第一個流:

ffplay sap://[ff0e::2:7ffe]

16.30 sctp

流控制傳輸協(xié)議烘嘱。

接受的URL語法是:

sctp://host:port[?options]

該協(xié)議接受以下選項:

listen

如果設置為任何值昆禽,請偵聽傳入連接。 默認情況下蝇庭,傳出連接已完成醉鳖。

max_streams

設置最大流數(shù)。 默認情況下哮内,不設置限制盗棵。

16.31 srt

通過libsrt實現(xiàn)Haivision安全可靠傳輸協(xié)議。

SRT url支持的語法是:

srt://hostname:port[?options]

options包含key = val形式的&-separated選項列表。

或者:

options srt:// hostname:port

options包含-key val選項列表纹因。

該協(xié)議接受以下選項:

connect_timeout

連接超時; SRT無法連接RTT> 1500毫秒(2次握手交換)喷屋,默認連接超時為3秒。 此選項適用于呼叫者和集合點連接模式瞭恰。 連接超時是集合點模式設置值的10倍(可以用作早期版本此連接問題的解決方法)屯曹。

ffs=bytes

飛行標志大小(窗口大芯贰)恶耽,以字節(jié)為單位。 FFS實際上是一個內(nèi)部參數(shù)陕截,您應該將其設置為不小于recv_buffer_sizemss驳棱。 默認值相對較大,因此除非設置非常大的接收緩沖區(qū)农曲,否則無需更改此選項社搅。 默認值為25600

inputbw=bytes/seconds

發(fā)送者標稱輸入速率乳规,以每秒字節(jié)數(shù)為單位形葬。 與oheadbw一起使用,當maxbw設置為relative(0)時暮的,計算恢復數(shù)據(jù)包與主媒體流一起發(fā)送時的最大發(fā)送速率:inputbw'*(100 +'oheadbw')/ 100 if 'maxbw'設置為relative(0)時未設置inputbw笙以,實際輸入速率在庫內(nèi)評估。 默認值為0冻辩。

iptos=tos

IP服務類型猖腕。 僅適用于發(fā)件人。 默認值為0xB8恨闪。

ipttl=ttl

IP生存時間倘感。 僅適用于發(fā)件人。 默認值為64咙咽。

listen_timeout

設置套接字監(jiān)聽超時老玛。

maxbw=bytes/seconds

最大發(fā)送帶寬,以每秒字節(jié)數(shù)為單位钧敞。 -1無限(CSRTCC限制為30mbps0相對于輸入速率(參見inputbw)> 0絕對限制值默認值為0relative

mode=caller|listener|rendezvous

連接模式蜡豹。 caller打開客戶端連接。 listener啟動服務器以偵聽傳入的連接溉苛。 rendezvous使用Rendez-Vous連接模式镜廉。 默認值是調(diào)用者。

mss=bytes

最大段大小愚战,以字節(jié)為單位桨吊。 用于緩沖區(qū)分配和速率計算威根,使用數(shù)據(jù)包計數(shù)器假定完全填充的數(shù)據(jù)包。 使用對等體之間的最小MSS视乐。 整個互聯(lián)網(wǎng)默認為1500。 這是UDP數(shù)據(jù)包的最大大小敢茁,只能減少佑淀,除非您有一些不尋常的專用網(wǎng)絡設置。 默認值為1500彰檬。

 nakreport=1|0

如果設置為1伸刃,Receiver將定期發(fā)送UMSG_LOSSREPORT消息,直到重新傳輸或故意丟棄丟失的數(shù)據(jù)包逢倍。 默認值為1捧颅。

oheadbw=percents

恢復帶寬開銷高于輸入速率,以百分比表示较雕。 請參閱inputbw碉哑。 默認值為25%

passphrase=string

HaiCrypt加密/解密密碼短語字符串亮蒋,長度從1079個字符扣典。 密碼短語是發(fā)送者和接收者之間的共享秘密。 它用于使用PBKDF2(基于密碼的密鑰派生函數(shù))生成密鑰加密密鑰慎玖。 僅當pbkeylen非零時才使用它贮尖。 僅在接收的數(shù)據(jù)被加密時才在接收器上使用它。 配置的密碼短語無法恢復(只寫)趁怔。

pbkeylen=bytes

發(fā)件人加密密鑰長度湿硝,以字節(jié)為單位。 只能設置為0,16,2432.如果不是0润努,則啟用發(fā)送方加密关斜。接收方不需要(設置為0),從HaiCrypt握手中的發(fā)送方獲取密鑰大小任连。 默認值為0蚤吹。

recv_buffer_size=bytes

設置接收緩沖區(qū)大小,以字節(jié)為單位随抠。

send_buffer_size=bytes

設置發(fā)送緩沖區(qū)大小裁着,以字節(jié)為單位。

rw_timeout

設置讀/寫選擇的引發(fā)錯誤超時拱她。

此選項僅在讀取模式下相關:如果沒有超過此時間間隔的數(shù)據(jù)二驰,則引發(fā)錯誤。

tlpktdrop=1|0

Too-late的丟包秉沼。 當在接收器上啟用時桶雀,它會跳過未及時傳送的丟失數(shù)據(jù)包矿酵,并在其播放時間到來時將以下數(shù)據(jù)包傳送給應用程序。 它還向發(fā)送方發(fā)送假ACK矗积。 當在發(fā)送方上啟用并在接收對等方上啟用時全肮,發(fā)送方丟棄不能及時交付的舊數(shù)據(jù)包。 如果接收方支持棘捣,它會在發(fā)送方自動啟用辜腺。

tsbpddelay

基于時間戳的數(shù)據(jù)包傳送延遲。 用于吸收丟失數(shù)據(jù)包重傳的突發(fā)乍恐。

有關更多信息评疗,請參閱:https://github.com/Haivision/srt

16.32 srtp

安全的實時傳輸協(xié)議茵烈。

接受的選項是:

srtp_in_suite
srtp_out_suite

選擇輸入和輸出編碼套件百匆。

支持的值:

AES_CM_128_HMAC_SHA1_80
SRTP_AES128_CM_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_32
SRTP_AES128_CM_HMAC_SHA1_32
srtp_in_params
srtp_out_params

設置輸入和輸出編碼參數(shù),這些參數(shù)由二進制塊的base64編碼表示表示呜投。 該二進制塊的前16個字節(jié)用作主密鑰加匈,后面的14個字節(jié)用作master salt

16.33 subfile

start

提取段的起始偏移量宙彪,以字節(jié)為單位矩动。

end

提取的段的結束偏移量,以字節(jié)為單位释漆。 如果設置為0悲没,則提取到文件末尾。

示例如下:

DVD VOB文件中提取章節(jié)(從外部獲得的起始和結束扇區(qū)男图,再乘以2048):

subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB

直接從TAR存檔播放AVI文件:

subfile,,start,183241728,end,366490624,,:archive.tar

從開始偏移到結束播放MPEG-TS文件:

subfile,,start,32815239,end,0,,:video.ts

16.34 tee

將輸出寫入多個協(xié)議示姿。 各個輸出由|分隔。

tee:file://path/to/local/this.avi|file://path/to/local/that.avi

16.35 tcp

傳輸控制協(xié)議逊笆。

TCP網(wǎng)址所需的語法是:

tcp://hostname:port[?options]

options包含key = val形式的&-separated選項列表栈戳。

支持的選項列表如下:

listen=1|0

偵聽傳入連接。 默認值為0难裆。

timeout=microseconds

設置提升錯誤超時子檀,以微秒表示。

此選項僅在讀取模式下相關:如果沒有超過此時間間隔的數(shù)據(jù)乃戈,則引發(fā)錯誤褂痰。

listen_timeout=milliseconds

設置監(jiān)聽超時,以毫秒為單位症虑。

recv_buffer_size=bytes

設置接收緩沖區(qū)大小缩歪,表示字節(jié)。

send_buffer_size=bytes

設置發(fā)送緩沖區(qū)大小谍憔,表示字節(jié)匪蝙。

tcp_nodelay=1|0

設置TCP_NODELAY以禁用Nagle的算法主籍。 默認值為0

以下示例顯示如何使用ffmpeg設置偵聽TCP連接逛球,然后使用ffplay訪問該連接:

ffmpeg -i input -f format tcp://hostname:port?listen
ffplay tcp://hostname:port

16.36 tls

傳輸層安全性(TLS)/安全套接字層(SSL

TLS/SSL URL語法如下:

tls://hostname:port[?options]

可以通過命令行選項(或通過AVOptions在代碼中)設置以下參數(shù):

ca_file, cafile=filename

包含證書頒發(fā)機構(CA)根證書的文件千元,以視為受信任。如果鏈接的TLS庫包含默認值需忿,則可能不需要指定驗證工作诅炉,但并非所有庫和設置都內(nèi)置默認值。文件必須采用OpenSSL PEM格式屋厘。

tls_verify=1|0

如果啟用,請嘗試驗證我們正在與之通信的對等方月而。請注意汗洒,如果使用OpenSSL,目前只能確保對等證書由CA數(shù)據(jù)庫中的一個根證書簽名父款,但它不會驗證證書是否與我們嘗試連接的主機名實際匹配溢谤。 (使用其他后端,主機名也會得到驗證憨攒。)

默認情況下禁用此選項世杀,因為在許多情況下它需要調(diào)用方提供CA數(shù)據(jù)庫。

cert_file肝集,cert = filename

包含與對等方握手時使用的證書的文件瞻坝。 (作為服務器運行時,在偵聽模式下杏瞻,對等端通常需要這樣做所刀,而客戶端證書僅在某些設置中強制要求。)

key_file, key=filename

包含證書私鑰的文件捞挥。

listen=1|0

如果啟用浮创,請偵聽提供的端口上的連接,并假定握手中的服務器角色而不是客戶端角色砌函。

示例命令行:

創(chuàng)建服務輸入流的TLS/SSL服務器斩披。

ffmpeg -i input -f format tls://hostname:port?listen&cert=server.crt&key=server.key

使用ffplayTLS/SSL服務器回放流:

ffplay tls://hostname:port

16.37 udp

用戶數(shù)據(jù)報協(xié)議。

UDP url所需的語法是:

udp://hostname:port[?options]

options包含key = val形式的&-separated選項列表讹俊。

如果在系統(tǒng)上啟用了線程垦沉,則使用循環(huán)緩沖區(qū)來存儲傳入數(shù)據(jù),這樣可以減少由于UDP套接字緩沖區(qū)溢出而導致的數(shù)據(jù)丟失劣像。 fifo_sizeoverrun_nonfatal選項與此緩沖區(qū)相關乡话。

支持的選項列表如下:

buffer_size=size

設置UDP最大套接字緩沖區(qū)大小,以字節(jié)為單位這用于設置接收或發(fā)送緩沖區(qū)大小耳奕,具體取決于套接字的用途绑青。默認值為64KB诬像。另見fifo_size

bitrate=bitrate

如果設置為非零闸婴,則輸出將具有指定的常量比特率坏挠,如果輸入具有足夠的數(shù)據(jù)包來維持它。

burst_bits=bits

使用比特率時邪乍,它指定數(shù)據(jù)包突發(fā)中的最大比特數(shù)降狠。

localport=port

覆蓋要綁定的本地UDP端口。

localaddr=addr

選擇本地IP地址庇楞。這很有用榜配,例如如果發(fā)送組播并且主機有多個接口,則用戶可以通過指定該接口的IP地址來選擇要發(fā)送的接口吕晌。

pkt_size=size

設置UDP數(shù)據(jù)包的大械叭臁(以字節(jié)為單位)。

reuse=1|0

明確允許或禁止重用UDP套接字睛驳。

ttl=ttl

設置生存時間值(僅適用于多播)烙心。

connect=1|0

使用connect()初始化UDP套接字。在這種情況下乏沸,以后無法使用ff_udp_set_remote_url更改目標地址淫茵。如果在開始時未知目標地址,則也可以在ff_udp_set_remote_url中指定此選項蹬跃。這允許查找具有getsockname的數(shù)據(jù)包的源地址匙瘪,并且如果收到destination unreachable,則使用AVERROR(ECONNREFUSED)返回寫入炬转。對于接收辆苔,這提供了僅接收來自指定對等地址/端口的分組的益處。

sources=address[,address]

僅接收從指定的發(fā)送方IP地址之一發(fā)送到組播組的數(shù)據(jù)包扼劈。

block=address[,address]

忽略從指定的發(fā)送方IP地址發(fā)送到組播組的數(shù)據(jù)包驻啤。

fifo_size=units

設置UDP接收循環(huán)緩沖區(qū)大小,表示為大小為188字節(jié)的數(shù)據(jù)包數(shù)荐吵。如果未指定骑冗,則默認為7 * 4096

overrun_nonfatal=1|0

UDP接收循環(huán)緩沖區(qū)溢出的情況下生存先煎。默認值為0贼涩。

timeout=microseconds

設置提升錯誤超時,以微秒表示薯蝎。

此選項僅在讀取模式下相關:如果沒有超過此時間間隔的數(shù)據(jù)遥倦,則引發(fā)錯誤。

broadcast=1|0

明確允許或禁止UDP廣播占锯。

請注意袒哥,廣播可能無法在具有廣播風暴保護的網(wǎng)絡上正常工作缩筛。

16.37.1 示例

  • 使用ffmpegUDP流式傳輸?shù)竭h程端點:

      ffmpeg -i input -f format udp://hostname:port
    
  • 使用ffmpeg使用188個大小的UDP數(shù)據(jù)包通過UDPmpegts格式傳輸,使用大輸入緩沖區(qū):

      ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
    
  • 使用ffmpeg從遠程端點接收UDP

       ffmpeg -i udp://[multicast-address]:port ...
    

16.38 unix

Unix本地套接字

Unix套接字URL所需的語法是:

unix://filepath

可以通過命令行選項(或通過AVOptions在代碼中)設置以下參數(shù):

timeout

超時以毫秒為單位堡称。

listen

在偵聽模式下創(chuàng)建Unix套接字瞎抛。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市却紧,隨后出現(xiàn)的幾起案子桐臊,更是在濱河造成了極大的恐慌,老刑警劉巖晓殊,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件断凶,死亡現(xiàn)場離奇詭異,居然都是意外死亡巫俺,警方通過查閱死者的電腦和手機懒浮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來识藤,“玉大人,你說我怎么就攤上這事次伶〕彰粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵冠王,是天一觀的道長赶撰。 經(jīng)常有香客問我,道長柱彻,這世上最難降的妖魔是什么豪娜? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哟楷,結果婚禮上瘤载,老公的妹妹穿的比我還像新娘。我一直安慰自己卖擅,他們只是感情好鸣奔,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惩阶,像睡著了一般挎狸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上断楷,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天锨匆,我揣著相機與錄音,去河邊找鬼冬筒。 笑死恐锣,一個胖子當著我的面吹牛茅主,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侥蒙,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暗膜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鞭衩?” 一聲冷哼從身側(cè)響起学搜,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎论衍,沒想到半個月后瑞佩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡坯台,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年炬丸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜒蕾。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡稠炬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咪啡,到底是詐尸還是另有隱情首启,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布撤摸,位于F島的核電站毅桃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏准夷。R本人自食惡果不足惜钥飞,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衫嵌。 院中可真熱鬧读宙,春花似錦、人聲如沸渐扮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墓律。三九已至膀估,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耻讽,已是汗流浹背察纯。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饼记。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓香伴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親具则。 傳聞我的和親對象是個殘疾皇子即纲,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容