这是 ffmpeg-protocols 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
ffmpeg-protocols - FFmpeg 协议
商品描述
本文档描述了 libavformat 提供的输入和输出协议
图书馆。
PROTOCOLS
协议是 FFmpeg 中的配置元素,可以访问需要的资源
具体协议。
当您配置 FFmpeg 构建时,默认情况下会启用所有支持的协议。
您可以使用配置选项“--list-protocols”列出所有可用的。
您可以使用配置选项“--disable-protocols”禁用所有协议,并且
使用选项“--enable-protocol=”有选择地启用协议外交协定”,或者你可以
使用选项“--disable-protocol=”禁用特定协议外交协定".
ff* 工具的选项“-protocols”将显示支持的协议列表。
下面是对当前可用协议的描述。
异步
输入流的异步数据填充包装器。
在后台线程中填充数据,将 I/O 操作与 demux 线程解耦。
异步:
异步:http://host/resource
异步:缓存:http://host/resource
蓝光
阅读蓝光播放列表。
接受的选项是:
角度
蓝光角度
章
开始章节 (1...N)
播放列表
要读取的播放列表(BDMV/PLAYLIST/?????.mpls)
例子:
从安装到 /mnt/bluray 的 BluRay 读取最长的播放列表:
蓝光:/ mnt/蓝光
从安装到/mnt/bluray的BluRay读取播放列表2的角度4,从第2章开始:
-播放列表 4 -角度 2 -第 2 章蓝光:/mnt/bluray
缓存
输入流的缓存包装器。
将输入流缓存到临时文件。 它为直播带来了寻找能力。
缓存:
CONCAT
物理串联协议。
按顺序从许多资源中读取和查找,就好像它们是一种独特的资源。
此协议接受的 URL 具有以下语法:
连接: | |...|
协调 网址1, 网址2,..., 网址 是要连接的资源的 url,每一个
可能指定一个不同的协议。
例如读取文件序列 拆分1.mpeg, 拆分2.mpeg, 拆分3.mpeg - ffplay
使用命令:
ffplay 连接:split1.mpeg\|split2.mpeg\|split3.mpeg
请注意,您可能需要对字符“|”进行转义这是许多贝壳的特殊之处。
加密
AES 加密流读取协议。
接受的选项是:
键 根据给定的十六进制表示设置 AES 解密密钥二进制块。
iv 从给定的十六进制设置 AES 解密初始化向量二进制块
表示。
接受的 URL 格式:
加密:
加密+
data
URI 中的内嵌数据。 看http://en.wikipedia.org/wiki/Data_URI_scheme>.
例如,要转换内联给出的 GIF 文件 ffmpeg的:
ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
文件
文件访问协议。
读取或写入文件。
文件 URL 可以采用以下形式:
文件:
协调 文件名 是要读取的文件的路径。
没有协议前缀的 URL 将被假定为文件 URL。 根据
构建,一个 URL,看起来像一个以驱动器号开头的 Windows 路径
也将被假定为一个文件 URL(在类似 unix 的构建中通常不是这种情况
系统)。
例如从文件中读取 输入.mpeg - ffmpeg的 使用命令:
ffmpeg -i 文件:输入.mpeg 输出.mpeg
该协议接受以下选项:
截短
如果设置为 1,则在写入时截断现有文件。值为 0 可防止截断。
默认值为 1。
块大小
设置 I/O 操作最大块大小,以字节为单位。 默认值为“INT_MAX”,即
导致不限制请求的块大小。 将此值设置得相当低
提高用户终止请求的反应时间,这对于慢速文件很有价值
介质。
FTP
FTP(文件传输协议)。
使用 FTP 协议读取或写入远程资源。
需要以下语法。
ftp://[用户[:密码]@]服务器[:端口]/path/to/remote/resource.mpeg
该协议接受以下选项。
超时
设置底层低级别使用的套接字 I/O 操作的超时时间(以微秒为单位)
手术。 默认情况下,它设置为 -1,这意味着未指定超时。
ftp-匿名密码
以匿名用户身份登录时使用的密码。 通常一个电子邮件地址应该是
用过的。
ftp 写入可寻址
在编码期间控制连接的可搜索性。 如果设置为 1,则资源为
应该是可搜索的,如果设置为 0,则假定不可搜索。 默认值
是0。
注意:协议可以作为输出,但建议不要这样做,除非特殊
小心(测试,定制的服务器配置等)。 不同的 FTP 服务器行为
在搜索操作期间以不同的方式。 ff* 工具可能会产生不完整的内容,因为
服务器限制。
地鼠
地鼠协议。
高
阅读 Apple HTTP Live Streaming 兼容的分段流作为统一的流。 M3U8
描述片段的播放列表可以是远程 HTTP 资源或本地文件,访问
使用标准文件协议。 嵌套协议通过指定“+原"
在 hls URI 方案名称之后,其中 原 是“文件”或“http”。
高位+http://host/path/to/remote/resource.m3u8
hls+文件://路径/to/local/resource.m3u8
不鼓励使用此协议 - hls 分路器应该也能正常工作(如果没有,
请报告问题)并且更完整。 要改用 hls 分离器,只需
使用指向 m3u8 文件的直接 URL。
HTTP
HTTP(超文本传输协议)。
该协议接受以下选项:
可搜索的
控制连接的可寻性。 如果设置为 1 资源应该是
可搜索,如果设置为 0 则假定不可搜索,如果设置为 -1 它将尝试
自动检测它是否可搜索。 默认值为 -1。
分块帖子
如果设置为 1,则对帖子使用分块传输编码,默认值为 1。
内容类型
为 POST 消息设置特定的内容类型。
头
设置自定义 HTTP 标头,可以覆盖内置的默认标头。 该值必须是
对标头进行编码的字符串。
多个请求
如果设置为 1,则使用持久连接,默认为 0。
发布数据
设置自定义 HTTP 发布数据。
用户代理
USER_AGENT
覆盖 User-Agent 标头。 如果未指定,协议将使用字符串
描述 libavformat 构建。 (“拉夫夫/ ”)
超时
设置底层低级别使用的套接字 I/O 操作的超时时间(以微秒为单位)
手术。 默认情况下,它设置为 -1,这意味着未指定超时。
哑剧类型
导出 MIME 类型。
冰冷的 如果设置为 1,则从服务器请求 ICY (SHOUTcast) 元数据。 如果服务器支持
这样,应用程序必须通过读取元数据来检索元数据
icy_metadata_headers 和 冰冷元数据包 选项。 默认值为 1。
icy_metadata_headers
如果服务器支持 ICY 元数据,则它包含特定于 ICY 的 HTTP 回复
标题,由换行符分隔。
冰冷元数据包
如果服务器支持 ICY 元数据,并且 冰冷的 被设置为 1,这包含最后一个非
服务器发送的空元数据包。 应该定期轮询
对中流元数据更新感兴趣的应用程序。
cookies
设置要在以后的请求中发送的 cookie。 每个cookie的格式都是一样的
作为 Set-Cookie HTTP 响应字段的值。 多个cookies可以由
换行符。
抵消
设置初始字节偏移量。
结束偏移量
尝试将请求限制在此偏移量之前的字节。
方法
当用作客户端选项时,它为请求设置 HTTP 方法。
当用作服务器选项时,它会设置预期的 HTTP 方法
客户。 如果预期和接收到的 HTTP 方法与客户端不匹配
将得到一个错误的请求响应。 取消设置时,不检查 HTTP 方法
现在。 这将在未来被自动检测取代。
听
如果设置为 1,则启用实验性 HTTP 服务器。 使用时可用于发送数据
作为输出选项,或在用作输入时使用 HTTP POST 从客户端读取数据
选项。 如果设置为 2,则启用实验性多客户端 HTTP 服务器。 这还没有
在 ffmpeg.c 或 ffserver.c 中实现,因此不得用作命令行
选项。
# 服务器端(发送):
ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http:// :
# 客户端(接收):
ffmpeg -i http:// : -c 复制 somefile.ogg
# 客户端也可以用 wget 来完成:
wget http:// : -O somefile.ogg
# 服务器端(接收):
ffmpeg -listen 1 -i http:// : -c 复制 somefile.ogg
# 客户端(发送):
ffmpeg -i somefile.ogg -chunked_post 0 -c 复制 -f ogg http:// :
# 客户端也可以用 wget 来完成:
wget --post-file=somefile.ogg http:// :
HTTP Cookies
除非 cookie 值随请求传入,否则某些 HTTP 请求将被拒绝。 这
cookies 选项允许指定这些 cookie。 至少,每个 cookie 必须
指定一个值以及路径和域。 匹配两个域的 HTTP 请求
并且 path 将自动在 HTTP Cookie 标头字段中包含 cookie 值。
多个 cookie 可以用换行符分隔。
播放指定 cookie 的流所需的语法是:
ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
的Icecast
Icecast 协议(流到 Icecast 服务器)
该协议接受以下选项:
冰类型
设置流类型。
冰名称
设置流名称。
冰描述
设置流描述。
冰_网址
设置流网站 URL。
冰公共
设置流是否应该是公开的。 默认值为 0(非公开)。
USER_AGENT
覆盖 User-Agent 标头。 如果未指定形式为“Lavf/ ”
将被使用。
密码
设置 Icecast 挂载点密码。
内容类型
设置流内容类型。 如果它与音频/mpeg 不同,则必须设置它。
遗产_icecast
这将启用对不支持 HTTP PUT 的 Icecast 版本 < 2.4.0 的支持
方法,但 SOURCE 方法。
冰投://[ [: ]@] : /
毫米波
基于 TCP 的 MMS(Microsoft 媒体服务器)协议。
嗯嗯
基于 HTTP 的 MMS(Microsoft 媒体服务器)协议。
所需的语法是:
mmsh:// [: ][/ ][/ ]
md5
MD5 输出协议。
计算要写入的数据的 MD5 哈希值,并在关闭时将其写入
如果没有指定,则指定输出或标准输出。 它可用于测试多路复用器,而无需
写一个实际的文件。
下面是一些例子。
# 将编码后的 AVI 文件的 MD5 哈希写入文件 output.avi.md5。
ffmpeg -i 输入.flv -f avi -y md5:输出.avi.md5
# 将编码后的 AVI 文件的 MD5 哈希写入 stdout。
ffmpeg -i input.flv -f avi -y md5:
请注意,某些格式(通常是 MOV)要求输出协议是可查找的,因此它们
将因 MD5 输出协议而失败。
管
UNIX 管道访问协议。
从 UNIX 管道读取和写入。
接受的语法是:
管道:[ ]
数 是与管道的文件描述符对应的数字(例如,0 表示标准输入,1
用于标准输出,2 用于标准错误)。 如果 数 未指定,默认为标准输出文件
描述符将用于写入,stdin 用于读取。
例如从标准输入读取 ffmpeg的:
猫测试.wav | ffmpeg -i 管道:0
# ...这与...相同
猫测试.wav | ffmpeg -i 管道:
用于写入标准输出 ffmpeg的:
ffmpeg -i test.wav -f avi 管道:1 | 猫 > test.avi
# ...这与...相同
ffmpeg -i test.wav -f avi 管道: | 猫 > test.avi
该协议接受以下选项:
块大小
设置 I/O 操作最大块大小,以字节为单位。 默认值为“INT_MAX”,即
导致不限制请求的块大小。 将此值设置得相当低
提高用户终止请求的反应时间,如果数据是有价值的
传输很慢。
请注意,某些格式(通常为 MOV)要求输出协议可查找,因此
他们将因管道输出协议而失败。
转播时间
实时消息传递协议。
实时消息传递协议 (RTMP) 用于跨网络流式传输多媒体内容
TCP/IP 网络。
所需的语法是:
rtmp://[ : @] [: ][/ ][/ ][/ ]
接受的参数是:
用户名
一个可选的用户名(主要用于发布)。
密码
可选密码(主要用于发布)。
服务器
RTMP 服务器的地址。
端口
要使用的 TCP 端口号(默认为 1935)。
应用 它是要访问的应用程序的名称。 它通常对应于其中的路径
该应用程序安装在 RTMP 服务器上(例如 /一经请求/, /闪光/现场/等)。
您也可以通过“rtmp_app”选项覆盖从 URI 解析的值。
游戏路径
它是参考应用程序播放的资源的路径或名称
指定于 应用, 可能以“mp4:”为前缀。 您可以覆盖从中解析的值
URI 也通过“rtmp_playpath”选项。
听
充当服务器,侦听传入连接。
超时
等待传入连接的最长时间。 暗示倾听。
此外,以下参数可以通过命令行选项设置(或在代码中通过
“AVOption”):
rtmp_应用程序
要在 RTMP 服务器上连接的应用程序的名称。 此选项覆盖参数
在 URI 中指定。
rtmp_缓冲区
以毫秒为单位设置客户端缓冲时间。 默认值为 3000。
rtmp连接
额外的任意 AMF 连接参数,从字符串解析,例如“B:1
S:authMe O:1 NN:code:1.23 NS:flag:ok O:0"。每个值都有一个前缀
表示类型的字符,B 代表布尔值,N 代表数字,S 代表字符串,O 代表对象,
或 Z 为空,后跟一个冒号。 对于布尔值,数据必须为 0 或 1
分别为 FALSE 或 TRUE。 同样对于对象,数据必须是 0 或 1 才能结束或
分别开始一个对象。 可以通过在子对象中添加前缀来命名子对象中的数据项
输入'N'并在值前指定名称(即“NB:myFlag:1”)。 这个
选项可以多次使用来构建任意 AMF 序列。
rtmp_flashver 文件
用于运行 SWF 播放器的 Flash 插件版本。 默认值为 LNX 9,0,124,2。
(发布时默认为FMLE/3.0(兼容; ))
rtmp_flush_interval
在同一请求中刷新的数据包数(仅限 RTMPT)。 默认值为 10。
rtmp_直播
指定媒体是实时流。 在直播中没有恢复或寻找是
可能的。 默认值为“any”,表示订阅者首先尝试播放
播放路径中指定的直播流。 如果未找到该名称的直播,
它播放录制的流。 其他可能的值是“live”和“recorded”。
rtmp_pageurl
嵌入媒体的网页的 URL。 默认情况下不会发送任何值。
rtmp_播放路径
要播放或发布的流标识符。 此选项覆盖指定的参数
在 URI 中。
rtmp_订阅
要订阅的直播流的名称。 默认情况下不会发送任何值。 它只是
如果指定了选项或 rtmp_live 设置为 live,则发送。
rtmp_swf哈希
解压后的 SWF 文件的 SHA256 哈希值(32 字节)。
rtmp_swf大小
解压后的 SWF 文件的大小,是 SWFVerification 所必需的。
rtmp_swfurl 文件
媒体的 SWF 播放器的 URL。 默认情况下不会发送任何值。
rtmp_swf验证
播放器 swf 文件的 URL,自动计算哈希/大小。
rtmp_tcurl 文件
目标流的 URL。 默认为 proto://host[:port]/app。
例如阅读 ffplay 来自应用程序的名为“sample”的多媒体资源
来自 RTMP 服务器“myserver”的“vod”:
ffplay rtmp://myserver/vod/sample
要发布到受密码保护的服务器,请分别传递播放路径和应用程序名称:
ffmpeg -re -i -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
rmp
加密的实时消息传递协议。
加密实时消息传递协议 (RTMPE) 用于流式传输多媒体
标准密码原语中的内容,由 Diffie-Hellman 密钥组成
交换和 HMACSHA256,生成一对 RC4 密钥。
实时传输协议
通过安全 SSL 连接的实时消息传递协议。
实时消息传递协议 (RTMPS) 用于跨媒体传输多媒体内容
加密连接。
提示符
通过 HTTP 隧道传输的实时消息传递协议。
通过 HTTP 隧道传输的实时消息传递协议 (RTMPT) 用于流式传输
HTTP 请求中的多媒体内容以穿越防火墙。
文件
通过 HTTP 隧道传输的加密实时消息传递协议。
通过 HTTP 隧道传输的加密实时消息传递协议 (RTMPTE) 用于
在 HTTP 请求中流式传输多媒体内容以穿越防火墙。
提示音
通过 HTTPS 隧道传输的实时消息传递协议。
通过 HTTPS (RTMPTS) 隧道传输的实时消息传递协议用于流式传输
HTTPS 请求中的多媒体内容以穿越防火墙。
libsmb客户端
libsmbclient 允许操作 CIFS/SMB 网络资源。
需要以下语法。
smb://[[域:]用户[:密码@]]服务器[/share[/path[/file]]]
该协议接受以下选项。
超时
设置底层低层使用的套接字 I/O 操作的超时时间(以毫秒为单位)
手术。 默认情况下,它设置为 -1,这意味着未指定超时。
截短
如果设置为 1,则在写入时截断现有文件。值为 0 可防止截断。
默认值为 1。
工作组
设置用于建立连接的工作组。 默认情况下未指定工作组。
有关更多信息,请参阅:http://www.samba.org/>.
libssh
通过 libssh 的安全文件传输协议
使用 SFTP 协议读取或写入远程资源。
需要以下语法。
sftp://[用户[:密码]@]服务器[:端口]/path/to/remote/resource.mpeg
该协议接受以下选项。
超时
设置底层低级操作使用的套接字 I/O 操作的超时时间。 经过
默认设置为 -1,这意味着未指定超时。
截短
如果设置为 1,则在写入时截断现有文件。值为 0 可防止截断。
默认值为 1。
私钥
指定包含要在授权期间使用的私钥的文件的路径。 经过
默认的 libssh 在 〜/ .ssh / 目录。
示例:播放存储在远程服务器上的文件。
ffplayftp://用户:密码@服务器地址:22/home/user/resource.mpeg
库文件 rtmp, rtmp, rtmps, rtmp, 文件
通过 librtmp 支持的实时消息传递协议及其变体。
需要在配置期间存在 librtmp 头文件和库。 你需要
使用“--enable-librtmp”显式配置构建。 如果启用,这将替换
原生 RTMP 协议。
该协议提供了大多数客户端功能和一些支持所需的服务器功能
RTMP、通过 HTTP 隧道传输的 RTMP (RTMPT)、加密的 RTMP (RTMPE)、基于 SSL/TLS 的 RTMP (RTMPS) 和
这些加密类型的隧道变体(RTMPTE、RTMPTS)。
所需的语法是:
:// [: ][/ ][/ ]
协调 rtmp_proto文件 是字符串“rtmp”、“rtmpt”、“rtmpe”、“rtmps”、“rtmpte”之一,
对应于每个 RTMP 变体的“rtmpts”,以及 服务器, 端口, 应用 和 游戏路径 有
与为 RTMP 本机协议指定的含义相同。 选项 包含空间列表-
表单的分离选项 键=VAL.
有关更多信息,请参阅 librtmp 手册页 (man 3 librtmp)。
例如,使用实时流式传输文件到 RTMP 服务器 ffmpeg的:
ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
使用播放相同的流 ffplay:
ffplay "rtmp://myserver/live/mystream live=1"
RTP
实时传输协议。
RTP URL 所需的语法是:rtp://主机[:端口][?选项=VAL...]
端口 指定要使用的 RTP 端口。
支持以下 URL 选项:
TTL=n
设置 TTL(生存时间)值(仅适用于多播)。
rtcp端口=n
将远程 RTCP 端口设置为 n.
本地端口=n
将本地 RTP 端口设置为 n.
本地rtcpport=n'
将本地 RTCP 端口设置为 n.
包大小=n
将最大数据包大小(以字节为单位)设置为 n.
连接=0|1
在 UDP 套接字上执行“connect()”(如果设置为 1)或不执行(如果设置为 0)。
来源=ip[,ip]
列出允许的源 IP 地址。
块=ip[,ip]
列出不允许(阻止)的源 IP 地址。
write_to_source=0|1
将数据包发送到最新接收到的数据包的源地址(如果设置为 1)或发送到
默认远程地址(如果设置为 0)。
本地端口=n
将本地 RTP 端口设置为 n.
这是一个已弃用的选项。 反而, 本地端口 应该使用。
重要的说明:
1。 如果 端口号 未设置 RTCP 端口将设置为 RTP 端口值加 1。
2。 如果 本地端口 (本地 RTP 端口)未设置任何可用端口将用于
本地 RTP 和 RTCP 端口。
3。 如果 本地端口 (本地 RTCP 端口)未设置将设置为本地 RTP 端口
值加1。
RTSP
实时流协议。
RTSP 在技术上不是 libavformat 中的协议处理程序,它是一个多路复用器和多路复用器。 这
demuxer 支持普通的 RTSP(通过 RTP 传输数据;这被例如使用
Apple 和 Microsoft)和 Real-RTSP(通过 RDT 传输数据)。
多路复用器可用于使用 RTSP ANNOUNCE 将流发送到支持它的服务器
(目前是 Darwin Streaming Server 和 Mischa Spiegelmock 的
<https://github.com/revmischa/rtsp-server>)。
RTSP url 所需的语法是:
rtsp:// [: ]/
选项可以在 ffmpeg的/ffplay 命令行,或通过“AVOption”或在代码中设置
“avformat_open_input”。
支持以下选项。
初始暂停
如果设置为 1,则不要立即开始播放流。默认值为 0。
rtsp_传输
设置 RTSP 传输协议。
它接受以下值:
UDP 使用 UDP 作为较低的传输协议。
TCP 使用 TCP(在 RTSP 控制通道内交错)作为较低的传输
协议。
udp_多播
使用 UDP 多播作为较低的传输协议。
HTTP
使用 HTTP 隧道作为较低的传输协议,这对于传递非常有用
代理。
可以指定多个较低的传输协议,在这种情况下,它们会尝试一个
一次(如果一个设置失败,则尝试下一个)。 对于多路复用器,只有
TCP 和 UDP 支持选项。
rtsp_标志
设置 RTSP 标志。
接受以下值:
过滤源
仅接受来自协商对等地址和端口的数据包。
听
充当服务器,侦听传入连接。
首选_tcp
如果 TCP 可用作 RTSP RTP 传输,请先尝试使用 TCP 进行 RTP 传输。
默认值为 没有.
允许的媒体类型
设置要从服务器接受的媒体类型。
接受以下标志:
电影
音频
data
默认情况下,它接受所有媒体类型。
最小端口
设置最小本地 UDP 端口。 默认值为 5000。
最大端口
设置最大本地 UDP 端口。 默认值为 65000。
超时
设置最大超时(以秒为单位)以等待传入连接。
值 -1 表示无限(默认)。 该选项意味着 rtsp_标志 设置
听.
重新排序队列大小
设置要缓冲的数据包数量以处理重新排序的数据包。
超时
以微秒为单位设置套接字 TCP I/O 超时。
用户代理
覆盖 User-Agent 标头。 如果未指定,则默认为 libavformat
标识符字符串。
当通过 UDP 接收数据时,分路器尝试重新排序接收到的数据包(因为它们
可能会乱序到达,或者数据包可能会完全丢失)。 这可以通过设置禁用
最大解复用延迟为零(通过 AVFormatContext 的“max_delay”字段)。
观看多比特率 Real-RTSP 流时 ffplay,要显示的流可以是
用“-vst”选择 n 和“-ast” n 分别用于视频和音频,并且可以打开
通过按“v”和“a”来飞行。
例子
下面的例子都使用了 ffplay 和 ffmpeg的 工具。
· 通过 UDP 观看流,最大重新排序延迟为 0.5 秒:
ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
· 观看通过 HTTP 隧道传输的流:
ffplay -rtsp_transport http rtsp://server/video.mp4
· 实时发送流到 RTSP 服务器,供其他人观看:
ffmpeg -re -i -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
· 实时接收流:
ffmpeg -rtsp_flags 听 -i rtsp://ownaddress/live.sdp
树液
会话公告协议 (RFC 2974)。 这在技术上不是协议处理程序
libavformat,它是一个多路复用器和多路分离器。 它用于 RTP 流的信令,通过
在单独的端口上定期宣布流的 SDP。
多路复用器
提供给多路复用器的 SAP url 的语法是:
树液:// [: ][? ]
RTP 数据包被发送到 目的地 在港口 端口, 如果没有端口,则到端口 5004
指定的。 选项 是一个“&”分隔的列表。 支持以下选项:
公告地址=地址
指定将通知发送到的目标 IP 地址。 如果省略,则
公告发送到常用的SAP公告组播地址
224.2.127.254 (sap.mcast.net) 或 ff0e::2:7ffe 如果 目的地 是一个 IPv6 地址。
公告端口=端口
指定发送通知的端口,如果未指定,则默认为 9875。
TTL=TTL
指定公告和 RTP 数据包的生存时间值,默认为 255。
相同端口=0 | 1
如果设置为 1,则在同一端口对上发送所有 RTP 流。 如果为零(默认值),则所有
流在唯一的端口上发送,每个流在端口 2 上的数字高于
以前的。 VLC/Live555 要求将此设置为 1,以便能够接收流。
libavformat 中用于接收的 RTP 堆栈要求所有流都以唯一的方式发送
端口。
示例命令行如下。
要在本地子网上广播流,以便在 VLC 中观看:
ffmpeg -re -i -f sap sap://224.0.0.255?same_port=1
同样,对于观看 ffplay:
ffmpeg -re -i -f 汁液://224.0.0.255
为了观看 ffplay,通过 IPv6:
ffmpeg -re -i -f sap sap://[ff0e::1:2:3:4]
分路器
提供给分路器的 SAP url 的语法是:
树液://[ ][: ]
地址 是用于侦听公告的多播地址,如果省略,则为默认值
使用 224.2.127.254 (sap.mcast.net)。 端口 是监听的端口,如果是 9875
省略。
分路器侦听给定地址和端口上的公告。 一次
收到通知后,它会尝试接收该特定流。
示例命令行如下。
要回放在正常 SAP 多播地址上宣布的第一个流:
ffplay树液://
要回放在默认 IPv6 SAP 多播地址上宣布的第一个流:
ffplay sap://[ff0e::2:7ffe]
SCTP
流控制传输协议。
接受的 URL 语法是:
scp:// : [? ]
该协议接受以下选项:
听
如果设置为任何值,则侦听传入连接。 传出连接由
默认。
最大流
设置最大流数。 默认情况下没有设置限制。
回复
安全实时传输协议。
接受的选项是:
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
设置输入输出编码参数,用base64编码表示
二进制块的表示。 这个二进制块的前 16 个字节用作
主密钥,以下 14 个字节用作主盐。
子文件
虚拟地提取文件或另一个流的一段。 底层流必须是
可寻。
接受的选项:
开始
提取段的起始偏移量,以字节为单位。
end 提取段的结束偏移量,以字节为单位。
例子:
从 DVD VOB 文件中提取一章(从外部和
乘以 2048):
子文件,,开始,153391104,结束,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
直接从 TAR 存档播放 AVI 文件:
子文件,,开始,183241728,结束,366490624,,:archive.tar
TCP
传输控制协议。
TCP url 所需的语法是:
tcp:// : [? ]
选项 包含表单的 & 分隔选项列表 键=VAL.
支持的选项列表如下。
听=1 | 0
侦听传入连接。 默认值为 0。
超时=微秒
设置引发错误超时,以微秒表示。
此选项仅与读取模式相关:如果超过此时间没有数据到达
间隔,引发错误。
收听超时=毫秒
设置监听超时,以毫秒为单位。
以下示例显示如何设置侦听 TCP 连接 ffmpeg的,这是
然后访问 ffplay:
ffmpeg -i -F tcp:// : ?听
ffplay tcp:// :
TLS
传输层安全 (TLS) / 安全套接字层 (SSL)
TLS/SSL url 所需的语法是:
网址:// : [? ]
可以通过命令行选项(或通过“AVOption”在代码中)设置以下参数:
ca_file, 咖啡馆=文件名
包含要视为受信任的证书颁发机构 (CA) 根证书的文件。 如果
链接的 TLS 库包含一个默认值,这可能不需要指定
验证工作,但并非所有库和设置都有内置的默认值。
文件必须是 OpenSSL PEM 格式。
tls_验证=1 | 0
如果启用,请尝试验证我们正在与之通信的对等方。 注意,如果使用
OpenSSL,这目前仅确保对等证书由以下之一签署
CA 数据库中的根证书,但它不验证
证书实际上与我们尝试连接的主机名相匹配。 (使用 GnuTLS,
主机名也经过验证。)
默认情况下这是禁用的,因为它需要由 CA 数据库提供
在许多情况下调用者。
证书文件, 证书=文件名
包含在与对等方握手时使用的证书的文件。 (什么时候
作为服务器运行,在侦听模式下,这通常是对等方需要的,而
仅在某些设置中强制要求使用客户端证书。)
密钥文件, 键=文件名
包含证书私钥的文件。
听=1 | 0
如果启用,在提供的端口上侦听连接,并承担服务器角色
握手而不是客户端角色。
示例命令行:
创建一个为输入流提供服务的 TLS/SSL 服务器。
ffmpeg -i -F 网址:// : ?听&证书= &key=
使用 TLS/SSL 服务器播放流 ffplay:
ffplay tls:// :
UDP
用户数据报协议。
UDP URL 所需的语法是:
udp:// : [? ]
选项 包含表单的 & 分隔选项列表 键=VAL.
如果系统上启用了线程,则使用循环缓冲区来存储
传入数据,它允许减少由于 UDP 套接字缓冲区溢出而导致的数据丢失。
这个 先进先出尺寸 和 overrun_nonfatal 选项与此缓冲区相关。
支持的选项列表如下。
缓冲区大小=尺寸
设置 UDP 最大套接字缓冲区大小(以字节为单位)。 这用于设置
接收或发送缓冲区大小,取决于套接字的用途。 默认是
64KB。 也可以看看 先进先出尺寸.
本地端口=端口
覆盖要绑定的本地 UDP 端口。
本地地址=地址
选择本地 IP 地址。 这很有用,例如,如果发送多播并且主机有
多个接口,用户可以选择通过哪个接口发送
指定该接口的 IP 地址。
包大小=尺寸
设置 UDP 数据包的大小(以字节为单位)。
重用=1 | 0
明确允许或禁止重用 UDP 套接字。
TTL=TTL
设置生存时间值(仅适用于多播)。
连接=1 | 0
使用“connect()”初始化 UDP 套接字。 在这种情况下,目标地址
以后不能用 ff_udp_set_remote_url 更改。 如果目标地址不是
一开始就知道,这个选项也可以在 ff_udp_set_remote_url 中指定。 这个
允许使用getsockname找出数据包的源地址,并使
如果收到“目标无法到达”,则写入返回 AVERROR(ECONNREFUSED)。
对于接收,这提供了仅从指定的接收数据包的好处
对等地址/端口。
来源=地址[,地址]
只接收从指定发送者 IP 之一发送到多播组的数据包
地址。
块=地址[,地址]
忽略从指定发送方 IP 地址发送到多播组的数据包。
先进先出大小=单位
设置UDP接收循环缓冲区大小,表示为有大小的包数
188 字节。 如果未指定,则默认为 7*4096。
overrun_nonfatal=1 | 0
在 UDP 接收循环缓冲区溢出的情况下存活。 默认值为 0。
超时=微秒
设置引发错误超时,以微秒表示。
此选项仅与读取模式相关:如果超过此时间没有数据到达
间隔,引发错误。
广播=1 | 0
明确允许或禁止 UDP 广播。
请注意,广播可能无法在有广播风暴的网络上正常工作
保护。
例子
· 用 ffmpeg的 通过 UDP 流传输到远程端点:
ffmpeg -i -F udp:// :
· 用 ffmpeg的 使用 188 个大小的 UDP 数据包通过 UDP 以 mpegts 格式流式传输,使用
大输入缓冲区:
ffmpeg -i -f mpegts udp:// : ?pkt_size=188&buffer_size=65535
· 用 ffmpeg的 从远程端点通过 UDP 接收:
ffmpeg -i udp://[ ]: ...
UNIX
Unix 本地套接字
Unix 套接字 URL 所需的语法是:
Unix://
可以通过命令行选项(或通过“AVOption”在代码中)设置以下参数:
超时
以毫秒为单位的超时时间。
听
在侦听模式下创建 Unix 套接字。
使用 onworks.net 服务在线使用 ffmpeg 协议