FFplay文档解读-11-协议一

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

16.协议

协议是FFmpeg中配置的元素,用于访问需要特定协议的资源。

配置FFmpeg构建时,默认情况下会启用所有支持的协议。 您可以使用配置选项-list-protocols列出所有可用的列表。

您可以使用configure选项-disable-protocols禁用所有协议,并使用选项-enable-protocol = PROTOCOL选择性地启用协议,或者可以使用选项-disable-protocol =禁用特定协议 协议。

ff *工具的-protocols选项将显示支持的协议列表。

所有协议都接受以下选项:

rw_timeout

等待(网络)读/写操作完成的最长时间,以微秒为单位。

下面是对当前可用协议的描述。

16.1 async

输入流的异步数据填充包装器。

在后台线程中填充数据,以将I / O操作与demux线程分离。

async:URL
async:http://host/resource
async:cache:http://host/resource

16.2 bluray

阅读BluRay播放列表。

相关选项如下:

angle

蓝光角度

chapter

开始章节(1 ... N)

playlist

要播放的播放列表(BDMV/PLAYLIST/?????.mpls

例子:

读取BluRay中安装到/mnt/bluray的最长播放列表:

bluray:/mnt/bluray

BluRay读取安装到/mnt/bluray的播放列表4的角度2,从第2章开始:

-playlist 4 -angle 2 -chapter 2 bluray:/ mnt / bluray

16.3 cache

输入流的缓存包装器。

将输入流缓存到临时文件。 它为直播带来了搜索能力。

cache:URL

16.4 concat

物理级联协议。

按顺序从许多资源中读取和搜索,就像它们是一个独特的资源一样。

此协议接受的URL具有以下语法:

concat:URL1|URL2|...|URLN

其中URL1,URL2,...,URLN是要连接的资源的URL,每个URL可能指定不同的协议。

例如,要使用ffplay读取文件序列split1.mpegsplit2.mpeg','split3.mpeg,请使用以下命令:

ffplay concat:split1.mpeg \ | split2.mpeg \ | split3.mpeg

请注意,可能需要转义字符| 这是许多shells特殊的地方。

16.5 crypto

AES加密的流读取协议。

接受的选项是:

key 

从给定的十六进制表示设置AES解密密钥二进制块。

iv

从给定的十六进制表示设置AES解密初始化向量二进制块。

接受的网址格式:

crypto:URL
crypto+URL

16.6 data

URI中的内联数据。 见http://en.wikipedia.org/wiki/Data_URI_scheme

例如,要转换与ffmpeg内联给出的GIF文件:

ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png

16.7 file

文件访问协议。

读取或写入文件。

文件URL可以具有以下形式:

file:filename

其中filename是要读取的文件的路径。

将假定没有协议前缀的URL是文件URL。 根据构建,看起来像开头带有驱动器号的Windows路径的URL也将被假定为文件URL(对于类Unix系统的构建通常不是这种情况)。

例如,使用ffmpeg从文件input.mpeg读取命令时使用命令:

ffmpeg -i file:input.mpeg output.mpeg

该协议接受以下选项:

truncate

如果设置为1,则在写入时截断现有文件。值为0可防止截断。 默认值为1

blocksize

设置I/O操作最大块大小,以字节为单位。 默认值为INT_MAX,这导致不限制请求的块大小。 将此值设置得相当低可以改善用户终止请求响应时间,这对于慢速介质上的文件很有用。

16.8 ftp

FTP(文件传输协议)。

使用FTP协议读取或写入远程资源。

需要以下语法。

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

该协议接受以下选项。

timeout

设置基础低级操作使用的套接字I/O操作的超时(以微秒为单位)。默认情况下,它设置为-1,这意味着未指定超时。

ftp-anonymous-password

以匿名用户身份登录时使用的密码。通常应使用电子邮件地址。

ftp-write-seekable

控制编码期间连接的可查找性。如果设置为1,则资源应该是可搜索的,如果设置为0,则认为该资源不可搜索。默认值为0

注意:协议可以用作输出,但建议不要这样做,除非特别小心(测试,自定义服务器配置等)。在搜索操作期间,不同的FTP服务器以不同的方式运行。由于服务器的限制,ff *工具可能会产生不完整的内容。

该协议接受以下选项:

follow

如果设置为1,协议将在文件末尾重试读取,允许读取仍在写入的文件。为了终止此操作,您需要使用rw_timeout选项,或使用中断回调(对于API用户)。

16.9 gopher

Gopher协议。

16.10 hls

Apple HTTP Live Streaming兼容的分段流读作统一的流。 描述段的M3U8播放列表可以是使用标准文件协议访问的远程HTTP资源或本地文件。 通过在hls URI方案名称之后指定+ proto来声明嵌套协议,其中protofilehttp

hls+http://host/path/to/remote/resource.m3u8
hls+file://path/to/local/resource.m3u8

不鼓励使用此协议 - hls解复用器也应该正常工作(如果没有,请报告问题)并且更完整。 要使用hls demuxer,只需使用m3u8文件的直接URL即可。

16.11 http

HTTP(超文本传输​​协议)。

该协议接受以下选项:

seekable

控制连接的可寻找性。如果设置为1,则资源应该是可搜索的,如果设置为0,则认为不可搜索,如果设置为-1,如果它是可搜索的,它将尝试自动检测。默认值为-1

chunked_post

如果设置为1,则对帖子使用chunked Transfer-Encoding,默认值为1

content_type

POST消息或侦听模式设置特定内容类型。

HTTP_PROXY

设置HTTP代理以通过例如管道传输http://example.com:1234

headers

设置自定义HTTP标头,可以覆盖内置的默认标头。该值必须是编码标头的字符串。

multiple_requests

如果设置为1,则使用持久连接,默认值为0

post_data

设置自定义HTTP发布数据。

referer

设置Referer标头。在HTTP请求中包含Referer:URL标头。

user_agent

覆盖User-Agent标头。如果未指定,协议将使用描述libavformat构建的字符串。 (Lavf / <version>”`)

user-agent

这是一个已弃用的选项,您可以使用user_agent代替它。

timeout

设置基础低级操作使用的套接字I/O操作的超时(以微秒为单位)。默认情况下,它设置为-1,这意味着未指定超时。

reconnect_at_eof

如果设置,则将eof视为错误并导致重新连接,这对于实时/无限流非常有用。

reconnect_streamed

如果设置,则甚至流式/非可搜索流将在错误时重新连接。

reconnect_delay_max

设置放弃重新连接的最大延迟(以秒为单位)

MIME_TYPE

导出MIME类型。

http_version

导出HTTP响应版本号。通常为1.01.1

icy

如果设置为1,则从服务器请求ICY(SHOUTcast)元数据。如果服务器支持此功能,则应用程序必须通过读取icy_metadata_headersicy_metadata_packet选项来检索元数据。默认值为1

icy_metadata_headers

如果服务器支持ICY元数据,则它包含ICY特定的HTTP回复标头,由换行符分隔。

icy_metadata_packet

如果服务器支持ICY元数据,并且icy设置为1,则它包含服务器发送的最后一个非空元数据包。应该对对流中间元数据更新感兴趣的应用程序定期轮询它。

cookies

设置将在以后的请求中发送的cookie。每个cookie的格式与Set-Cookie HTTP响应字段的值相同。多个cookie可以由换行符分隔。

offset

设置初始字节偏移量。

end_offset

尝试将请求限制为此偏移量之前的字节。

method

当用作客户端选项时,它为请求设置HTTP方法。

当用作服务器选项时,它设置将从客户端预期的HTTP方法。如果预期和接收的HTTP方法不匹配,则客户端将收到错误请求响应。取消设置时,不会立即检查HTTP方法。这将在未来被自动检测取代。

listen

如果设置为1则启用实验性HTTP服务器。这可用于在用作输出选项时发送数据,或在用作输入选项时使用HTTP POST从客户端读取数据。如果设置为2,则启用实验性多客户端HTTP服务器。这在ffmpeg.c中尚未实现,因此不能用作命令行选项。

# Server side (sending):
ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://server:port

# Client side (receiving):
ffmpeg -i http://server:port -c copy somefile.ogg

# Client can also be done with wget:
wget http://server:port -O somefile.ogg

# Server side (receiving):
ffmpeg -listen 1 -i http://server:port -c copy somefile.ogg

# Client side (sending):
ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://server:port

# Client can also be done with wget:
wget --post-file=somefile.ogg http://server:port

16.11.1 HTTP Cookies

除非将cookie值与请求一起传入,否则将拒绝某些HTTP请求。 cookies选项允许指定这些cookie。 至少,每个cookie必须指定一个值以及路径和域。 与域和路径匹配的HTTP请求将自动在HTTP Cookie标头字段中包含cookie值。 多个cookie可以通过换行符分隔。

播放指定cookie的流所需的语法是:

ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8

16.12 Icecast

Icecast协议(流向Icecast服务器)

该协议接受以下选项:

ice_genre

设置流类型。

ice_name

设置流名称。

ice_description

设置流描述。

ice_url

设置流网站URL

ice_public

设置流是否应该是公共的。 默认值为0(不公开)。

user_agent

覆盖User-Agent标头。 如果未指定,将使用Lavf / <version>形式的字符串。

password

设置Icecast挂载点密码。

content_type

设置流内容类型。 如果它与audio/mpeg不同,则必须设置此项。

legacy_icecast

这使得支持Icecast版本<2.4.0,不支持HTTP PUT方法,但支持SOURCE方法。

icecast://[username[:password]@]server:port/mountpoint

16.13 mmst

TCP上的MMS(Microsoft Media Server)协议。

16.14 mmsh

通过HTTPMMS(Microsoft Media Server)协议。

所需的语法是:

mmsh://server[:port][/app][/playpath]

16.15 md5

MD5输出协议。

计算要写入的数据的MD5哈希值,并在关闭时将其写入指定的输出或stdout(如果未指定)。 它可用于测试复用器而无需编写实际文件。

一些例子如下:

# Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
ffmpeg -i input.flv -f avi -y md5:output.avi.md5

# Write the MD5 hash of the encoded AVI file to stdout.
ffmpeg -i input.flv -f avi -y md5:

请注意,某些格式(通常为MOV)要求输出协议是可搜索的,因此它们将因MD5输出协议而失败。

16.16 pipe

UNIX管道访问协议。

UNIX管道读取和写入。

接受的语法是:

pipe:[number]

number是与管道的文件描述符相对应的数字(例如,对于stdin0,对于stdout1,对于stderr2)。 如果未指定number,则默认情况下stdout文件描述符将用于写入,stdin用于读取。

例如,使用ffmpegstdin读取:

cat test.wav | ffmpeg -i pipe:0
# ...this is the same as...
cat test.wav | ffmpeg -i pipe:

ffmpeg写入stdout

ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
# ...this is the same as...
ffmpeg -i test.wav -f avi pipe: | cat > test.avi

该协议接受以下选项:

blocksize

设置I/O操作最大块大小,以字节为单位。 默认值为INT_MAX,这导致不限制请求的块大小。 将此值设置得相当低可以改善用户终止请求响应时间,这在数据传输缓慢时很有用。

请注意,某些格式(通常为MOV)要求输出协议是可搜索的,因此它们将使用管道输出协议失败。

16.17 prompeg

Pro-MPEG操作规范#32FEC协议。

Pro-MPEG CoP#3 FEC是用于通过RTP发送的MPEG-2传输流的2D奇偶校验前向纠错机制。

此协议必须与rtp_mpegts muxerrtp协议一起使用。

语法如下:

-f rtp_mpegts -fec prompeg=option=val... rtp://hostname:port

目标UDP端口对于列FEC流是端口+ 2,对于行FEC流是端口+4

该协议接受以下选项:

l=n

列数(4-20,LxD <= 100

d=n

行数(4-20,LxD <= 100

用法示例:

-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://hostname:port
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354