• FFplay文档解读-49-多媒体过滤器三


    32.14 sendcmd, asendcmd

    将命令发送到filtergraph中的过滤器。

    这些过滤器读取要发送到filtergraph中其他过滤器的命令。

    必须在两个视频滤镜之间插入sendcmd,必须在两个音频滤镜之间插入asendcmd,但除此之外,它们的行为方式相同。

    可以使用commands选项在filter参数中提供命令规范,也可以在filename选项指定的文件中提供命令规范。

    这些过滤器接受以下选项:

    commands, c
    

    设置要读取的命令并将其发送到其他过滤器。

    filename,f
    

    设置要读取的命令的文件名并将其发送到其他过滤器。

    32.14.1 命令语法

    命令描述由一系列间隔规范组成,包括当与该间隔相关的特定事件发生时要执行的命令列表。 发生的事件通常是进入或离开给定时间间隔的当前帧时间。

    间隔由以下语法指定:

    START[-END] COMMANDS;
    

    时间间隔由STARTEND时间指定。 END是可选的,默认为最长时间。

    如果当前帧时间包含在间隔[START,END]中,即当时间大于或等于START且小于END时,则认为当前帧时间在指定的时间间隔内。

    命令由一个或多个命令规范的序列组成,由","分隔,与该间隔有关。 命令规范的语法由下式给出:

    [FLAGS] TARGET COMMAND ARG
    

    FLAGS是可选的,它指定与发送指定命令的时间间隔相关的事件类型,并且必须是由"+""|"分隔的非空序列标识符标志。 并包含在"["and"]"之间。

    识别以下标志:

    标志 解释
    enter 当前帧时间戳进入指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳不在给定的时间间隔内时,发送命令,并且当前是
    leave 当前帧时间戳离开指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳在给定间隔内时发送命令,而当前帧时间戳不在给定间隔内

    如果未指定FLAGS,则假定为[enter]的默认值。

    TARGET指定命令的目标,通常是过滤器类的名称或特定的过滤器实例名称。

    COMMAND指定目标过滤器的命令名称。

    ARG是可选的,它指定给定COMMAND的可选参数列表。

    在一个间隔规范和另一个间隔规范之间,空格或以#开头直到行尾的字符序列将被忽略,并可用于注释注释。

    命令规范语法的简化BNF描述如下:

    1. COMMAND_FLAG ::= "enter" | "leave"
    2. COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
    3. COMMAND ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
    4. COMMANDS ::= COMMAND [,COMMANDS]
    5. INTERVAL ::= START[-END] COMMANDS
    6. INTERVALS ::= INTERVAL[;INTERVALS]

    学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
    【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

      

    32.14.2 示例

    • 在第二个4指定音频速度变化:

        asendcmd=c='4.0 atempo tempo 1.5',atempo
      
    • 定位特定的过滤器实例:

        asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
      
    • 在文件中指定drawtexthue命令的列表。

      1. # show text in the interval 5-10
      2. 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
      3. [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
      4. # desaturate the image in the interval 15-20
      5. 15.0-20.0 [enter] hue s 0,
      6. [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
      7. [leave] hue s 1,
      8. [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
      9. # apply an exponential saturation fade-out effect, starting from time 25
      10. 25 [enter] hue s exp(25-t)

    允许读取和处理存储在文件'test.cmd'中的上述命令列表的过滤器图可以用以下内容指定:

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
    

    32.15 setpts, asetpts

    更改输入帧的PTS(演示时间戳)。

    setpts适用于视频帧,音频帧上的设置。

    此过滤器接受以下选项:

    expr
    

    为每个帧计算的表达式,以构造其时间戳。

    表达式通过eval API进行评估,并且可以包含以下常量:

    FRAME_RATE
    

    帧速率,仅针对恒定帧速率视频定义

    PTS
    
  • 相关阅读:
    有什么低价好用的电容笔推荐?大一新生必备物品
    探讨服务端自定义生成PDF的几种方案
    【机器学习科学库】全md文档笔记:Jupyter Notebook和Matplotlib使用(已分享,附代码)
    【爬虫】7.1. JavaScript动态渲染界面爬取-Selenium
    【PAT甲级 - C++题解】1078 Hashing
    Android 9.0 蓝牙功能之一:蓝牙音乐
    Hbase底层原理简介(一)
    会计基础工作规范E卷
    软件测试的行业现状,我们的未来在哪里?
    常用的国外邮箱服务有哪些?
  • 原文地址:https://blog.csdn.net/irainsa/article/details/127868446