通过ffmpeg 将wav格式转为mp3格式.
通过ffmpeg实现将wav转为mp3格式.需要下载一个ffmpeg放到执行文件所在目录.
我ffmpeg的下载地址为:ffmpeg.exe下载-ffmpeg.exe32&64位下载免费版-旋风软件园
use ShellAPI;
{$R *.dfm}procedure ConvertWavToMp3(const InputFile, OutputFile: string);
varExecuteInfo: TShellExecuteInfo;FFmpegPath: string;
begin// 确定ffmpeg.exe的路径,这里假设它已经在PATH环境变量中,否则需要指定完整路径FFmpegPath := 'ffmpeg.exe';ZeroMemory(@ExecuteInfo, SizeOf(ExecuteInfo));ExecuteInfo.cbSize := SizeOf(ExecuteInfo);ExecuteInfo.lpVerb := 'open';ExecuteInfo.lpFile := PChar(FFmpegPath);ExecuteInfo.lpParameters := PChar(Format(' -i "%s" -vn -acodec libmp3lame -aq 2 "%s"', [InputFile, OutputFile]));ExecuteInfo.nShow := SW_HIDE; // 隐藏命令行窗口
// ExecuteInfo.hwnd := 0;// 执行转换命令if ShellExecuteEx(@ExecuteInfo) thenShowMessage('转换成功.')elseShowMessage('转换失败: ' + SysErrorMessage(GetLastError()));
end;
ffmpeg 是一个功能强大的多媒体处理工具,它支持大量的输入和输出格式,以及多种编解码器。由于其功能的多样性,ffmpeg 的参数列表也非常丰富。以下是一些常用的 ffmpeg 参数和选项的概述:
基本参数
-i input_file: 指定输入文件。-y: 如果输出文件已存在,则覆盖它。-n: 如果输出文件已存在,则不覆盖它。-c:v codec: 设置视频编解码器(例如-c:v libx264)。-c:a codec: 设置音频编解码器(例如-c:a aac)。-preset: 用于 x264 视频编码器,指定预设值以平衡编码速度和质量(如veryfast,fast,medium,slow,veryslow)。-crf: 用于 x264 视频编码器,指定恒定速率因子(CRF),范围通常为 0-51,其中较低的值表示更高的质量。-b:v bitrate: 设置视频比特率(例如-b:v 1M)。-b:a bitrate: 设置音频比特率(例如-b:a 128k)。-s size: 设置视频大小(例如-s 640x480)。-aspect aspect: 设置视频宽高比(例如-aspect 16:9)。-r fps: 设置帧率(例如-r 30)。-g gop_size: 设置 GOP(Group of Pictures)大小,对于 x264 编码器。-pix_fmt format: 设置像素格式(例如-pix_fmt yuv420p)。-threads n: 设置线程数(用于并行处理)。-f format: 强制设置输出格式(例如-f mp4)。
输入/输出选项
-ss [time_off]: 从输入文件中跳转到指定时间开始处理(例如-ss 00:00:10)。-t [duration]: 设置处理时长(例如-t 00:00:30)。-map: 选择输入文件的流进行映射到输出。-shortest: 对于有多个输入的命令,以最短的输入时长作为输出时长。-segment_time: 用于视频分割,指定每个片段的时长。-segment_list: 对于视频分割,创建一个包含片段名称的列表文件。
过滤器(Filters)
ffmpeg 支持大量的视频和音频过滤器,用于转换、修改或增强媒体内容。过滤器通常在 -vf(视频过滤器)或 -af(音频过滤器)选项后指定。
-vf filter_graph: 定义视频过滤器图(例如-vf "eq=brightness=0.1")。-af filter_graph: 定义音频过滤器图(例如-af "volume=0.5")。
其他常用选项
-metadata: 设置元数据(例如-metadata title="My Video")。-loglevel level: 设置日志级别(例如-loglevel verbose)。-stats: 显示处理过程中的统计信息。-progress url: 将进度信息发送到指定的 URL(通常是一个管道文件或 TCP 服务器)。-vsync method: 视频同步方法(例如-vsync vfr)。-async samples_per_second: 音频同步方法(设置音频样本率)。
这只是一个非常简化的 ffmpeg 参数列表概述。由于 ffmpeg 的功能非常丰富,还有许多其他参数和选项可供使用。为了获得最准确和最新的信息,建议查阅 ffmpeg 的官方文档或使用 ffmpeg -h 命令查看帮助信息。
相关文章:
通过ffmpeg 将wav格式转为mp3格式.
通过ffmpeg实现将wav转为mp3格式.需要下载一个ffmpeg放到执行文件所在目录. 我ffmpeg的下载地址为:ffmpeg.exe下载-ffmpeg.exe32&64位下载免费版-旋风软件园 use ShellAPI; {$R *.dfm}procedure ConvertWavToMp3(const InputFile, OutputFile: string); varExecu…...
快速上手RabbitMQ,直接上开发!
一 直接使用Rabbit MQ 在Java项目中使用Rabbit MQ可以通过引入Rabbit MQ的客户端Maven依赖,和Rabbit MQ建立连接进行通信。这种就属于是直接使用Rabbit MQ。 基本使用 创建连接后,使用channel向交换机发送消息 public class Producer {private final s…...
如何实现单例模式及不同实现方法分析-设计模式
这是 一道面试常考题:(经常会在面试中让手写一下) 什么是单例模式 【问什么是单例模式时,不要答非所问,给出单例模式有两种类型之类的回答,要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…...
wampserver安装与汉化
wampserver安装与汉化 文章目录 wampserver安装与汉化一、安装二、汉化1.升级软件并安装补丁 介绍: WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更…...
解决MyBatis的N+1问题
解决MyBatis的N1问题 N1问题通常出现在一对多关联查询中。当我们查询主表数据(如订单)并希望获取关联的从表数据(如订单的商品)时,如果每获取一条主表记录都要执行一次从表查询,就会产生N1次查询的问题。假…...
12-学生们参加各科测试的次数(高频 SQL 50 题基础版)
12-学生们参加各科测试的次数 -- 学生表中,id是唯一的,将他作为主表 -- CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…...
2024网络与信息安全管理员职工职业技能竞赛re0220164094
main部分,就是要逆这部分shellcode,程序把data段里面的东西复制到bss段去执行,期间包含解码操作。 v19 0;puts("Please input your flag: ");__isoc99_scanf("%s", s);if ( strlen(s) ! 38 ){puts("Wrong length!&…...
Elasticsearch--easy-ES框架使用,轻松操作查询Elasticsearch,简化开发
Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可…...
【教程】如何实现WordPress网站降级(用于解决插件和主题问题)
在最新可用版本上运行WordPress安装、插件和主题是使用该平台的关键最佳实践。还建议使用最新版本的PHP。但是,在某些情况下,这是不谨慎或不可能的。 如果您发现自己处于这种情况,您可能需要撤消更新并降级您的WordPress网站(或其中的一部分)。幸运的是,有一些方法可用于…...
思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹
你们谁写代码会用流程图来做计划,或者写项目总结报告? .net带进度条复制文件夹 方案 列出所有子文件夹,再创建,复制文件 大文件可以单独做进度条 缺点:设计会更复杂 直接…...
Linux文本处理三剑客之awk命令
官方文档:https://www.gnu.org/software/gawk/manual/gawk.html 什么是awk? Awk是一种文本处理工具,它的名字是由其三位创始人(Aho、Weinberger和Kernighan)的姓氏首字母组成的。Awk的设计初衷是用于处理结构化文本数…...
公差和配合
配合的选择: 配合特性以及基本偏差的应用: 常用优先配合特性及选用举例 为什么一般情况下选用基孔制而不用基轴制: 优先采用基孔制的原因主要包括工艺性、经济性和标准化: 工艺性。加工孔比加工轴更难,因为孔…...
AI大模型应用开发实践:5.快速入门 Assistants API
快速入门 Assistants API Assistants API 允许您在自己的应用程序中构建人工智能助手。一个助手有其指令,并可以利用模型、工具和知识来回应用户查询。 Assistants API 目前支持三种类型的工具: 代码解释器 Code Interpreter检索 Retrieval函数调用 Function calling使用 P…...
stack和queue的模拟实现
文章目录 如何实现?实现stack实现queue总结 如何实现? 首先我们看看官网上的stack,官网上的stack是用deque作为模版的缺省值去实现的,deque是什么? deque其实就是双端队列,双端队列,顾名思义&am…...
你的手机是如何控制你的手表之广播篇
前言 要让手机能够控制手表,第一步当然要让手机能够“看见”手表,人类作为上帝视角,我们是能够通过眼睛直接看见手机和手表的,但要让手机“看见”手表,就需要一端把自己的信息通过电磁波的形式发往空中,另…...
深入理解并发之LongAdder、DoubleAdder的实现原理
深入理解LongAdder、DoubleAdder的实现原理 本文主要通过LongAdder和DoubleAdder的源码,讲述一下其实现原理。通过LongAdder和DoubleAdder的源码可知。两者都是继承了Striped64的类。下面我们将通过源码的形式讲述一下这三个类都做了哪些事情。 1: Striped64 …...
virtuoso原理图无法编辑
(SCH-1217): Could not open "XX schematic" for edit. (because it is locked by user XX on XX) Would you like to open it for read? 解决方法: 到工程目录的schematic文件夹下找到sch.oa.cdslck.RHEL30.XXX-eda.21423和sch.oa.cdslck全部删掉即可正…...
Kotlin协程中的作用域 `GlobalScope`、`lifecycleScope` 和 `viewModelScope`
Kotlin协程中的作用域 Kotlin协程提供了多种作用域来管理协程的生命周期,其中最常见的是 GlobalScope、lifecycleScope 和 viewModelScope。 1. GlobalScope GlobalScope 是一个全局作用域,不受任何其他生命周期的限制。这意味着在 GlobalScope 中启动…...
leetcode739 每日温度
题目 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 输入: tempe…...
【软件测试】自动化测试如何管理测试数据
前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
