【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 )

文章目录

  • 一、ffplay 命令行参数 - 音频滤镜
    • 1、设置音频滤镜 -af 参数
    • 2、常用的 音频滤镜 参数
    • 3、音频滤镜链 示例
  • 二、ffplay 命令行参数 - 统计信息
    • 1、设置统计信息 -stats 参数
    • 2、关闭统计信息 -nostats 参数
  • 三、ffplay 命令行参数 - 同步时钟类型
    • 1、设置同步时钟类型 -sync 参数
    • 2、同步时钟类型参数选项列举





一、ffplay 命令行参数 - 音频滤镜



1、设置音频滤镜 -af 参数


ffplay 命令的 -af 参数用于 设置 音频滤镜 ( Audio Filter ) , 用于 对 音频流 应用 各种 处理 和 转换 效果 ;

多个 音频滤镜 可以组合在一起 , 形成一个 " 音频滤镜链 " , 音频滤镜 之间 使用 逗号 隔开 , 并按照指定的顺序 将 转换效果 应用于 正在播放的 音频 ;

" 音频滤镜链 " 是一个 描述 音频滤镜 及其 参数 的字符串 , 可以通过 该参数 来 设置 音效 , 调整音量 , 改变音频 采样率 , 进行 音频 重采样 ;

设置 " 音频滤镜链 " 会 降低 音频播放性能 , 尤其是 正在 处理高质量或高采样率的音频时 ;

使用 复杂的 " 音频滤镜链 " 时 , 建议关闭不必要的程序和功能 , 以确保流畅的播放体验 ;


单个 音频滤镜 示例 : 执行

ffplay -af "volume=0.5" fengjing.mp4

命令 , 将音量设置为 50% 音量 , 执行效果如下 :

在这里插入图片描述


2、常用的 音频滤镜 参数


ffplay 的 -af 参数 可以 设置 一个或多个 音频滤镜 , 这些 滤镜 可以改变音频的 音量 / 采样率 / 声道数 等效果 , 下面是 一些 常用的 -af 参数选项 :

  • volume=volume : 设置 音频音量 , volume 是一个 乘数 , 可以设置一个 小数 或 整数 ,

    • volume=0.5 就是将音量降低一半 ,
    • volume=2 是 将音量 提高为原来的 2 倍 ;
  • atempo=tempo : 设置 音频播放速度 , 参数值是一个浮点数 , tempo 参数值 > 1 时 音频播放速度加快 , 小于 1 时音频播放速度减慢 ;

    • atempo=0.5 设置 0.5 倍速度播放 ;
    • atempo=2.0 设置 2 倍速度播放 ;
  • aresample=resampler_options : 设置音频重采样 ; 该 音频滤镜 可以用来改变音频的 采样率 / 格式 / 声道布局 ;

    • aresample=44100 可以将 音频的采样率 从 原始值 改变为 44100 Hz ;
  • aformat=sample_fmts : 强制转换音频样本格式 , 如 : 修改 位深度 和 编码方式 ;

    • aformat=sample_fmts=s16 将 播放的音频 转为 16 位 有符号整数 编码 ;
    • ffplay 的 -af 参数主要用于实时应用音频效果 , 如调整音量 / 改变播放速度等 ;
    • 在 播放前 转换音频格式 , 建议使用 ffmpeg 命令 , 先转码 , 再使用 ffplay 播放 ;
  • achannelmap=channel_layout : 重新映射音频声道 ;

  • bass=gain : 调整低音增益 ;

  • treble=gain : 调整高音增益 ;


3、音频滤镜链 示例


多个 音频滤镜 示例 : 执行

ffplay -af "volume=0.25,atempo=2.0" fengjing.mp4

命令 , 将音量设置为 0.25 倍 , 播放速度设置为 2 倍 , 执行效果如下 :

在这里插入图片描述





二、ffplay 命令行参数 - 统计信息



1、设置统计信息 -stats 参数


ffplay 命令的 -stats 参数 用于 在 命令行 中 打印 统计信息 , 这些统计信息 包括

  • 显示流的持续时间
  • 编解码器参数
  • 流中的当前位置
  • 音频 / 视频同步差值 ;

该 参数 选项 在默认情况下 是 启用状态 , 在 默认的 视频播放 过程中 可以看到这些统计信息 ;


执行

ffplay fengjing.mp4

命令 , 下图中 红色矩形框 中的内容 , 就是 播放时的 统计信息 ;

在这里插入图片描述

统计信息内容如下 :

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fengjing.mp4':  0B f=0/0Metadata:major_brand     : isomminor_version   : 512compatible_brands: mp41creation_time   : 2024-02-09T06:29:29.000000Zencoder         : Bandicam 4.5.0.1587 / GDI / Nvidia NVENCencoder-eng     : Bandicam 4.5.0.1587 / GDI / Nvidia NVENCDuration: 00:01:01.78, start: 0.000000, bitrate: 1783 kb/sStream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 752x420 [SAR 1:1 DAR 188:105], 1580 kb/s, 28.61 fps, 30 tbr, 30k tbn, 60 tbc (default)Metadata:creation_time   : 2024-02-09T06:29:29.000000Zhandler_name    : VideoHandlervendor_id       : [0][0][0][0]Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)Metadata:creation_time   : 2024-02-09T06:29:29.000000Zhandler_name    : SoundHandlervendor_id       : [0][0][0][0]37.74 A-V: -0.030 fd=  67 aq=   30KB vq=  108KB sq=    0B f=0/0

部分内容解析 :

  • Duration: 00:01:01.78, start: 0.000000, bitrate: 1783 kb/s : 是 码流长度 1 分钟零 1 秒 , 开始时间 0 , 比特率是 1783 kb/s ;
  • 37.74 A-V: -0.030 : 当前播放到了 37.74 秒 , 音视频 差值 -0.030 秒 ;
  • creation_time : 2024-02-09T06:29:29.000000Z : 表示当前音频的创建时间是 2024 年 2 月 9 号 ;

2、关闭统计信息 -nostats 参数


ffplay 命令的 -nostats 参数 用于 关闭 统计信息 , 使用该参数后 , 不再显示 如下信息 :

  • 显示流的持续时间
  • 编解码器参数
  • 流中的当前位置
  • 音频 / 视频同步差值 ;

执行

ffplay -nostats fengjing.mp4

命令 , 可以关闭 统计信息 ;

在下图中 , 可以看到 下半部分 都是空白的 , 没有打印出 播放时 的 统计信息 ;

在这里插入图片描述





三、ffplay 命令行参数 - 同步时钟类型



1、设置同步时钟类型 -sync 参数


ffplay 命令的 -sync 参数 用于 设置 同步时钟类型 , 可以指定

  • 音频流时钟
  • 视频流时钟
  • 外部时钟

三种 时钟 选项 , 同步时钟类型 又称为 " 主时钟 " , 这是 ffplay 播放器 用于同步 音频流 和 视频流 的时钟 ;


执行

ffplay -sync audio fengjing.mp4

命令 , 将 音频流时钟 设置为 主时钟 ;

在这里插入图片描述


2、同步时钟类型参数选项列举


ffplay 命令 -sync 参数值 选项 :

  • audio : 将 音频流时钟 设置为 主时钟 , 该设置 是 默认设置 , ffplay 将 根据 音频流的播放速度 来 调整视频流 的播放速度 , 以确保 音频 和 视频 之间的同步 ;
  • video : 将 视频流时钟 设置为 主时钟 , ffplay 将 根据 视频流的播放速度 来调整 音频流的播放速度 ;
  • ext : 使用 外部时钟 ; 使用 外部设备 或 信号作为 主时钟 , 视频流的播放速度 和 音频流的播放速度 与 其他设备或信号 的 时钟 进行 同步 ;

执行

ffplay -sync video fengjing.mp4

命令 , 将 视频流时钟 设置为 主时钟 ;

在这里插入图片描述


执行

ffplay -sync ext fengjing.mp4

命令 , 将 外部电脑的时钟 设置为 主时钟 ;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前沿技术杂谈:多模态文档基础模型】使用多模态文档基础模型彻底改变文档 AI

【前沿技术杂谈:多模态文档基础模型】使用多模态文档基础模型彻底改变文档 AI 从文本到多模态模型:文档 AI 逐渐发展新技能。行业领先的型号Document AI 的下一步:开发通用和统一框架 您是否曾经被包含不同信息(如应付账款、日期、…

Web后端开发:事务与AOP

事务管理 在学习数据库时,讲到:事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求,要么同时成功,要么同时失败。 事务的操作主要有三…

C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法

目录 一、使用的方法 1.自定义插入方法 2.使用List.Add(T) 方法 二、实例 1.示例1:List.Add(T) 方法 2.示例:自定义插入方法 一、使用的方法 1.自定义插入方法 首先需要定义一个一维数组,然后修改数组的长度(这里使用Length属性获取…

网关中全局过滤器实现jwt校验

意味着有很多相同接口的实现类&#xff0c;那么必定会有优先级的问题。于是Spring就提供了Ordered这个接口&#xff0c;来处理相同接口实现类的优先级问题。 public class AuthorizeFilter implements Ordered, GlobalFilter {Overridepublic Mono<Void> filter(ServerW…

Linux应用程序几种参数传递方式

大家好&#xff0c;今天给大家介绍Linux应用程序几种参数传递方式&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在Linux中&#xff0c;应用程序可以通过多种方式接收参数。以下…

栈的基本操作

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

【Java面试】数据类型常见面试题

什么是包装类型 将基本类型包装进了对象中得到的类型 基本类型和包装类型有什么区别 用途不同&#xff1a;基本类型一般用于局部变量&#xff0c;包装类型用于其他地方存储方式不同&#xff1a;用于局部变量的基本类型存在虚拟机栈中的局部变量表中&#xff0c;用于成员变量…

物联网数据隐私保护技术

在物联网&#xff08;IoT&#xff09;的世界中&#xff0c;无数的设备通过互联网连接在一起&#xff0c;不断地收集、传输和处理数据。这些数据有助于提高生产效率、优化用户体验并创造新的服务模式。然而&#xff0c;随着数据量的剧增&#xff0c;数据隐私保护成为了一个不能忽…

力扣刷题之旅:进阶篇(三)

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 一、动态规划&#xff08;DP&#xff09; 首先&#xff0c;让我们来…

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(10)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述&#xff08;9&#xff09; 4.2 PCIe体系结构的组成部件 PCIe总线作为处理器系统的局部总线&#xff0c;其作用与PCI总线类似&#xff0c;主要目的是为了连接处理器系统中的外部设备&…

【机器学习】基于集成学习的 Amazon 用户评论质量预测

实验六: 基于集成学习的 Amazon 用户评论质量预测 1 案例简介 ​ 随着电商平台的兴起&#xff0c;以及疫情的持续影响&#xff0c;线上购物在我们的日常生活中扮演着越来越重要的角色。在进行线上商品挑选时&#xff0c;评论往往是我们十分关注的一个方面。然而目前电商网站的…

Golang的for循环变量和goroutine的陷阱,1.22版本的更新

先来看一段golang 1.22版本之前的for循环的代码 package mainimport "fmt"func main() {done : make(chan bool)values : []string{"chen", "hai", "feng"}for _, v : range values {fmt.Println("start")go func() {fmt.P…

【05】C++ 内存管理

文章目录 &#x1f308; Ⅰ C 内存分布&#x1f308; Ⅱ C 内存管理方式1. new 和 delete 操作内置类型2. new 和 delete 操作自定义类型 &#x1f308; Ⅲ operator new 和 operator delete&#x1f308; Ⅳ new 和 delete 的实现原理1. 内置数据类型2. 自定义数据类型 &#…

过渡效果的艺术:CSS transition 让网页交互更平滑(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

使用人工智能将扫描地图中的数据数字化

Bunting Labs 推出了新版本QGIS AI 地图追踪插件&#xff0c;这是一款由人工智能驱动的自动数字化扫描地图和平面图特征的工具。Egan 和联合创始人 Brendan Ashworth 开发了这个插件&#xff0c;以快速加快从扫描地图和平面图中提取地理特征的过程。 通常&#xff0c;从 PDF 中…

飞天使-linux操作的一些技巧与知识点9-zabbix6.0 容器之纸飞机告警设置

文章目录 zabbix 告警纸飞机方式webhook 方式 zabbix 告警纸飞机方式 第一种方式参考 https://blog.csdn.net/yetugeng/article/details/99682432bash-4.4$ cat telegram.sh #!/bin/bashMSG$1TOKEN"61231432278:AAsdfsdfsdfsdHUxBwPSINc2kfOGhVik" CHAT_ID-41dsdde…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(下篇)——Findings论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

Leetcode2786. 访问数组中的位置使分数最大

Every day a Leetcode 题目来源&#xff1a;2786. 访问数组中的位置使分数最大 解法1&#xff1a;动态规划 状态数组&#xff1a; dp[i][0]: 访问下标范围 [0, i] 中的元素且最后访问的元素是偶数时的最大得分&#xff1b;dp[i][1]: 访问下标范围 [0, i] 中的元素且最后访问…

html5+css3胶囊按钮代码

效果 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title></title> <style> /* 胶囊开关的样式 */ .switch { position: relative; display: inline-block; width: 6…

EasyExcel操作Excel表格

一、EasyExcel介绍 1.1 介绍 EasyExcel 是一个基于 Java 的简单易用的 Excel 文件读写工具&#xff0c;它提供了一种简单而又高效的方式来读取、写入和操作 Excel 文件。EasyExcel 是阿里巴巴开源的项目&#xff0c;它旨在简化开发人员处理 Excel 文件的流程&#xff0c;使得…